若米知识 > 百科 > 文本分类方法——文本分类方法有几种

文本分类方法——文本分类方法有几种

导读白话自然语言处理(2)——文本分类优质回答话说两年前我一脸蒙圈地开始了自己文本挖掘的职业生涯,领导给我的第一个任务就是文本分类任务。小伙伴手把手教我怎么来做一个三分...

今天若米知识就给我们广大朋友来聊聊文本分类方法,以下关于观点希望能帮助到您找到想要的答案。

白话自然语言处理(2)——文本分类

优质回答话说两年前我一脸蒙圈地开始了自己文本挖掘的职业生涯,领导给我的第一个任务就是文本分类任务。小伙伴手把手教我怎么来做一个三分类任务,上手还挺快,正能量爆炸,原来这就自然语言处理,也没有那么复杂吗?无知者无畏。

自然语言处理博大精深,越到细节处越是难,一不小心就从入门到放弃了。一个好的新手任务是入门到深入的前提,而文本分类任务就是一个很不错的选择,保准给你打满鸡血,至于能不能坚持到最后?就暂时不是我们关心的问题。万事开头难,好的开头有好结尾的概率会高一点。不啰嗦,回归正题开始胡说八道。

分类大家都知道吧?我且大胆地尝试下个定义,把事物按某特性划分为几种类别。

生活处处是分类,前段时间上海风风火火地垃圾分类,就算一种!按照垃圾的材质/是否可回收分类。垃圾分类出来没多久,有聪明的小伙伴就说我们是不是可以搞一个垃圾分类的模型,商机无限,我感叹小伙伴这头脑该去做ceo啊,也没有太在意。不过没多久市面上就有各种垃圾分类应用涌现,感觉错过一个亿的商机。

上学的时候,对分类的认识是不够的,觉得搞这么多分类干啥,有啥用啊。那时候文小刚组里的文章喜欢各种分类,奈何智商有限,每次都云里雾里,的世界我不懂。后来做了文本分类任务,才渐渐去想想为什么要分类?我想最简单的,分类意味着对事物认知,可以定位到更细的类别,可以进行筛选;分得越细,说明我们研究的越清楚,最终 …(原谅我浅薄的认知,故事编不下去了)

知道了分类也理解了分类的重要,再谈文本分类就简单了。所谓文本分类,说句废话,就是对文本按照某种特性进行分类。比如情感分类,按照文本的情感极性进行分类;还有最近在聊天机器人中使用到的,情绪分类,把文本分为开心、愤怒、失望…balabala;垃圾文本分类,识别文本是否为垃圾… 还有一些有意思的分类任务,比如去检测一句话的性别偏向,文本是否口语化的 … 都是我脑补的,大家也可以想想有哪些有意思的文本分类任务

从应用的层面来说,做文本分类,你首先要知道你的目标是什么,要构建一个什么样的分类模型?最好是梳理一套明确的分类标准,这样我们就可以去获取数据。或用规则或用人肉,都是可行的。有了数据集合,就可以尝试各种分类模型,可繁可简,可骚可闷… (当然你最终会认识到,模型并不是越复杂越好,简简单单或许才是最好的!)

此处假设我们已经明确了要做的分类任务,也有了一部分数据集。那么我们就可以说道说道文本分类的方法了,从简单到高大上的都可以吹一吹(反正吹牛逼又不用上税,说错了最多被打脸!我脸厚不怕)。

大家玩垃圾邮件识别任务的时候,可能会学到朴素贝叶斯吧,简单来说通过判断每个词在垃圾邮件中出现的概率,最终判断出整个文本是否为垃圾邮件。这时候大家会被反复灌输贝叶斯公式,一听名字觉得高大上,很多同学可能被吓退,但是当你真的写出来并理解之,简单优美大方!(数学果然是不是我这种屌丝气质的人可以搞的。)

不过朴素贝叶斯方法也太简单了,要满足条件独立假设,表现往往一般。这时我们可其他常规武器了,比如决策树,决策树的算法逻辑非常有意思,符合人们做决断的逻辑!通过逐一判断特征是否满足某些条件,来对文本进行分类。

如果你觉得一棵树妥妥不足决断,就可集成方法。所谓集成方法,就是单兵作战不行,那我们就群殴啊,总有一种办法来干死你。集成方法可以分为两类,一类是bagging方法,就是分别用几颗树单独来做决策,然后把它们的结果组合起来,随机森林就是其中一种;另一类是boosting方法,大概是一棵树决策有误差,那我再用一颗树来学习误差,如果不行我再来…有没有想到某公子子孙孙无穷尽也,当然我们作为凡人…

其他常规算法还有SVM(校招面试算法工程师感觉不会SVM都不好意思说自己懂机器学习),逻辑回归, 感知机 …

