文本分类——常用经典技术解析(jieba,word2vec,样本不平衡问题)「建议收藏」

文本分类——常用经典技术解析(jieba,word2vec,样本不平衡问题)「建议收藏」一个文本分类任务的典型操作流程如下:即拿到数据后先分词,然后转化为词向量(数值化过程),最后对数值化后的数据进行分类。一、jieba分词原理jieba自带了一个叫做dict.txt的词典,里面有2万多条词,包含了词条出现的次数(这个次数是于作者自己基于人民日报语料等资源训练得出来的)和词性.这个第一条的trie树结构的词图扫描,说的就是把这2万多条词语,放到一个trie树(词典树…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

【课程安利】人工智能课程请往下戳

如果想了解和系统学习更多人工智能、机器学习理论和项目实践,CSDN学院中有一系列精品AI课,分为大课和小课,包含数学基础、Python基础、算法和企业级项目 等,适合并不同类型的人群,值得拥有!
CSDN学院⼤课链接:
https://edu.csdn.net/topic/ai30?utm_source=lqy
在这里插入图片描述
CSDN学院⼩课链接:
https://edu.csdn.net/course/detail/6601?utm_source=lqy
在这里插入图片描述


正文如下

一个文本分类任务的典型操作流程如下:
在这里插入图片描述
即拿到数据后先分词,然后转化为词向量(数值化过程),最后对数值化后的数据进行分类。

一、jieba分词原理

jieba自带了一个叫做dict.txt的词典, 里面有2万多条词, 包含了词条出现的次数(这个次数是于作者自己基于人民日报语料等资源训练得出来的)和词性. 这个第一条的trie树结构的词图扫描, 说的就是把这2万多条词语, 放到一个trie树(词典树)中, 而trie树是有名的前缀树, 也就是说一个词语的前面几个字一样, 就表示他们具有相同的前缀, 就可以使用trie树来存储, 具有查找速度快的优势。

用到的算法:

1.1 基于Trie树(字典树)结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)。
1.2 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
1.3 对于未登录词,采用了基于汉字成词能力的HMM(隐马尔可夫模型)模型,使用了Viterbi算法(维特比算法是一种动态规划算法)

分词过程:

生成切分词图:根据trie树对句子进行全切分,并且生成一个邻接链表表示的词图(DAG)。
计算最佳切分路径:在这个词图的基础上,运用动态规划算法生成切分最佳路径。
使用了HMM模型(隐马尔可夫模型)对未登录词进行识别:如进行中国人名、外国人名、地名、机构名等未登录名词的识别。
重新计算最佳切分路径。

参考:
https://www.cnblogs.com/echo-cheng/p/7967221.html

继续深入学习:
字典树继续深入学习:https://www.cnblogs.com/TheRoadToTheGold/p/6290732.html
隐马尔科夫模型继续深入学习:https://www.cnblogs.com/skyme/p/4651331.html
维特比算法继续深入学习:https://blog.csdn.net/gzmfxy/article/details/78712878

二、word2vec生成词向量

word2vec是Google在2013年开源的一款将词表示为实数值向量的高效工具,是将单词嵌入到向量空间的一种词嵌入方法(word embedding)。word2vec采用的模型包含了连续词袋模型(CBOW)和Skip-Gram模型。通过它可以在大数据量上进行高效训练从而得到词向量。

将词数值化的方法包括

  1. n-gram语言模型:一种统计语言模型,计算每个单词的概率,然后再进而计算一句话的整体概率。缺陷:当n大于3时,即考虑多于前三个单词的情况下,会因参数太多而无法计算。

  2. one-hot形式的词向量
    采用稀疏向量表示,某个单词出现则该位置为1,其余为0。此方法没有充分利用向量空间。

  3. 分布式编码:该编码将词语映射为固定长度的向量, 即N维向量空间中的一点。
    理想状况下,两个对象越相似,它们词向量的相似度也越高,空间中两点的距离越近。

word2vec采用了CBOW和Skip-Gram两种模型

内部结构

CBOW连续词袋模型(Continuous Bag-of-Word Model, CBOW)是一个三层神经网络, 输入已知上下文输出对下个单词的预测.CBOW模型的第一层是输入层, 输入已知上下文的词向量. 中间一层称为线性隐含层, 它将所有输入的词向量累加.第三层是一棵哈夫曼树, 树的的叶节点与语料库中的单词一一对应。

