文本分类方法都有哪些

author author     2023-03-18     517

关键词:

参考技术A

文本分类问题: 给定文档p(可能含有标题t),将文档分类为n个类别中的一个或多个
文本分类应用: 常见的有垃圾邮件识别,情感分析
文本分类方向: 主要有二分类,多分类,多标签分类
文本分类方法: 传统机器学习方法(贝叶斯,svm等),深度学习方法(fastText,TextCNN等)
本文的思路: 本文主要介绍文本分类的处理过程,主要哪些方法。致力让读者明白在处理文本分类问题时应该从什么方向入手,重点关注什么问题,对于不同的场景应该采用什么方法。
文本分类的处理大致分为 文本预处理 、文本 特征提取 分类模型构建 等。和英文文本处理分类相比,中文文本的预处理是关键技术。

针对中文文本分类时,很关键的一个技术就是中文分词。特征粒度为词粒度远远好于字粒度,其大部分分类算法不考虑词序信息,基于字粒度的损失了过多的n-gram信息。下面简单总结一下中文分词技术:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法 [1]。

1,基于字符串匹配的分词方法:
过程:这是 一种基于词典的中文分词 ,核心是首先建立统一的词典表,当需要对一个句子进行分词时,首先将句子拆分成多个部分,将每一个部分与字典一一对应,如果该词语在词典中,分词成功,否则继续拆分匹配直到成功。
核心: 字典,切分规则和匹配顺序是核心。
分析:优点是速度快,时间复杂度可以保持在O(n),实现简单,效果尚可;但对歧义和未登录词处理效果不佳。

2, 基于理解的分词方法:基于理解的分词方法是通过让计算机模拟人对句子的理解 ,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统 还处在试验阶段

3,基于统计的分词方法:
过程:统计学认为分词是一个 概率最大化问题 ,即拆分句子,基于语料库,统计 相邻的字组成的词语出现的概率 ,相邻的词出现的次数多,就出现的概率大, 按照概率值进行分词 ,所以一个完整的语料库很重要。
主要的统计模型有: N元文法模型(N-gram),隐马尔可夫模型(Hidden Markov Model ,HMM),最大熵模型(ME),条件随机场模型(Conditional Random Fields,CRF)等。

1, 分词 : 中文任务分词必不可少,一般使用jieba分词,工业界的翘楚。
2, 去停用词:建立停用词字典 ,目前停用词字典有2000个左右,停用词主要包括一些副词、形容词及其一些连接词。通过维护一个停用词表,实际上是一个特征提取的过程,本质 上是特征选择的一部分。
3, 词性标注 : 在分词后判断词性(动词、名词、形容词、副词…),在使用jieba分词的时候设置参数就能获取。

文本分类的核心都是如何从文本中抽取出能够体现文本特点的关键特征,抓取特征到类别之间的映射。 所以特征工程很重要,可以由四部分组成:

1,基于词袋模型的特征表示:以词为单位(Unigram)构建的词袋可能就达到几万维,如果考虑二元词组(Bigram)、三元词组(Trigram)的话词袋大小可能会有几十万之多,因此基于词袋模型的特征表示通常是极其稀疏的。

(1)词袋特征的方法有三种:

(2)优缺点:

2,基于embedding的特征表示: 通过词向量计算文本的特征。(主要针对短文本)

4,基于任务本身抽取的特征:主要是针对具体任务而设计的,通过我们对数据的观察和感知,也许能够发现一些可能有用的特征。有时候,这些手工特征对最后的分类效果提升很大。举个例子,比如对于正负面评论分类任务,对于负面评论,包含负面词的数量就是一维很强的特征。

5,特征融合:对于特征维数较高、数据模式复杂的情况,建议用非线性模型(如比较流行的GDBT, XGBoost);对于特征维数较低、数据模式简单的情况,建议用简单的线性模型即可(如LR)。

6,主题特征:
LDA(文档的话题): 可以假设文档集有T个话题,一篇文档可能属于一个或多个话题,通过LDA模型可以计算出文档属于某个话题的概率,这样可以计算出一个DxT的矩阵。LDA特征在文档打标签等任务上表现很好。
LSI(文档的潜在语义): 通过分解文档-词频矩阵来计算文档的潜在语义,和LDA有一点相似,都是文档的潜在特征。

这部分不是重点,传统机器学习算法中能用来分类的模型都可以用,常见的有:NB模型,随机森林模型(RF),SVM分类模型,KNN分类模型,神经网络分类模型。
这里重点提一下贝叶斯模型,因为工业用这个模型用来识别垃圾邮件[2]。