常规武器说完,那开始高级武器吧——蛇精网络。不过先慢慢铺垫一下,从我开始准备找工作的时候,深度学习就已经复苏,开始大红大紫,到处都是蛇精网络,深度学习 当年nature还是science出了几篇使用蛇精网络做强联量的,感觉整个物理圈子都躁动了,不过们还是比较理性的指出蛇精网络没发总结出基本的物理定律。我们不是,只兴奋滴看到这次饭碗终于有着落了。

个人觉得文本分类最好用的蛇精网络算法是fasttetxt,模型简单效率,准确率也不错,是众屌丝的理想选择。模型可以快速训练和上线应用,分分钟报告领导任务已经完成,请做下一步指示。不过fasttext虽然好,有一个问题啊,你不好吹牛逼啊,到年终汇报,你和各位说我用fasttext完成某某任务,你很大概率和升职加薪绝缘(开个玩笑)。

我们不仅要fasttext来兜底,我们还需要TextCNN(卷积来学习局部的n-gram特征)、RNN(文本就是序列)、迁移学习(虽然任务不一样,但是有共性,所以可以迁移。一般一个神经网络越浅层的网络越通用。预训练什么的也可以认为是在迁移,最近大红大紫的BERT、GPT.)、主动学习(少样本的时候是一个不错的选择,当年我吹过牛逼,主动学习可以帮助我们自动标注出一些没有标注但是置信度高的数据,这一批数据会包含更多的数据,可以逐渐扩展模型的能力).

算法说多了容易飘,我们回到实际应用,那么有哪些文本的任务呢?其实前面已经说过了,再重复一下

当年一不小心入了文本分类的坑,刚开始沾沾自喜,觉得还挺好玩,后来分类任务越来越复杂,有点招架不住了。做人要低调 .

分类任务几个要注意的问题,你的数据不足的时候该怎么办?有几个选择使用简单模型、迁移学习,主动学习,文本数据增强(不过文本的增强没有图片效果好;有通过多语种翻译来获得文本增强的,挺好玩)。模型怎么选择?我们前面介绍了很多方法,最终使用什么模型呢?其实最终综合效果+资源,效果好可能耗资源,我们在实际应用的时候,对误差是有忍耐程度的,不一定要十全十美,千万不要强迫症。有聪明的小伙伴,理解数据能帮助我们更好地选择模型。其他问题还有但不限于类别数据分布不均、炼丹调参指南 .

文本分类唠叨到此,希望大家不要被误导。

文本转数据的方法有哪些?

优质回答有几种方法可以将文本转换为数据。最流行的方法之一是文本矢量化,即将文本转换为数字表示的过程。有几种方法可以实现文本矢量化,如二进制、词频、词袋(BoW)、词频(L1)、归一化词频(L2)、归一化TF-IDF和Word2Vec12。

另一种方法是命名实体识别(NER),这是一种信息提取的子任务,旨在定位文本中的命名实体,并将其分类为预定义的类别,如人名、组织、地点、医疗代码、时间表达式、数量、货币值、百分比等

文本分类是另一种专注于将非结构化文本体分类到预定义类中的方法。

情绪分析是另一种方法,涉及确定文本中表达的情绪或观点。

最后,您还可以使用GPT-3将非结构化数据转换为表格数据。

利用神经网络进行文本分类算法综述(持续更新中)

优质回答传统的文本分类一般都是使用词袋模型/Tf-idf作为特征+机器学习分类器来进行分类的。随着深度学习的发展,越来越多的神经网络模型被用来进行文本分类。本文将对这些神经网络模型做一个简单的介绍。

本文介绍了一种词向量模型,虽然算不得文本分类模型,但由于其可以说是fasttext的基础。因此也简单提一下。

作者认为cbow和skipgram及大部分词向量模型都没有考虑到单词的多态性,而简单的将一个单词的多种形态视为独立的单词。例如like的不同形式有likes,liking,liked,likes,这些单词的意思其实是相同的,但cbow/skipgram模型却认为这些单词是各自独立的,没有考虑到其形态多样性。

因此作者提出了一个可以有效利用单词字符级别信息的n-gram词向量模型,该模型是以skipgram模式实现的。例如单词 where,其n-gram表示为<wh, whe, her, ere, re>, where。其中<>分别表示前后缀。在原始的skipgram模型中,输入仅仅只是where的onehot向量,而在此模型中输入则变成了<wh, whe, her, ere, re>, where的onehot编码的加和,有效的利用了字符级别的信息,因此效果更加好。

而在loss方面,文中采用了负采样+binary LogisticRegression的策略。即对每一个目标单词都预测为正负中的一种。

在本文中作者提供了一个基于神经网络的文本分类模型,这个模型是基于cbow的,与cbow非常类似。