Skip-gram模型同样是一个三层神经网络. skip-gram模型的结构与CBOW模型正好相反,skip-gram模型输入某个单词输出对它上下文词向量的预测。Skip-gram的核心同样是一个哈夫曼树, 每一个单词从树根开始到达叶节点可以预测出它上下文中的一个单词

对比

cbow方法中,是用周围词预测中心词,从而利用中心词的预测结果情况,不断的去调整周围词的向量。cbow预测行为的次数跟整个文本的词数几乎是相等的,**复杂度大概是O(V);**适用于数据量比较多的情况。

skip-gram是用中心词来预测周围的词。在skip-gram中,会利用周围的词的预测结果情况,使用GradientDecent来不断的调整中心词的词向量,最终所有的文本遍历完毕之后,也就得到了文本所有词的词向量。这样相当于比cbow的方法多进行了K次(假设K为窗口大小),因此时间的复杂度为O(KV)。当数据量较少,或者词为生僻词出现次数较少时, 这种多次的调整会使得词向量相对的更加准确。

继续学习:
word2vec模型cbow与skip-gram的比较:https://www.cnblogs.com/june0507/p/9412989.html

分类——样本不均衡问题

应对样本不均衡问题的常用策略如下:

  1. 去除样本多的:欠采样方法

  2. 增加样本少的:过采样方法
    代表性算法——SMOTE,即合成少数类的过采样技术。基本思想是在少数类中选两个样本,在其连线上随机选择一个点作为新和成的少数类样本

  3. 代价敏感学习
    利用代价矩阵,若出现“第一类错误”和“第二类错误”,损失程度会更大。

  4. 集成学习方法
    如Adaboost算法,每一轮迭代学习到一个分类器,并根据当前分类器的表现更新样本的权重,更新策略为正确分类样本权重降低,错误分类样本权重增大,最终的模型是多次迭代模型的一个加权线性组合。
    AdaCost算法修改了Adaboost算法的权重更新策略,使得分类代价高的样本权重增加得大,降低的慢。

不平衡学习不能单纯的用准确率来描述模型的性能,通常使用F1值来描述模型性能。

更多模型性能度量: https://blog.csdn.net/qq_33414271/article/details/78198840


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187541.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • wget 安装yum_没有yum命令

    wget 安装yum_没有yum命令wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP下载,并可以使用HTTP代理。”wget”这个名称来源于“WorldWideWeb”与“get”的结合。在线安装wget使用命令yum-yinstallwget

    2022年10月17日
    3
  • 渗透测试网站_zz二测

    渗透测试网站_zz二测分享一个ZPL指令在线测试网址http://labelary.com/viewer.html

    2025年6月30日
    3
  • 各咨询网站

    各咨询网站

    2022年3月1日
    46
  • leetcode, LC5: insertion-sort-list[通俗易懂]

    leetcode, LC5: insertion-sort-list[通俗易懂]题目描述使用插入排序对链表进行排序。Sortalinkedlistusinginsertionsort.示例1输入{3,2,4}输出{2,3,4}解题思路new一个新的ListNode作为选择排序好的链表的表头对于原始链表中的每一个结点2.1.寻找新链表中该结点的插入位置2.2插入该结点返回新链表代码实现/***structListNode{* intval;* structListNode*next;

    2022年7月24日
    7
  • 怎么修改HTML网页的名字_如何修改html文件内容

    怎么修改HTML网页的名字_如何修改html文件内容NetCms默认设置中,只能上传Doc文件,不能上传xls文件和PPT文件。 上传文件类型可以“控制面板–>参数设置–>上传文件允许格式”中设置。但是,仅能上传,添加新闻时,添加附件的文件选择框中无法看到xls文件和ppt文件。 通过查看源文件,添加新闻页面是~/Manage/News/News_add.aspx文件,在该文件中,添加附件位置,通过调用JavaScript的s

    2022年9月29日
    2
  • C语言中从键盘输入字符串时的一些问题[通俗易懂]

    C语言中从键盘输入字符串时的一些问题[通俗易懂]C语言中从键盘输入字符串时的一些问题1.scanf()scanf()在输入字符串时有很大的弊端,例如:1).scanf()在从键盘读入字符时并不会根据所定义的字符数组的大小来控制读入多少个,而是从scanf()中传入的地址开始一直访问下一个元素的内存,碰见空格符或者回车符时才停止读入并存入结束符’\0’,这就有可能造成了一个在C中非常严重的问题,访问非法内存.如果…

    2025年6月1日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号