1,fastText模型: fastText 是word2vec 作者 Mikolov 转战 Facebook 后16年7月刚发表的一篇论文: Bag of Tricks for Efficient Text Classification [3]。

模型结构:

改进:注意力(Attention)机制是自然语言处理领域一个常用的建模长时间记忆机制,能够很直观的给出每个词对结果的贡献,基本成了Seq2Seq模型的标配了。实际上文本分类从某种意义上也可以理解为一种特殊的Seq2Seq,所以考虑把Attention机制引入近来。

过程:
利用前向和后向RNN得到每个词的前向和后向上下文的表示:

词的表示变成词向量和前向后向上下文向量连接起来的形式:

模型显然并不是最重要的: 好的模型设计对拿到好结果的至关重要,也更是学术关注热点。但实际使用中,模型的工作量占的时间其实相对比较少。虽然再第二部分介绍了5种CNN/RNN及其变体的模型,实际中文本分类任务单纯用CNN已经足以取得很不错的结果了,我们的实验测试RCNN对准确率提升大约1%,并不是十分的显著。最佳实践是先用TextCNN模型把整体任务效果调试到最好,再尝试改进模型。

理解你的数据: 虽然应用深度学习有一个很大的优势是不再需要繁琐低效的人工特征工程,然而如果你只是把他当做一个黑盒,难免会经常怀疑人生。一定要理解你的数据,记住无论传统方法还是深度学习方法,数据 sense 始终非常重要。要重视 badcase 分析,明白你的数据是否适合,为什么对为什么错。

超参调节: 可以参考 深度学习网络调参技巧 - 知乎专栏

一定要用 dropout: 有两种情况可以不用:数据量特别小,或者你用了更好的正则方法,比如bn。实际中我们尝试了不同参数的dropout,最好的还是0.5,所以如果你的计算资源很有限,默认0.5是一个很好的选择。

未必一定要 softmax loss: 这取决与你的数据,如果你的任务是多个类别间非互斥,可以试试着训练多个二分类器,也就是把问题定义为multi lable 而非 multi class,我们调整后准确率还是增加了>1%。

类目不均衡问题: 基本是一个在很多场景都验证过的结论:如果你的loss被一部分类别dominate,对总体而言大多是负向的。建议可以尝试类似 booststrap 方法调整 loss 中样本权重方式解决。

避免训练震荡: 默认一定要增加随机采样因素尽可能使得数据分布iid,默认shuffle机制能使得训练结果更稳定。如果训练模型仍然很震荡,可以考虑调整学习率或 mini_batch_size。

知乎的文本多标签分类比赛,给出第一第二名的介绍网址:
NLP大赛冠军总结:300万知乎多标签文本分类任务(附深度学习源码)
2017知乎看山杯 从入门到第二

常见的场景分类算法都有哪些

...牛导读】:本文主要介绍一些常见的基于深度学习的场景分类【嵌牛鼻子】:深度学习,场景分类【嵌牛提问】:基于深度学习的常见分类算法有哪些?【嵌牛正文】:目前出现的相对流行的场景分类方法主要有以下三类:这种... 查看详情

文本分类(机器学习方法)

文本分类实现步骤:定义阶段:定义数据以及分类体系,具体分为哪些类别,需要哪些数据数据预处理:对文档做分词、去停用词等准备工作数据提取特征:对文档矩阵进行降维、提取训练集中最有用的特征模型训练阶段:选择... 查看详情

聚类分析方法都有哪些

...有哪几种聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法。聚类分析起源于分类学,在古老的分类学中,人们主要依靠经验和专业知识来实现分类,很少利用数学工具进行定量的分类。随着人类科学... 查看详情

数据挖掘的方法都有哪些?

...一起来了解下吧!数据挖掘的的方法主要有以下几点: 1.分类挖掘方法。分类挖掘方法主要利用决策树进行分类,是一种高效且在数据挖掘方法中占有重要地位的挖掘方法。为了对数据进行较为准确的测试并据此分类,我们采用... 查看详情

复制文本的方法都有哪些

参考技术A复制文本方法一:鼠标移动选中全部文字进行复制;方法二:Ctrl+A选中全部文字,Ctrl+C进行复制,Ctrl+V进行粘贴;方法三:选中要复制的内容,右键选择复制。1、鼠标移动选中全部文字进行复制选中要复制的文本,然... 查看详情