和CBOW一样,fastText模型也只有三层:输入层、隐含层、输出层(Hierarchical Softmax),输入都是多个经向量表示的单词,输出都是一个特定的target,隐含层都是对多个词向量的叠加平均。不同的是,CBOW的输入是目标单词的上下文,fastText的输入是多个单词及其n-gram特征的embeding表示方式,这些特征用来表示单个文档;CBOW的输入单词被onehot编码过,fastText的输入特征是被embedding过;CBOW的输出是目标词汇,fastText的输出是文档对应的类标。输出层的实现同样使用了层次softmax,当然如果自己实现的话,对于类别数不是很多的任务,个人认为是可以直接使用softmax的。

最后,贴一个Keras的模型fasttext简化版。

基于词向量表示,本文提出利用卷积神经网络来进行文本分类。其算法如上图所示:

在本文中,作者尝试了多种不同的词向量模式:

在上一篇文章中CNN网络的输入一般是预训练好的词向量,而在本文中作者提出一种直接将embedding训练与分类任务结合在一起,且能有效提取/保留词序信息,也即有效训练出n-gram的模型方法,其实也可以理解为一种利用CNN来进行embedding的方法。

此外,另一个问题是输入序列长度变化问题(在上一篇文章textCNN中通过padding解决的?),在本文作者提出使用一个动态可变的pooling层来解决这个问题,使得卷积层输出的大小是相同的。关于可变pooling其实与图像识别中的 空间金字塔池化 (Spatial Pyramid Pooling) 是类似的。

这篇文章有点将fastText与TextCNN结合在一起的感觉,将n-gram embedding与分类任务结合在了一起进行训练,通过CNN来进行Embedding。

Text Categorization via Region Embedding》

在本篇文章中作者提出了一个tv-embedding(即two-view embedding),它也属于region embedding(也可以理解为ngram embedding)。这种方法与上面的bow-CNN表示相似,使用bow(bag of words)的方式来表示一个区域的词句,然后通过某个区域(region,左右邻域的单词或词句)来预测其前后的区域(单词或词句),即输入区域是view1,target区域是view2。tv-embedding是单独训练的,在使用的时候与CNN中的embedding组合在一起(形成多个channel?)。作者认为,word2vec方法预训练得到的embedding向量是普适性的,而通过特定任务的数据集的训练得到tv-embedding具有任务相关的一些信息,更有利于提升我们的模型效果。

吐槽一下,这篇文章没太看懂,也可能是英语太差,作者文章中没有那种一眼就能让人理解的网络图,像textCNN的图就非常一目了然,看图就知道是怎么做的了。

本文提出了一个使用监督学习加半监督预训练的基于LSTM的文本分类模型。文章作者与上面相同,所以用到的很多技术可以说与上面也是同出一辙。因此简单说下本文的一些思路。

作者认为已有的直接使用LSTM作为文本分类模型并直接将LSTM的最后一个输出作为后续全连接分类器的方法面临两个问题:(1)这种方式一般都是与word embedding整合在一起(即输入onehot经过一个embedding层再进入LSTM),但是embedding训练不稳定,不好训练;(2)直接使用LSTM最后一个输出来表示整个文档不准确,一般来说LSTM输入中后面的单词会在最后输出中占有较重的权重,但是这对于文章表示来说并不总是对的。因此作者对这两点进行了改进:

本文其实可以看作是作者将自己前面的tv-embedding半监督训练与RCNN的一个融合吧,大有一种一顿操作猛如虎,一看人头0-5的感觉(因为作者的实验结果跟一般的CNN相比其实也抢不了多少)。

本文的作者也是前面两篇使用CNN来进行文本分类处理的文章的作者。因此在本文中,结合了前面两篇文章提出的一些方法,并使用了一个深层的卷积神经网络。具体的细节包括:

更多详细的关于DPCNN的细节可以查看 从DPCNN出发,撩一下深层word-level文本分类模型 。

本文提出了一种基于CNN+Attention的文本分类模型。作者认为已有的基于CNN的文本分类模型大都使用的是固定大小的卷积核,因此其学习到的表示也是固定的n-gram表示,这个n与CNN filter大小相关。但是在进行句子的语义表示时,不同句子发挥重要作用的ngram词语常常是不同的,也即是变化的。因此,模型能根据句子来自适应的选择每个句子最佳的n-gram对于提升模型的语义表示能力是非常关键的。本文便是由此思路提出了一种自适应的来选择不同n-gram表示的模型。

本文模型在主题结构上参照了CV中的DenseNet,借由DenseNet中的稠密连接来提取到丰富的n-gram特征表示。举例来说,在layer3的特征不仅能学习到f(x1, x2, x3),还能学习到f(x1(x2,x3))这种更多层次,更加丰富的特征。网络的结构主要包括三部分:DenseCNN主网络,Attention module和最后的全连接层分类网络。下面对这三部分进行简单的说明:

本文通过Dense connection + Attention来自动获取对于文本语义最重要的n-gram特征,结果很好。但是缺点是,这个网络比较适合较短的文本,文中对输入文本进行了padding补齐,对于不同数据集最大长度分别为50,100等,但这对于较长的文本明显是不足的。因此对于较长的文本或许HAN这种借用RNN来不限制输入长短的网络会更好。

本文提出了一种结合循环神经网络(RNN)和卷积神经网络来进行文本分类的方法,其结构如上图所示,该网络可以分为三部分:

虽然说是RNN与CNN的结合,但是其实只用到了CNN中的pooling,多少有一点噱头的意思。文中还提到了RCNN为什么比CNN效果好的原因,即为什么RCNN能比CNN更好的捕捉到上下文信息:CNN使用了固定大小window(也即kernel size)来提取上下文信息,其实就是一个n-gram。因此CNN的表现很大程度上受window大小的影响,太小了会丢失一些长距离信息,太大了又会导致稀疏性问题,而且会增加计算量。

在众多自然语言处理任务中,一个非常突出的问题就是训练数据不足,且标注难度大。因此文本提出了一种多任务共享的RNN模型框架,其使用多个不同任务数据集来训练同一个模型共享参数,已达到扩充数据集的作用。

文中作者提出了三个模型,如上图所示:

三个模型的训练方式相同:

本文提出了一个层次LSTM+Attention模型。作者认为,虽然一篇文章有多个句子组成但真正其关键作用的可能是其中的某几个,因此对各个句子施加了注意力机制,以使得对文章语义贡献较多的句子占有更多的权重。同样的,组成一个句子的单词有多个,但是发挥重要作用的可能就那么几个,因此使用注意力机制以使得重要单词发挥更大的作用,这些便是本文的核心思想。整个网络可分为三层,两个LSTM层分别用来进行word encode和sentence encode,最顶上为一个全连接分类层。若加上两层注意力层,则可认为网络为5层。下面简单聊聊这五层网络的结构:

总体来说,本文看起来还是比较有意思的,符合人阅读文章的习惯,我们写文章的时候也是有中心词和中心句的。但是由于这个层级结构是否会导致训练慢或者不好训练还不得而知。最后,文中还提出对文章按长短先进行排序,长度相似的进入一个batch,这将训练加快了3倍。

本文提出了一个基于图神经网络的文本分类方法。该方法的主要思想是将所有文章及其包含的词汇都放到一个图网络里面去,图网络中的节点分为两种类型:单词节点和文章节点。其中连接单词节点和文章节点的边的权重使用TF-IDF来表示,而单词与单词之间边的权重则是使用点互信息(PMI)来表示。点互信息与传统语言模型中的条件概率计算方式非常相似。只不过PMI采用的是滑窗方式而条件概率是直接在所有语料中进行统计,可以认为是将所有语料当做一个大窗口,这时就又与PMI相同了。

A表示图网络的邻接矩阵,表示如下:

GCN同样也是可以含有多层隐藏层的,其各个层的计算方式如下:

其中A'为归一化对称邻接矩阵, W0 ∈ R^(m×k) 为权重矩阵,ρ是激活函数,例如 ReLU ρ(x) = max(0,x) 如前所述,可以通过叠加多个GCN层来合并更高阶的邻域信息:

其中j表示层数。

损失函数定义为所有已标记文档的交叉熵误差:

文中提到Text GCN运行良好的原因有两个方面:

但是其也有一些缺:

总的来说,文章的idea还是挺有意思的,效果也还不错。初识GCN可能还是有一点难以理解,可以参考如下资料进行进一步学习:

基于图卷积网络的文本分类算法

如何理解 Graph Convolutional Network(GCN)?

文本分析的三种方法

优质回答文本分析的三种方法是:词频统计、情感分析和主题建模。

1、词频统计的解析

词频统计是文本分析中最基本的方法之一。它通过计算每个单词在文本中出现的频率来揭示文本的特征和重要信息。通过统计每个单词的出现次数,可以了解到在文本中哪些单词使用频率较高,从而推测出文本的主题或关键内容。

2、情感分析的解析

情感分析是一种通过自然语言处理技术来识别和提取文本中所包含情感的方法。它能够分析文本中的情绪态度,如积极、消极或中性。情感分析可以帮助我们理解文本作者的情感倾向、用户反馈的态度以及市场舆情的走向。

3、主题建模的解析

主题建模是一种通过对大规模文本数据进行分析和挖掘,自动发现隐藏在文本中的主题和话题的方法。它能够将文本集合中的每个文档归类到一个或多个主题中,并提取每个主题的关键词。主题建模常用的算法有潜在狄利克雷分配(LDA)和隐含狄利克雷分布(LDA)。

文本分析的方法及其应用

1、文本分类的应用

文本分类是一种将文本按照预先定义的类别或标签进行自动分类的方法。它可以应用于垃圾邮件过滤、新闻分类、情感分析等领域。通过文本分类,我们可以快速准确地从大量文本数据中提取出所需信息,为用户提供个性化的推荐和服务。