对服装照片进行分类都有哪些好的功能? [关闭]

】对服装照片进行分类都有哪些好的功能?[关闭]【英文标题】:Whataregoodfeaturesforclassifyingphotosofclothing?[closed]对服装照片进行分类有哪些好的功能?[关闭]【发布时间】:2013-09-2420:21:37【问题描述】:我想构建一个服装分类器,... 查看详情

数据挖掘的方法都有哪些?

...')参考技术A利用数据挖掘进行数据分析常用的方法主要有分类、回归分析、聚类、关联规则、特征、变化和偏差分析、Web页挖掘等,它们分别从不同的角度对数据进行挖掘。1、分类分类是找出数据库中一组数据对象的共同特点... 查看详情

opencv训练好的分类器都有哪些

参考技术Aopencv3训练好的分类器有基于haar特征的双眼,左眼,右眼,鼻子,嘴巴,人脸,人体上半身,笑脸级联分类器以及对应的cuda环境下的分类器;基于lbp特征的人脸级联分类器;基于hog特征的人体SVM分类器.以上分类器均... 查看详情

菜单的种类都有哪些?

菜单常用的分类方法有以下一些。1。根据餐饮形式和内容分类根据餐饮形式和内容对菜单分类,一般有以下几种。(1)早餐菜单。(2)午餐菜单。(3)晚餐菜单。(4)宴会菜单。(5)团体菜单。(6)冷餐会菜单。(7)自助菜单。(8)餐后甜品单... 查看详情

算法都有哪些分类

...密算法3.排序算法4.检索算法5.随机化算法参考技术A算法分类编辑算法可大致分为:基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机... 查看详情

使用 scikit-learn 进行多标签文本分类,使用哪些分类器?

】使用scikit-learn进行多标签文本分类,使用哪些分类器?【英文标题】:Multi-labeltextclassificationwithscikit-learn,whichclassifierstouse?【发布时间】:2018-07-2719:58:10【问题描述】:我已经使用导入这些分类器的scikit-learnPython库完成了文本... 查看详情

软件测试方法的分类都有哪些

...,检查实际输出结果和预期结果是否相符3)按软件特性分类功能测试性能测试参考技术A选择培训机构时就一定考虑到以下几点:1、课程选择,不要只是简单的学习功能测试,而是会涵盖有现在流行的自动化测试、GUI测试,接口... 查看详情

哪些 Python 贝叶斯文本分类模块类似于 dbacl?

】哪些Python贝叶斯文本分类模块类似于dbacl?【英文标题】:WhichPythonBayesiantextclassificationmodulesaresimilartodbacl?【发布时间】:2010-10-1700:16:31【问题描述】:快速的Google搜索显示,有大量的贝叶斯分类器以Python模块的形式实现。如... 查看详情

ip地址的分类都有哪些?各如何表示?每个分类的特点

参考技术AIp地址的分类有哪些?各如何表示?每个分类的特点简单点说,一个IP地址是32位2进制序列,分2部分一个是NeorkID,就是网络标识,和HostID就是主机标识.最开始的IP,叫做"classfuladdressing"就是分类的地址,你可以从地址本身看出neo... 查看详情

机器学习的研究内容都有哪些

...框架,多用于图像或序列生成,例如比较热的机器翻译、文本摘要、图像描述(imagecaptioning)问题。▌强化学习2016年3月,DeepMInd设计的基于深度卷积神经网络和强化学习的AlphaGo以4:1击败顶尖职业棋手李世乭,成为第一个 查看详情

java流的分类都有哪些?

...件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点.2.数据流方向不同,可分为:输入流,输出流3.功能不同,可分为:节点流,处理流;节点流:节点流从一个特定的数据源读写数据。处理流:“... 查看详情

block都有哪些类型

参考技术Ablock的类型block如何分类?其实blcok的分类主要是根据block的内存管理来说的,系统把Block分为3类:NSGlobalBlock,NSStackBlock,NSMallocBlock;NSGlobalBlock:位于内存全局区NSMallocBlock:位于内存堆区NSStackBlock:位于内存栈区内存五大... 查看详情

linux下的文本编辑器都有哪些?

Linux下的文本编辑器有哪些?参考技术A目前个人觉得最好用的就是PNEdit(PNEdit_v2021.09版本),建议你就使用这个吧,完全免费,而且功能很强大,跟vim是差不多,都是在vi的基础上升级的。Emacs听说也是不错,但是入门太难了,没... 查看详情