2、文本聚类的应用

文本聚类是一种将相似的文本聚集在一起的方法。它能够根据文本的内容和特征将文本进行自动分组,从而揭示出文本数据中的潜在模式和结构。文本聚类可以应用于新闻聚合、用户画像分析等领域,为用户提供更加精准的信息推送和个性化的服务。

3、关系抽取的应用

关系抽取是一种从文本中提取实体之间关系的方法。它能够自动识别并提取出文本中的实体和它们之间的关系,如产品与价格之间的关系、人物之间的关系等。关系抽取可以应用于知识图谱构建、问答系统等领域,为用户提供更加精确的信息查询和知识获取渠道。

NLP之文本分类

优质回答作为NLP领域最经典的使用场景之一,文本分类积累了许多的实现方法。这里我们根据是否使用深度学习方法将文本分类主要分为一下两个大类:

随着统计学习方法的发展,特别是在90年代后互联网在线文本数量增长和机器学习学科的兴起,逐渐形成了一套解决大规模文本分类问题的经典玩法,这个阶段的主要套路是人工特征工程+浅层分类模型。整个文本分类问题就拆分成了 特征工程 分类器 两部分。

这里的特征工程也就是将文本表示为计算机可以识别的、能够代表该文档特征的特征矩阵的过程。在基于传统机器学习的文本分类中,我们通常将特征工程分为 文本预处理、特征提取、文本表示 等三个部分。

文本预处理过程是提取文本中的关键词来表示文本的过程 。中文文本预处理主要包括 文本分词 去停用词 两个阶段。

文本分词 ,是因为很多研究表明特征粒度为词粒度远好于字粒度(其实很好理解,因为大部分分类算法不考虑词序信息,基于字粒度显然损失了过多“n-gram”信息)。具体到中文分词,不同于英文有天然的空格间隔,需要设计复杂的分词算法。传统分词算法主要有 基于字符串匹配的正向/逆向/双向最大匹配 基于理解的句法和语义分析消歧 基于统计的互信息/CRF方法 。近年来随着深度学习的应用, WordEmbedding + Bi-LSTM+CRF方法 逐渐成为主流,本文重点在文本分类,就不展开了。

停止词 文本中一些高频的代词、连词、介词等对文本分类无意义的词 ,通常维护一个停用词表,特征提取过程中删除停用表中出现的词,本质上属于特征选择的一部分。

特征提取包括 特征选择 特征权重计算 两部分。

特征选择的基本思路 根据某个评价指标独立的对原始特征项(词项)进行评分排序,从中选择得分最高的一些特征项,过滤掉其余的特征项 。常用的评价有:文档频率、互信息、信息增益、χ²统计量等。

特征权重计算 主要是经典的TF-IDF方法及其扩展方法。 TF-IDF的主要思想 一个词的重要度与在类别内的词频成正比,与所有类别出现的次数成反比

文本表示的目的是把文本预处理后的转换成计算机可理解的方式,是决定文本分类质量最重要的部分。传统做法常用 词袋模型 (BOW, Bag Of Words)或 向量空间模型 (Vector Space Model),最大的 不足 是忽略文本上下文关系,每个词之间彼此独立,并且无法表征语义信息。

大部分机器学习方法都在文本分类领域有所应用,比如朴素贝叶斯分类算法(Naïve Bayes)、KNN、SVM、最大熵和神经网络等等。

FastText 是Facebook AI Research在16年开源的一种文本分类器。 其 特点 就是 fast 。相对于其它文本分类模型,如 SVM Logistic Regression 等模型,fastText能够在保持分类效果的同时,大大缩短了训练时间。

FastText方法包含三部分, 模型架构 层次SoftMax N-gram特征

FastText模型架构和 Word2Vec 中的 CBOW 模型很类似,因为它们的作者都是Facebook的科学家Tomas Mikolov。不同之处在于,FastText 预测标签 ,而CBOW 模型 预测中间词

TextCNN 是利用卷积神经网络对文本进行分类的算法,它是由 Yoon Kim 在2014年在 “ Convolutional Neural Networks for Sentence Classification ” 一文中提出的。详细的原理图如下。

特征 :这里的特征就是词向量,有 静态(static) 非静态(non-static) 方式。static方式采用比如word2vec预训练的词向量,训练过程不更新词向量,实质上属于迁移学习了,特别是数据量比较小的情况下,采用静态的词向量往往效果不错。non-static则是在训练过程中更新词向量。推荐的方式是 non-static 中的 fine-tunning方式,它是以预训练(pre-train)的word2vec向量初始化词向量,训练过程中调整词向量,能加速收敛,当然如果有充足的训练数据和资源,直接随机初始化词向量效果也是可以的。

通道(Channels) :图像中可以利用 (R, G, B) 作为不同channel,而文本的输入的channel通常是不同方式的embedding方式(比如 word2vec或Glove),实践中也有利用静态词向量和fine-tunning词向量作为不同channel的做法。

一维卷积(conv-1d) :图像是二维数据,经过词向量表达的文本为一维数据,因此在TextCNN卷积用的是一维卷积。一维卷积带来的问题是需要设计通过不同 filter_size 的 filter 获取不同宽度的视野。

Pooling层: 利用CNN解决文本分类问题的文章还是很多的,比如这篇 A Convolutional Neural Network for Modelling Sentences 最有意思的输入是在 pooling 改成 (dynamic) k-max pooling,pooling阶段保留 k 个最大的信息,保留了全局的序列信息。

参考文献

技术 | 文本聚类与分类

优质回答按照处理的对象和处理的方法不同,可将常见文本分类/聚类任务分为以下几种:

① 文档聚类: 把一组未知类别的文档划分为若干类别,例如将介绍奥运会的新闻都归到某一类;

② 文档分类: 给定一个文档,将其划分到预定义好的某一个类别中,例如将所有介绍奥运会的新闻都标记为“体育”;

③ 词汇聚类: 把一组未知类别的词汇划分为若干类别,例如将各种运动的项目名称(词汇)都归为一类;

④ 词汇分类: 给定一个词汇,将其划分到预定义好的某一个类别中,例如将篮球、足球等都比较为球类,将打猎、射箭等都标记为射击。

要实现上述目的,通常有以下几个核心问题要解决:

1. 特征选择

1.1 用什么作为特征项

用于表示文本的基本单位通常称为文本的特征或特征项。特征项必须满足:能够标识文本内容、能够将目标文本与其他文本相区分、个数不能太多、特征项分离要比较容易实现。在中文文本中可以采用字、词或短语作为表示文本的特征项。

相比较而言,词比字具有更强的表达能力,而词和短语相比,词的切分难度比短语的切分难度小得多。因此,目前大多数中文文本分类系统都采用词作为特征项,称作特征词。这些特征词作为文档的中间表示形式,用来实现文档与文档、文档与用户目标之间的相似度计算 。

1.2 选取哪些作为特征项

如果把所有的词都作为特征项,那么特征向量的维数将过于巨大,从而导致计算量太大,在这样的情况下,要完成文本分类几乎是不可能的。特征提取的主要功能是在不损伤文本核心信息的情况下尽量减少要处理的单词数,以此来降低向量空间维数,从而简化计算,提高文本处理的和效率。

特征选取的方式有2种:用映射或变换的方法把原始特征变换为较少的新特征(将原始特征用新特征表示);从原始特征中挑选出一些最具代表性的特征(只保留部分原始特征,不产生新特征),即根据某个特征评估函数计算各个特征的评分值,然后按评分值对这些特征进行排序,选取若干个评分值最高的作为特征词,常见的特征评估函数包括TF-IDF、信息增益、互信息等。

2. 文本表示

2.1 如何表示文档

为了让计算机能够“计算”文本,就需要我们将文本数据转换成计算机可以处理的结构化数据。常见的文本表示模型有布尔模型、向量空间模型、统计主题模型等。其中,向量空间模型概念简单,把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度,直观易懂,目前应用最广。

2.2 如何确立权重

一篇文档有很多词,有些词表达的语义很重要,有些相对次要,那么如何确定哪些重要?哪些次要呢?因此,需要进一步对每个词的重要性进行度量。常见的确立词汇权重的算法有TF-IDF、词频法等。

3. 相似性计算

要实现文本的分类和聚类,需要设计一种算法计算出文档与文档、词汇与词汇之间的相似性。

3.1 文档相似性

设定我们要比较X和Y间的差异,它们都包含了N个维的特征,即X=(x1, x2, x3, … xn),Y=(y1, y2, y3, … yn)。下面来看看主要可以用哪些方法来衡量两者的差异,主要分为距离度量和相似度度量。

a. 距离度量

距离度量(Distance)用于衡量个体在空间上存在的距离,距离越远说明个体间的差异越大。常见的距离有欧几里得距离(Euclidean Distance)、明可夫斯基距离(Minkowski Distance)、曼哈顿距离(Manhattan Distance)、切比雪夫距离(Chebyshev Distance)、马哈拉诺比斯距离(Mahalanobis Distance)。

b. 相似性度量

相似度度量(Similarity),即计算个体间的相似程度,与距离度量相反,相似度度量的值越小,说明个体间相似度越小,差异越大。常见的相似性度量有向量空间余弦相似度(Cosine Similarity)、皮尔森相关系数(Pearson Correlation Coefficient)、Jaccard相似系数(Jaccard Coefficient)、调整余弦相似度(Adjusted Cosine Similarity)。

欧氏距离是最常见的距离度量,而余弦相似度则是最常见的相似度度量,很多的距离度量和相似度度量都是基于这两者的变形和衍生,所以下面重点比较下两者在衡量个体差异时实现方式和应用环境上的区别。下面借助三维坐标系来看下欧氏距离和余弦相似度的区别:

从图上可以看出距离度量衡量的是空间各点间的绝对距离,跟各个点所在的位置坐标(即个体特征维度的数值)直接相关;而余弦相似度衡量的是空间向量的夹角,更加的是体现在方向上的差异,而不是位置。如果保持A点的位置不变,B点朝原方向远离坐标轴原点,那么这个时候余弦相似度cosθ是保持不变的,因为夹角不变,而A、B两点的距离显然在发生改变,这就是欧氏距离和余弦相似度的不同之处。

根据欧氏距离和余弦相似度各自的计算方式和衡量特征,分别适用于不同的数据分析模型:欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异;而余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分用户兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦相似度对绝对数值不敏感)。

3.2 词汇相似性

目前我接触的常见词汇相似性的方法有:

a. 传统图情领域:基于共现频次这一基本统计量衍生出来的,如association strength、inclusion index、Jaccard’s coefficient、Salton’s cosine(Ochiia系数)等;

b. 计算机领域:一是基于语义词典的方法,即依据词典分类体系挖掘所包含的词义知识,常用的词典包括Wordnet、Hownet等;二是基于语料库的方法,这里的语料库较为多元,例如百科预料、唐诗宋词预料等;;三是进行词向量化,如Word2vec。

4. 文本分类/聚类算法

有了文本表示方法,又有了计算相似性的公式,下一步就可以在此基础上讨论文本分类/聚类的算法了。

4.1 文本分类

医生对病人进行诊断就是一个典型的分类过程,任何一个医生都无法直接看到病人的病情,只能观察病人表现出的症状和各种化验检测数据来推断病情,这时医生就好比一个分类器,而这个医生诊断的准确率,与他当初受到的教育方式(构造方法)、病人的症状是否突出(待分类数据的特性)以及医生的经验多少(训练样本数量)都有密切关系。

分类器是对样本进行分类的方法的统称,包含决策树、逻辑回归、朴素贝叶斯、神经网络等算法。举个例子:假如你想区分小明是好学生还是坏学生,那么区分“好学生”和“坏学生”就是一个分类任务。

4.1.1 K最邻近

“别和其他坏学生在一起,否则你也会和他们一样。” —— 家长

主要思想是通过离待预测样本最近的K个样本的类别来判断当前样本的类别。从K最近邻算法的角度来看,就是让目标样本与其他正样本距离更近、与其他负样本距离更远,从而使得其近邻中的正样本比例更高,更大概率被判断成正样本。

4.1.2 朴素贝叶斯

“根据以往抓获的情况来看,十个坏学生有九个爱打架。” —— 教导主任

“十个坏学生有九个爱打架”就意味着“坏学生”打架的概率P(打架|坏学生)=0.9,假设根据训导处历史记录坏学生占学生总数P(坏学生)=0.1、打架发生的概率是P(打架)=0.09,那么这时如果发生打架事件,就可以通过贝叶斯公式判断出当事学生是“坏学生”的概率P(坏学生|打架)=P(打架|坏学生)×P(坏学生)÷P(打架)=1.0,即该学生100%是“坏学生”。

4.1.3 决策树

“先看抽不抽烟,再看染不染头发,最后看讲不讲脏话。” ——社区大妈

假设“抽烟”、“染发”和“讲脏话”是社区大妈认为的区分“好坏”学生的三项关键特征,那么这样一个有先后次序的判断逻辑就构成一个决策树模型。在决策树中,最能区分类别的特征将作为最先判断的条件,然后依次向下判断各个次优特征。决策树的核心就在于如何选取每个节点的最优判断条件,也即特征选择的过程。

而在每一个判断节点,决策树都会遵循一套IF-THEN的规则:

IF “抽烟” THEN -> “坏学生” ELSE IF “染发” THEN -> “坏学生” ELSE IF “讲脏话” THEN -> “坏学生” ELSE -> “好学生”

4.1.4 逻辑回归

“上课讲话扣1分,不交作业扣2分,比赛得奖加5分。” ——纪律委员

我们称逻辑回归为一种线性分类器,其特征就在于自变量x和因变量y之间存在类似y=ax+b的一阶的、线性的关系。假设“上课讲话”、“不交作业”和“比赛得奖”的次数分别表示为x1、x2、和x3,且每个学生的基础分为0,那么最终得分y=-1

x1-2

x2+5*x3+0。其中-1、-2和5分别就对应于每种行为在“表现好”这一类别下的权重。

对于最终得分y,逻辑回归还通过Sigmoid函数将其变换到0-1之间,其含义可以认为是当前样本属于正样本的概率,即得分y越高,属于“表现好”的概率就越大。也就是说,假如纪律委员记录了某位同学分别“上课讲话”、“不交作业”和“比赛得奖”各一次,那么最终得分y=-2-1+5=2,而对2进行Sigmoid变换后约等于0.88,即可知该同学有88%的概率为“好学生”。

4.1.5 支持向量机

“我想个办法把表现差的学生都调到最后一排。” ——班主任

支持向量机致力于在正负样本的边界上找到一条分割界线(超平面),使得它能完全区分两类样本的同时,保证划分出的间隔尽量的大。如果一条分割界线无法完全区分(线性不可分),要么加上松弛变量进行适当的容忍,要么通过核函数对样本进行空间上的映射后再进行划分。对于班主任来讲,调换学生们的座位就相当于使用了核函数,让原本散落在教室里的“好”、“坏”学生从线性不可分变得线性可分了。

4.2 文本聚类

4.2.1 基于分层的聚类

hierarchical methods: 对数据集进行逐层分解,直到满足某种条件为止。可分为“自底向上”和“自顶向下”两种。例如“自底向上”指初始时每个数据点组成一个单独的组,在接下来的迭代中,按一定的距离度量将相互邻近的组合并成一个组,直至所有的记录组成一个分组或者满足某个条件为止。代表算法有:BIRCH,CURE,CHAMELEON等。自底向上的凝聚层次聚类如下图所示。

4.2.2 基于划分的聚类

partitioning methods: 给定包含N个点的数据集,划分法将构造K个分组,每个分组代表一个聚类,这里每个分组至少包含一个数据点,每个数据点属于且仅属于一个分组。对于给定的K值,算法先给出一个初始的分组方法,然后通过反复迭代的方法改变分组,使得每一次改进之后的分组方案较前一次好,这里好的标准在于同一组中的点越近越好,不同组中的点越远越好。代表算法有:K-means,K-medoids,CLARANS。K-means聚类过程图解如下:

4.2.3 基于密度的聚类

density-based methods: 基于密度的方法的特点是不依赖于距离,而是依赖于密度,从而克服基于距离的算法只能发现“球形”聚簇的缺点。其核心思想在于只要一个区域中点的密度大于某个阈值,就把它加到与之相近的聚类中去。代表算法有:DBSCAN,OPTICS,DENCLUE,WaveCluster。DBSCAN的聚簇生成过程的简单理解如下图。

4.2.3 基于网格的聚类

gird-based methods: 这种方法通常将数据空间划分成有限个单元的网格结构,所有的处理都是以单个的单元为对象。这样做起来处理很快,因为这与数据点的个数无关,而只与单元个数有关。代表算法有:STING,CLIQUE,WaveCluster。基于Clique的聚类过程可直观如下图进行理解。

4.2.4 基于模型的聚类

model-based methods: 基于模型的方法给每一个聚类假定一个模型,然后去寻找能很好的拟合模型的数据集。模型可能是数据点在空间中的密度分布函数或者其它。这样的方法通常包含的潜在假设是:数据集是由一系列的潜在概率分布生成的。通常有两种尝试思路:统计学方法和神经网络方法。其中,统计学方法有COBWEB算法、GMM(Gaussian Mixture Model),神经网络算法有SOM(Self Organized Maps)算法。下图是GMM过程的一个简单直观地理解。

4.2.5 基于图论的聚类

图论聚类方法解决的第一步是建立与问题相适应的图,图的节点对应于被分析数据的最小单元,图的边(或弧)对应于最小处理单元数据之间的相似性度量。因此,每一个最小处理单元数据之间都会有一个度量表达,这就确保了数据的局部特性比较易于处理。图论聚类法是以样本数据的局域连接特征作为聚类的主要信息源,因而其主要优点是易于处理局部数据的特性。典型算法有谱聚类。

聚类问题的研究不仅仅局限于上述的硬聚类,即每一个数据只能被归为一类,模糊聚类也是聚类分析中研究较为广泛的一个分支。模糊聚类通过隶属函数来确定每个数据隶属于各个簇的程度,而不是将一个数据对象硬性地归类到某一簇中。目前已有很多关于模糊聚类的算法被提出,如著名的FCM算法等。

生活中的难题,我们要相信自己可以解决,看完本文,相信你对 有了一定的了解,也知道它应该怎么处理。如果你还想了解文本分类方法的其他信息,可以点击若米知识其他栏目。

本文来自网络,不代表本站立场,转载请注明出处:https://www.rm2g.com/baike/4371.html

作者: 若米知识

若米知识为您提供最全面的生活百科网站大全,主要为您提供数码、汽车、财经、美食、财经、科技、健康、教育、创业、电商、影视、百科等资讯信息,在这里可以找到您所需的答案,解决您所困惑的问题。
15护士资格证报名方法—护士证16报名流程
西安电力防爆电脑费用
联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@wangzhan.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部