精华内容
下载资源
问答
  • 常见的选择文本的方法有哪些
    千次阅读
    2020-06-09 19:34:39

    一、课题背景概述

    文本挖掘是一门交叉性学科,涉及数据挖掘、机器学习、模式识别、人工智能、统计学、计算机语言学、计算机网络技术、信息学等多个领域。文本挖掘就是从大量的文档中发现隐含知识和模式的一种方法和工具,它从数据挖掘发展而来,但与传统的数据挖掘又有许多不同。文本挖掘的对象是海量、异构、分布的文档(web);文档内容是人类所使用的自然语言,缺乏计算机可理解的语义。传统数据挖掘所处理的数据是结构化的,而文档(web)都是半结构或无结构的。所以,文本挖掘面临的首要问题是如何在计算机中合理地表示文本,使之既要包含足够的信息以反映文本的特征,又不至于过于复杂使学习算法无法处理。在浩如烟海的网络信息中,80%的信息是以文本的形式存放的,WEB文本挖掘是WEB内容挖掘的一种重要形式。

    文本的表示及其特征项的选取是文本挖掘、信息检索的一个基本问题,它把从文本中抽取出的特征词进行量化来表示文本信息。将它们从一个无结构的原始文本转化为结构化的计算机可以识别处理的信息,即对文本进行科学的抽象,建立它的数学模型,用以描述和代替文本。使计算机能够通过对这种模型的计算和操作来实现对文本的识别。由于文本是非结构化的数据,要想从大量的文本中挖掘有用的信息就必须首先将文本转化为可处理的结构化形式。目前人们通常采用向量空间模型来描述文本向量,但是如果直接用分词算法和词频统计方法得到的特征项来表示文本向量中的各个维,那么这个向量的维度将是非常的大。这种未经处理的文本矢量不仅给后续工作带来巨大的计算开销,使整个处理过程的效率非常低下,而且会损害分类、聚类算法的精确性,从而使所得到的结果很难令人满意。因此,必须对文本向量做进一步净化处理,在保证原文含义的基础上,找出对文本特征类别最具代表性的文本特征。为了解决这个问题,最有效的办法就是通过特征选择来降维。

    目前有关文本表示的研究主要集中于文本表示模型的选择和特征词选择算法的选取上。用于表示文本的基本单位通常称为文本的特征或特征项。特征项必须具备一定的特性:1)特征项要能够确实标识文本内容;2)特征项具有将目标文本与其他文本相区分的能力;3)特征项的个数不能太多;4)特征项分离要比较容易实现。在中文文本中可以采用字、词或短语作为表示文本的特征项。相比较而言,词比字具有更强的表达能力,而词和短语相比,词的切分难度比短语的切分难度小得多。因此,目前大多数中文文本分类系统都采用词作为特征项,称作特征词。这些特征词作为文档的中间表示形式,用来实现文档与文档、文档与用户目标之间的相似度计算 。如果把所有的词都作为特征项,那么特征向量的维数将过于巨大,从而导致计算量太大,在这样的情况下,要完成文本分类几乎是不可能的。特征抽取的主要功能是在不损伤文本核心信息的情况下尽量减少要处理的单词数,以此来降低向量空间维数,从而简化计算,提高文本处理的速度和效率。文本特征选择对文本内容的过滤和分类、聚类处理、自动摘要以及用户兴趣模式发现、知识发现等有关方面的研究都有非常重要的影响。通常根据某个特征评估函数计算各个特征的评分值,然后按评分值对这些特征进行排序,选取若干个评分值最高的作为特征词,这就是特征抽取(Feature Selection)。

    特征选取的方式有4种:(I)用映射或变换的方法把原始特征变换为较少的新特征;(2)从原始特征中挑选出一些最具代表性的特征;(3)根据专家的知识挑选最有影响的特征;(4)用数学的方法进行选取,找出最具分类信息的特征,这种方法是一种比较精确的方法,人为因素的干扰较少,尤其适合于文本自动分类挖掘系统的应用。

    随着网络知识组织、人工智能等学科的发展,文本特征提取将向着数字化、智能化、语义化的方向深入发展,在社会知识管理方面发挥更大的作用。
    二、文本特征向量
    经典的向量空间模型(VSM: Vector Space Model)由Salton等人于60年代提出,并成功地应用于著名的SMART文本检索系统。VSM概念简单,把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度,直观易懂。当文档被表示为文档空间的向量,就可以通过计算向量之间的相似性来度量文档间的相似性。文本处理中最常用的相似性度量方式是余弦距离。文本挖掘系统采用向量空间模型,用特征词条(T1 ,T2 ,…Tn) 及其权值Wi 代表目标信息,在进行信息匹配时,使用这些特征项评价未知文本与目标样本的相关程度。特征词条及其权值的选取称为目标样本的特征提取,特征提取算法的优劣将直接影响到系统的运行效果。

    设D为一个包含m个文档的文档集合,Di为第i个文档的特征向量,则有

    D={D1,D2,…,Dm}, Di=(di1,di2,…,din),i=1,2,…,m

    其中dij(i=1,2,…,m;j=1,2,…,n)为文档Di中第j个词条tj的权值,它一般被定义为tj在Di中出现的频率tij的函数,例如采用TFIDF函数,即dij=tij*log(N/nj)其中,N是文档数据库中文档总数,nj是文档数据库含有词条tj的文档数目。假设用户给定的文档向量为Di,未知的文档向量为Dj,则两者的相似程度可用两向量的夹角余弦来度量,夹角越小说明相似度越高。相似度的计算公式如下:

    通过上述的向量空间模型,文本数据就转换成了计算机可以处理的结构化数据,两个文档之间的相似性问题转变成了两个向量之间的相似性问题。

    三、 基于统计的特征提取方法(构造评估函数)
    一、各种流行算法
    这类型算法通过构造评估函数,对特征集合中的每个特征进行评估,并对每个特征打分,这样每个词语都获得一个评估值,又称为权值。然后将所有特征按权值大小排序,提取预定数目的最优特征作为提取结果的特征子集。显然,对于这类型算法,决定文本特征提取效果的主要因素是评估函数的质量。

    1、TF-IDF:
    单词权重最为有效的实现方法就是TFIDF, 它是由Salton在1988 年提出的。其中TF 称为词频, 用于计算该词描述文档内容的能力; IDF 称为反文档频率, 用于计算该词区分文档的能力。TFIDF 的指导思想建立在这样一条基本假设之上: 在一个文本中出现很多次的单词, 在另一个同类文本中出现次数也会很多, 反之亦然。所以如果特征空间坐标系取TF 词频作为测度, 就可以体现同类文本的特点。另外还要考虑单词区别不同类别的能力, TF*IDF 法认为一个单词出现的文本频率越小, 它区别不同类别的能力就越大, 所以引入了逆文本频度IDF 的概念, 以TF 和IDF 的乘积作为特征空间坐标系的取值测度。

    TFIDF 法是以特征词在文档d中出现的次数与包含该特征词的文档数之比作为该词的权重,即

    其中, Wi表示第i个特征词的权重,TFi(t,d)表示词t在文档d中的出现频率,N表示总的文档数,DF(t)表示包含t的文档数。用TFIDF算法来计算特征词的权重值是表示当一个词在这篇文档中出现的频率越高,同时在其他文档中出现的次数越少,则表明该词对于表示这篇文档的区分能力越强,所以其权重值就应该越大。将所有词的权值排序, 根据需要可以有两种选择方式:( 1) 选择权值最大的某一固定数n 个关键词;( 2) 选择权值大于某一阈值的关键词。一些实验表示,人工选择关键词, 4∽7 个比较合适, 机选关键词10∽15 通常具有最好的覆盖度和专指度。

    TFIDF算法是建立在这样一个假设之上的:对区别文档最有意义的词语应该是那些在文档中出现频率高,而在整个文档集合的其他文档中出现频率少的词语,所以如果特征空间坐标系取TF词频作为测度,就可以体现同类文本的特点。另外考虑到单词区别不同类别的能力,TFIDF法认为一个单词出现的文本频数越小,它区别不同类别文本的能力就越大。因此引入了逆文本频度IDF的概念,以TF和IDF的乘积作为特征空间坐标系的取值测度,并用它完成对权值TF的调整,调整权值的目的在于突出重要单词,抑制次要单词。但是在本质上IDF是一种试图抑制噪音的加权 ,并且单纯地认为文本频数小的单词就越重要,文本频数大的单词就越无用,显然这并不是完全正确的。IDF的简单结构并不能有效地反映单词的重要程度和特征词的分布情况,使其无法很好地完成对权值调整的功能,所以TFIDF法的精度并不是很高。

    此外,在TFIDF算法中并没有体现出单词的位置信息,对于Web文档而言,权重的计算方法应该体现出HTML的结构特征。特征词在不同的标记符中对文章内容的反映程度不同,其权重的计算方法也应不同。因此应该对于处于网页不同位置的特征词分别赋予不同的系数,然后乘以特征词的词频,以提高文本表示的效果。

    2、词频方法(Word Frequency):
    词频是一个词在文档中出现的次数。通过词频进行特征选择就是将词频小于某一闭值的词删除,从而降低特征空间的维数。这个方法是基于这样一个假设,即出现频率小的词对过滤的影响也较小。但是在信息检索的研究中认为,有时频率小的词含有更多的信息。因此,在特征选择的过程中不宜简单地根据词频大幅度删词。

    3、文档频次方法(Document Frequency):
    文档频数(Document Frequency, DF)是最为简单的一种特征选择算法,它指的是在整个数据集中有多少个文本包含这个单词。在训练文本集中对每个特征计一算它的文档频次,并且根据预先设定的阑值去除那些文档频次特别低和特别高的特征。文档频次通过在训练文档数量中计算线性近似复杂度来衡量巨大的文档集,计算复杂度较低,能够适用于任何语料,因此是特征降维的常用方法。

    在训练文本集中对每个特征计算它的文档频数,若该项的DF 值小于某个阈值则将其删除,若其DF值大于某个阈值也将其去掉。因为他们分别代表了“没有代表性”和“没有区分度”2 种极端的情况。DF 特征选取使稀有词要么不含有用信息,要么太少而不足以对分类产生影响,要么是噪音,所以可以删去。DF 的优点在于计算量很小,而在实际运用中却有很好的效果。缺点是稀有词可能在某一类文本中并不稀有,也可能包含着重要的判断信息,简单舍弃,可能影响分类器的精度。

    文档频数最大的优势就是速度快,它的时间复杂度和文本数量成线性关系,所以非常适合于超大规模文本数据集的特征选择。不仅如此,文档频数还非常地高效,在有监督的特征选择应用中当删除90%单词的时候其性能与信息增益和x2 统计的性能还不相上下。DF 是最简单的特征项选取方法,而且该方法的计算复杂度低, 能够胜任大规模的分类任务。

    但如果某一稀有词条主要出现在某类训练集中,却能很好地反映类别的特征,而因低于某个设定的阈值而滤除掉,这样就会对分类精度有一定的影响。

    4、互信息(Mutual Information):
    互信息衡量的是某个词和类别之间的统计独立关系,某个词t和某个类别Ci传统的互信息定义如下:

    互信息是计算语言学模型分析的常用方法,它度量两个对象之间的相互性。在过滤问题中用于度量特征对于主题的区分度。互信息的定义与交叉嫡近似。互信息本来是信息论中的一个概念,用于表示信息之间的关系, 是两个随机变量统计相关性的测度,使用互信息理论进行特征抽取是基于如下假设:在某个特定类别出现频率高,但在其他类别出现频率比较低的词条与该类的互信息比较大。通常用互信息作为特征词和类别之问的测度,如果特征词属于该类的话,它们的互信息量最大。由于该方法不需要对特征词和类别之问关系的性质作任何假设,因此非常适合于文本分类的特征和类别的配准工作。

    特征项和类别的互信息体现了特征项与类别的相关程度, 是一种广泛用于建立词关联统计模型的标准。互信息与期望交叉熵的不同在于没有考虑特征出现的频率, 这样导致互信息评估函数不选择高频的有用词而有可能选择稀有词作为文本的最佳特征。因为对于每一主题来讲,特征t的互信息越大,说明它与该主题的共现概率越大,因此,以互信息作为提取特征的评价时应选互信息最大的若干个特征。

    互信息计算的时间复杂度类似于信息增益, 互信息的平均值就是信息增益。互信息的不足之处在于得分非常受词条边缘概率的影响。

    实验数据显示,互信息分类效果最差,其次是文档频率、CC 统计,CHI 统计分类效果最好。

    对互信息而言,提高分类精度的方法有:1) 可以增加特征空间的维数,以提取足够多的特征信息,这样就会带来了时间和空间上的额外开销;2) 根据互信息函数的定义,认为这些低频词携带着较为强烈的类别信息,从而对它们有不同程度的倚重. 当训练语料库没有达到一定规模的时候,特征空间中必然会存在大量的出现文档频率很低(比如低于3 次) 的词条,他们较低的文档频率导致了他们必然只属于少数类别. 但是从抽取出来的特征词观察发现,大多数为生僻词,很少一部分确实带有较强的类别信息,多数词携带少量的类别信息,甚至是噪音词.

    5、期望交叉熵(Expected Cross Entropy):
    交叉嫡与信息量的定义近似,其公式为:

    交叉嫡 ,也称KL距离。它反映了文本主题类的概率分布和在出现了某特定词汇的条件下文本主题类的概率分布之间的距离,词汇w的交叉嫡越大,对文本主题类分布的影响也越大。它与信息增益唯一的不同之处在于没有考虑单词未发生的情况,只计算出现在文本中的特征项。如果特征项和类别强相关, P ( Ci | w )就大,若P( Ci) 又很小的话,则说明该特征对分类的影响大。

    交叉熵反映了文本类别的概率分布和在出现了某个特定词的条件下文本类别的概率分布之间的距离, 特征词t 的交叉熵越大, 对文本类别分布的影响也越大。熵的特征选择效果都要优于信息增益。

    6、二次信息熵(QEMI):
    将二次熵函数应用于互信息评估方法中,取代互信息中的Shannon熵,就形成了基于二次熵的互信息评估函数。基于二次熵的互信息克服了互信息的随机性,是一个确定的量,因此可以作为信息的整体测度,另外它还比互信息最大化的计算复杂度要小,所以可以比较高效地用在基于分类的特征选取上。

    二次熵的概念是在广义信息论中提出的。广义熵:

    当 ,就得到了二次熵定义:

    7、信息增益方法(Information Gain):
    信息增益方法是机器学习的常用方法,在过滤问题中用于度量已知一个特征是否出现于某主题相关文本中对于该主题预测有多少信息。通过计算信息增益可以得到那些在正例样本中出现频率高而在反例样本中出现频率低的特征,以及那些在反例样本中出现频率高而在正例样本中出现频率低的特征。信息增益G(w)的训算公式如下:

    其中P(w)是词w出现的概率,P(Ci)是取第i个目录时的概率,P(C,|w ) 是假定w出现时取第i个目录的概率。

    信息增益是一种基于熵的评估方法,涉及较多的数学理论和复杂的熵理论公式,定义为某特征项为整个分类所能提供的信息量,不考虑任何特征的熵与考虑该特征后的熵的差值。他根据训练数据,计算出各个特征项的信息增益,删除信息增益很小的项,其余的按照信息增益从大到小排序。

    信息增益是信息论中的一个重要概念, 它表示了某一个特征项的存在与否对类别预测的影响, 定义为考虑某一特征项在文本中出现前后的信息熵之差。某个特征项的信息增益值越大, 贡献越大, 对分类也越重要。信息增益方法的不足之处在于它考虑了特征未发生的情况。特别是在类分布和特征值分布高度不平衡的情况下, 绝大多数类都是负类, 绝大多数特征都不出现。此时的函数值由不出现的特征决定, 因此, 信息增益的效果就会大大降低。信息增益表现出的分类性能偏低。因为信息增益考虑了文本特征未发生的情况,虽然特征不出现的情况肿可能对文本类别具有贡献,但这种贡献往往小于考虑这种情况时对特征分值带来的干扰。

    8、x2统计量方法:
    x2统计量用于度量特征w和主题类C之间的独立性。而表示除w以外的其他特征,C表示除C以外的其他主题类,那么特征w和主题类C的关系有以下四种

    情况: ,用A, B, C, D表示这四种情况的文档频次,总的文档数N=A+B+C+D,扩统计量的计算公式如下:

    当特征w和主题类C之间完全独立的时候,x2统计量为0。x2统计量和互信息的差别在于它是归一化的统计量,但是它对低频特征的区分效果也不好。X2 统计得分的计算有二次复杂度, 相似于互信息和信息增益。在 X2 统计和互信息之间主要的不同在于 X2 是规格化评价, 因而 X2 评估分值对在同类中的词是可比的, 但是 X2 统计对于低频词来说是不可靠的。

    利用x2 统计方法来进行特征抽取是基于如下假设:在指定类别文本中出现频率高的词条与在其他类别文本中出现频率比较高的词条,对判定文档是否属于该类别都是很有帮助的.

    采用x2估计特征选择算法的准确率在实验中最高,其分类效果受训练集影响较小,比较稳定。而且在对文教类和政治类存在类别交叉现象的文本进行分类时,采用x2估计的分类系统表现出了优于其它方法的分类性能。X2估计的可靠性较好,便于对程序的控制,无需因训练集的改变而人为的调节特征阀值的大小。

    9、文本证据权(The Weight of Evidence forText):

    文本证据权衡量类的概率和给定特征时类的条件概率之间的差别。

    10、优势率(Odds Ratio):

    优势率只适用于二元分类的情况,其特点是只关心文本特征对于目标类的分值。Pos表示目标类,neg表示非目标类。
    

    11、遗传算法(Genetic Algorithm, GA):
    文本实际上可以看作是由众多的特征词条构成的多维空间,而特征向量的选择就是多维空间中的寻优过程,因此在文本特征提取研究中可以使用高效寻优算法。遗传算法(Genetic Algorithm, GA)是一种通用型的优化搜索方法,它利用结构化的随机信息交换技术组合群体中各个结构中最好的生存因素,复制出最佳代码串,并使之一代一代地进化,最终获得满意的优化结果。在将文本特征提取问题转化为文本空间的寻优过程中,首先对Web文本空间进行遗传编码,以文本向量构成染色体,通过选择、交叉、变异等遗传操作,不断搜索问题域空间,使其不断得到进化,逐步得到Web文本的最优特征向量。

    基于协同演化的遗传算法不是使用固定的环境来评价个体,而是使用其他的个体来评价特定个体。个体优劣的标准不是其生存环境以外的事物,而是由在同一生存竞争环境中的其他个体来决定。协同演化的思想非常适合处理同类文本的特征提取问题。由于同一类别文本相互之间存在一定相关性,因而各自所代表的那组个体在进化过程中存在着同类之间的相互评价和竞争。因此,每个文本的特征向量,即该问题中的个体,在不断的进化过程中,不仅受到其母体(文本)的评价和制约,而且还受到种族中其他同类个体的指导。所以,基于协同演化的遗传算法不仅能反映其母体的特征,还能反映其他同类文本的共性,这样可以有效地解决同一主题众多文本的集体特征向量的提取问题,获得反映整个文本集合某些特征的最佳个体。

    12、主成分分析法(Principal Component Analysis,PCA):
    它不是通过特征选取的方式降维的,而是通过搜索最能代表原数据的正交向量,创立一个替换的、较小的变量集来组合属性的精华,原数据可以投影到这个较小的集合。PCA由于其处理方式的不同又分为数据方法和矩阵方法。矩阵方法中,所有的数据通过计算方差一协方差结构在矩阵中表示出来,矩阵的实现目标是确定协方差矩阵的特征向量,它们和原始数据的主要成分相对应。在主成分方法中,由于矩阵方法的复杂度在n很大的情况 以二次方增长,因此人们又开发使用了主要使用Hebbian学习规则的PCA神经网络方法。

    主成分分析法是特征选取常用的方法之一,它能够揭示更多有关变量_丰要方向的信息。但它的问题在于矩阵方法中要使用奇异值分解对角化矩阵求解方差一协方差。

    13、模拟退火算法(Simulating Anneal,SA):
    特征选取可以看成是一个组合优化问题,因而可以使用解决优化问题的方法来解决特征选取的问题。模拟退火算法(Simulating Anneal,SA)就是其中一种方法。

    模拟退火算法是一个很好的解决优化问题的方法,将这个方法运用到特征选取中,理论上能够找到全局最优解,但在初始温度的选取和邻域的选取t要恰当,必须要找到一个比较折中的办法,综合考虑解的性能和算法的速度。

    14、N—Gram算法
    它的基本思想是将文本内容按字节流进行大小为N的滑动窗口操作,形成长度为N的字节片段序列。每个字节片段称为gram,对全部gram的出现频度进行统计,并按照事先设定的阈值进行过滤,形成关键gram列表,即为该文本的特征向量空间,每一种gram则为特征向量维度。由于N—Gram算法可以避免汉语分词的障碍,所以在中文文本处理中具有较高的实用性。中文文本处理大多采用双字节进行分解,称之为bi-gram。但是bigram切分方法在处理20%左右的中文多字词时,往往产生语义和语序方面的偏差。而对于专业研究领域,多字词常常是文本的核心特征,处理错误会导致较大的负面影响。基于N—Gram改进的文本特征提取算法[2],在进行bigram切分时,不仅统计gram的出现频度,而且还统计某个gram与其前邻gram的情况,并将其记录在gram关联矩阵中。对于那些连续出现频率大于事先设定阈值的,就将其合并成为多字特征词。这样通过统计与合并双字特征词,自动产生多字特征词,可以较好地弥补N—Gram算法在处理多字词方面的缺陷。

    15、各种方法的综合评价
    上述几种评价函数都是试图通过概率找出特征与主题类之间的联系,信息增益的定义过于复杂,因此应用较多的是交叉嫡和互信息。其中互信息的效果要好于交又嫡,这是因为互信息是对不同的主题类分别抽取特征词,而交叉嫡跟特征在全部主题类内的分布有关,是对全部主题类来抽取特征词。这些方法,在英文特征提取方面都有各自的优势,但用于中文文本,并没有很高的效率。主要有2 个方面的原因:1) 特征提取的计算量太大,特征提取效率太低,而特征提取的效率直接影响到整个文本分类系统的效率。2) 经过特征提取后生成的特征向量维数太高,而且不能直接计算出特征向量中各个特征词的权重。

    目前使用评估函数进行特征选取越来越普遍,特征选取算法通过构造一个评估函数的方法,选取预定数目的最佳特征作为特征子集的结果。在几种评估方法中,每一种方法都有一个选词标准,遵从这个标准,从文本集的所有词汇中选取出有某个限定范围的特征词集。因为评估函数的构造不是特别复杂,适用范围又很广泛,所以越来越多的人们喜欢使用构造评估函数来进行特征的选取。

    这些评估函数在Web文本挖掘中被广泛使用,特征选择精度普遍达到70%~80%,但也各自存在缺点和不足。例如,“信息增益”考虑了单词未发生的情况,对判断文本类别贡献不大,而且引入不必要的干扰,特别是在处理类分布和特征值分布高度不平衡的数据时选择精度下降。“期望交叉熵”与“信息增益”的唯一不同就是没有考虑单词未发生的情况,因此不论处理哪种数据集,它的特征选择精度都优于“信息增益”。与“期望交叉熵”相比,“互信息”没有考虑单词发生的频度,这是一个很大的缺点,造成“互信息”评估函数经常倾向于选择稀有单词。“文本证据权”是一种构造比较新颖的评估函数,它衡量一般类的概率和给定特征类的条件概率之间的差别,这样在文本处理中,就不需要计算W的所有可能值,而仅考虑W在文本中出现的情况。“优势率”不像前面所述的其他评估函数将所有类同等对待,它只关心目标类值,所以特别适用于二元分类器,可以尽可能多地识别正类,而不关心识别出负类。

    从考虑文本类间相关性的角度,可以把常用的评估函数分为两类,即类间不相关的和类间相关的。“文档频数”(DF)是典型的类间不相关评估函数, DF的排序标准是依据特征词在文档中出现篇数的百分比,或称为篇章覆盖率。这种类型的评估函数,为了提高区分度,要尽量寻找篇章覆盖率较高的特征词,但又要避免选择在各类文本中都多次出现的无意义高频词,因此类间不相关评估函数对停用词表的要求很高。但是,很难建立适用于多个类的停用词表,停用词不能选择太多,也不能选择太少,否则都将会影响特征词的选择。同时,类间不相关评估函数还存在一个明显的缺点,就是对于特征词有交叉的类别或特征相近的类别,选择的特征词会出现很多相似或相同的词条,造成在特定类别间的区分度下降。类间相关的评估函数,例如期望交叉熵、互信息、文本证据权等,综合考虑了词条在已定义的所有类别中的出现情况,可以通过调整特征词的权重,选择出区分度更好的特征,在一定程度上提高了相近类别的区分度。但是,该区分度的提高仅体现在已定义的类别间,而对于尚未定义的域外类别,类间相关评估函数的选择效果也不理想。因此,在评估函数选择问题上,提高对域外类别文本的区分度是十分重要的研究课题。

    传统的特征选择方法大多采用以上各评估函数进行特征权重的计算,由于这些评估函数是基于统计学的,其中一个主要缺陷就是需要用一个很庞大的训练集才能获得几乎所有的对分类起关键作用的特征.这需要消耗大量的时间和空间资源,况且,构建这样一个庞大的训练集也是一项十分艰巨的工作。然而,在现实应用中,考虑到工作效率,不会也没有足够的资源去构建一个庞大的训练集,这样的结果就是:被选中的甚至是权重比较高的特征,可能对分类没有什么用处,反而会干涉到正确的分类;而真正有用的特征却因为出现的频率低而获得 较低的权重,甚至在降低特征空间维数的时候被删除掉了。

    基于评估函数的特征提取方法是建立在特征独立的假设基础上,但在实际中这个假设是很难成立的,因此需要考虑特征相关条件下的文本特征提取方法。

    二、影响特征词权值的因素分析

    1、词频
    文本内空中的中频词往往具有代表性,高频词区分能力较小,而低频词或者示出现词也常常可以做为关键特征词。所以词频是特征提取中必须考虑的重要因素,并且在不同方法中有不同的应用公式。

    2、词性
    汉语言中,能标识文本特性的往往是文本中的实词,如名词、动词、形容词等。而文本中的一些虚词,如感叹词、介词、连词等,对于标识文本的类别特性并没有贡献,也就是对确定文本类别没有意义的词。如果把这些对文本分类没有意思的虚词作为文本特征词,将会带来很大噪音,从而直接降低文本分类的效率和准确率。因此,在提取文本特征时,应首先考虑剔除这些对文本分类没有用处的虚词,而在实词中,又以名词和动词对于文本的类别特性的表现力最强,所以可以只提取文本中的名词和动词作为文本的一级特征词。

    2、文档频次
    出现文档多的特征词,分类区分能力较差,出现文档少的特征词更能代表文本的不同主题。

    2、标题
    标题是作者给出的提示文章内容的短语,特别在新闻领域,新闻报道的标题一般都要求要简练、醒目,有不少缩略语,与报道的主要内容有着重要的联系,对摘要内容的影响不可忽视。统计分析表明,小标题的识别有助于准确地把握文章的主题。主要体现在两个方面:正确识别小标题可以很好地把握文章的整体框架,理清文章的结构层次;同时,小标题本身是文章中心内容的高度概括。因此,小标题的正确识别能在一定程度上提高文摘的质量。

    3、位置
    美国的EE.Baxendale的调查结果显示:段落的论题是段落首句的概率为85% , 是段落末句的概率为7% 。而且新闻报道性文章的形式特征决定了第一段一般是揭示文章主要内容的。因此,有必要提高处于特殊位置的句子权重,特别是报道的首旬和末句。但是这种现象又不是绝对的,所以,我们不能认为首句和末句就一定是所要摘要的内容,因此可以考虑一个折衷的办法,即首句和末句的权重上可通过统计数字扩大一个常数倍。首段、末段、段首、段尾、标题和副标题、子标题等处的句子往往在较大程度上概述了文章的内容。对于出现在这些位置的句子应该加大权重。

    Internet上的文本信息大多是HTML结构的,对于处于Web文本结构中不同位置的单词,其相应的表示文本内容或区别文本类别的能力是不同的,所以在单词权值中应该体现出该词的位置信息。

    4、句法结构
    句式与句子的重要性之间存在着某种联系,比如摘要中的句子大多是陈述句,而疑问句、感叹句等则不具内容代表性。而通常“总之”、“综上所述”等一些概括性语义后的句子,包含了文本的中心内容。

    5、专业词库
    通用词库包含了大量不会成为特征项的常用词汇,为了提高系统运行效率,系统根据挖掘目标建立专业的分词表,这样可以在保证特征提取准确性的前提下,显著提高系统的运行效率。

    用户并不在乎具体的哪一个词出现得多,而在乎泛化的哪一类词出现得多。真正起决定作用的是某一类词出现的总频率。基于这一原理,我们可以先将词通过一些方法依主题领域划分为多个类,然后为文本提取各个词类的词频特征,以完成对文本的分类。

    可以通过人工确定领域内的关键词集。

    6、信息熵
    熵(Entropy)在信息论中是一个非常重要的概念 ’ ,它是不确定性的一种度量。信息熵方法的基本目的是找出某种符号系统的信息量和多余度之间的关系,以便能用最小的成本和消耗来实现最高效率的数据储存、管理和传递。信息熵是数学方法和语言文字学的结合,其定义为:设x是取有限个值的随机变量,各个取值出现的概率为 则 的熵为 其中,底数n可以为任意正数,并规定当 时, =0。在式(3)中,对数底a决定了熵的单位,如a=2、e、10,熵的单位分别为Bit,nat,Hartley。在我们的研究论文中,均取a=2。熵具有最大值和最小值 ,由熵的定义公式可以看出,当每个值出现的概率相等时,即当 时这时熵函数达到最大值 ,记为最大熵 。其中Pt ≥0,并且 。而当 n)时,熵值最小,Entropy(X)=0。

    我们将可以将信息论中的熵原理引入到特征词权重的计算中。

    7、文档、词语长度
    一般情况下,词的长度越短,其语义越泛。一般来说, 中文中词长较长的词往往反映比较具体、下位的概念, 而短的词常常表示相对抽象、上位的概念一般说来, 短词具有较高的频率和更多的含义, 是面向功能的;而长词的频率较低, 是面向内容的, 增加长词的权重, 有利于词汇进行分割, 从而更准确地反映出特征词在文章中的重要程度。词语长度通常不被研究者重视。但是本文在实际应用中发现,关键词通常是一些专业学术组合词汇,长度较一般词汇长。考虑候选词的长度,会突出长词的作用。长度项也可以使用对数函数来平滑词汇间长度的剧烈差异。通常来说,长词汇含义更明确,更能反映文本主题,适合作为关键词,因此将包含在长词汇中低于一定过滤阈值的短词汇进行了过滤。所谓过滤阈值,就是指进行过滤短词汇的后处理时,短词汇的权重和长词汇的权重的比的最大值。如果低于过滤阈值,则过滤短词汇,否则保留短词汇。

    根据统计,二字词汇多是常用词,不适合作为关键词,因此对实际得到的二字关键词可以做出限制。比如,抽取5 个关键词,本文最多允许3 个二字关键词存在。这样的后处理无疑会降低关键词抽取的准确度和召回率,但是同候选词长度项的运用一样,人工评价效果将会提高。

    8、词语间关联

    9、单词的区分能力
    在TF*IDF 公式的基础上, 又扩展了一项单词的类区分能力。新扩展的项用于描述单词与各个类别之间的相关程度。

    10、词语直径(Diameter ( t) )
    词语直径是指词语在文本中首次出现的位置和末次出现的位置之间的距离。词语直径是根据实践提出的一种统计特征。根据经验,如果某个词汇在文本开头处提到,结尾又提到,那么它对该文本来说,是个很重要的词汇。不过统计结果显示,关键词的直径分布出现了两极分化的趋势,在文本中仅仅出现了1次的关键词占全部关键词的14.184 %。所以词语直径是比较粗糙的度量特征。

    11、首次出现位置(FirstLoc ( t) )
    Frank 在Kea 算法中使用候选词首次出现位置作为Bayes 概率计算的一个主要特征,他称之为距离(Distance)。简单的统计可以发现,关键词一般在文章中较早出现,因此出现位置靠前的候选词应该加大权重。实验数据表明,首次出现位置和词语直径两个特征只选择一个使用就可以了。由于文献数据加工问题导致中国学术期刊全文数据库的全文数据不仅包含文章本身,还包含了作者、作者机构以及引文信息,针对这个特点,使用首次出现位置这个特征,可以尽可能减少全文数据的附加信息造成的不良影响。

    12、词语分布偏差(Deviation ( t) )
    词语分布偏差所考虑的是词语在文章中的统计分布。在整篇文章中分布均匀的词语通常是重要的词汇。词语的分布偏差计算公式如下: 其中,CurLoc ( tj ) 是词汇t 在文章中第j 次出现的位置;MeanLoc ( t ) 是词汇t 在文章中出现的平均位置。

    13、特征提取的一般步骤
    一、 候选词的确定

    (1) 分词(词库的扩充)

    尽管现在分词软件的准确率已经比较高了,但是,它对专业术语的识别率还是很好,所以,为了进一步提高关键词抽取的准确率,我们有必要在词库中添加了一个专业词库以保证分词的质量。

    (2) 停用词的过滤

    停用词是指那些不能反映主题的功能词。例如:“的”、“地”、“得”之类的助词,以及像“然而”、“因此”等只能反映句子语法结构的词语,它们不但不能反映文献的主题,而且还会对关键词的抽取造成干扰,有必要将其滤除。停用词确定为所有虚词以及标点符号。

    (3) 记录候选词在文献中的位置

    为了获取每个词的位置信息,需要确定记录位置信息的方式以及各个位置的词在反映主题时的相对重要性。根据以往的研究结果,初步设定标题的位置权重为5,摘要和结论部分为3,正文为1,同时,把标题、摘要和结论、正文分别称为5 区、3 区和1 区。确定了文章各个部分的位置权重之后,就可以用数字标签对每个位置做一个标记。做法是:在标题的开头标上数字5,在摘要和结论部分的段首标上数字3,在正文的段首标上数字1,这样,当软件逐词扫描统计词频时,就可以记录每个词的位置信息。

    二、词语权重计算

    (1) 词语权值函数的构造(见各不同算法)

    (2) 关键词抽取

    候选词的权值确定以后,将权值排序,取前n个词作为最后的抽取结果。

    四、基于语义的特征提取方法(结合领域)
    一、基于语境框架的文本特征提取方法
    越来越多的现象表明,统计并不能完全取代语义分析。不考虑句子的含义和句子间的关系机械抽取,必然导致主题的准确率低,连贯性差,产生一系列问题,如主要内容缺失、指代词悬挂、文摘句过长等。因此,理想的自动主题提取模型应当将两种方法相结合。应当将语义分析融入统计算法,基本的方法仍然是“统计-抽取”模型,因为这一技术已经相对成熟并拥有丰富的研究成果。

    语境框架是一个三维的语义描述,把文本内容抽象为领域(静态范畴)、情景(动态描述)、背景(褒贬、参照等)三个框架。在语境框架的基础上,从语义分析入手,实现了4元组表示的领域提取算法、以领域句类为核心的情景提取算法和以对象语义立场网络图为基础的褒贬判断。该方法可以有效地处理语言中的褒贬倾向、同义、多义等现象,表现出较好的特征提取能力。

    二、基于本体论的文本提取方法
    应用本体论(On-tology)模型可以有效地解决特定领域知识的描述问题。具体针对数字图像领域的文本特征提取,通过构建文本结构树,给出特征权值的计算公式。算法充分考虑特征词的位置以及相互之间关系的分析,利用特征词统领长度的概念和计算方法,能够更准确地进行特征词权值的计算和文本特征的提取。

    三、基于知网的概念特征提取方法
    对于文本的处理,尤其是中文文本处理,字、词、短语等特征项是处理的主要对象。但是字、词、短语更多体现的是文档的词汇信息,而不是它的语义信息,因而无法准确表达文档的内容;大多数关于文本特征提取的研究方法只偏重考虑特征发生的概率和所处的位置,而缺乏语义方面的分析;向量空间模型最基本的假设是各个分量间正交,但作为分量的词汇间存在很大的相关性,无法满足模型的假设。基于概念特征的特征提取方法是在VSM的基础上,对文本进行部分语义分析,利用知网获取词汇的语义信息,将语义相同的词汇映射到同一概念,进行概念聚类,并将概念相同的词合并成同一词。用聚类得到的词作为文档向量的特征项,能够比普通词汇更加准确地表达文档内容,减少特征之间的相关性和同义现象。这样可以有效降低文档向量的维数,减少文档处理计算量,提高特征提取的精度和效率。

    五、可创新点
    一、文本特征提取及文本挖掘在军事情报领域的应用研究

    二、新的文本特征表示模型

    考虑使用二级向量进行文本特征建模,关键词向量能快速定位用户的兴趣领域,而扩展词向量能准确反映用户在该领域上的兴趣偏好。结合领域知识,采用概念词、同义词或本体来代替具体的关键词成为特征词,体现语义层面的需求和分析。

    三、军事情报领域专业主题词库、敏感词库的构造

    通过人机结合的方式,建立军事情报领导的最佳关键词表,即主题词库,或者语义库。将专业词库应用于军事系统的分词、特征提取、分类、信息抽取和监控、文本挖掘等方面。
    

    四、改进分词算法

    利用专业词库改进中科院ICTCLAS分词系统(JAVA开源版),并针对特征提取需要,改进分词步骤,直接在分词过程中剔除无意义词语,增加词语附加信息,集成相关因素影响值的计算,加快系统速度和效率。
    

    五、改进特征评价函数

    将影响因素中的经验知识通过实验和验算定量表示(如位置影响、高频词权值增加),形成可行的非性线加权公式。探索二次迭代算法,在初次文本分析基础上,记录文本的结构组成特征,记录候选特征词,记录文档集的组成特征,然后根据加权理论调整算法,第二次计算词的权值,最终提取高准确度的特征词集。
    
    更多相关内容
  • 详细介绍文本数据的四种表示模型,以及常见的6种文本数据的特征选择方法
  • 导读介绍了一些传统但是被验证是非常有用的,现在都还在用的策略,用来对非结构化的文本数据提取特征。介绍在本文中,我们将研究如何处理文本数据,这无疑是最丰富的非结构化数据来源...

    导读

    介绍了一些传统但是被验证是非常有用的,现在都还在用的策略,用来对非结构化的文本数据提取特征。


    介绍

    在本文中,我们将研究如何处理文本数据,这无疑是最丰富的非结构化数据来源之一。文本数据通常由文档组成,文档可以表示单词、句子甚至是文本的段落。文本数据固有的非结构化(没有格式整齐的数据列)和嘈杂的特性使得机器学习方法更难直接处理原始文本数据。因此,在本文中,我们将采用动手实践的方法,探索从文本数据中提取有意义的特征的一些最流行和有效的策略。这些特征可以很容易地用于构建机器学习或深度学习模型。

    动机

    特征工程通常被称为创建性能更好的机器学习模型的秘密武器。只要有一个出色的特征就可能是你赢得Kaggle挑战的门票!特征工程的重要性对于非结构化的文本数据更为重要,因为我们需要将自由流动的文本转换成一些数字表示形式,然后机器学习算法就可以理解这些数字表示形式。即使出现了自动化的特征工程,在将不同的特征工程策略应用为黑盒模型之前,你仍然需要理解它们背后的核心概念。永远记住,“如果给你一盒工具来修理房子,你应该知道什么时候使用电钻,什么时候使用锤子!

    理解文本数据

    我相信你们所有人都对这个场景中包含的文本数据有一个合理的概念。请记住,文本数据总是可以以结构化数据属性的形式存在,但通常这属于结构化分类数据的范畴。

    640?wx_fmt=png

    在这个场景中,我们讨论的是单词、短语、句子和整个文档形式的自由流动文本。本质上,我们有一些句法结构,比如单词组成短语,短语组成句子,句子又组成段落。然而,文本文档没有固有的结构,因为可以有各种各样的单词,这些单词在不同的文档中会有所不同,而且与结构化数据集中固定数量的数据维度相比,每个句子的长度也是可变的。

    特征工程策略

    让我们看看一些流行的和有效的策略来处理文本数据,并从中提取有意义的特征,这些特征可以用于下游的机器学习系统。请注意,你可以在https://github.com/dipanjanS/practical-machine-learning-with-python中访问本文中使用的所有代码,以供将来参考。我们将从加载一些基本的依赖项和设置开始。

     import pandas as pd
     import numpy as np
     import re
     import nltk
     import matplotlib.pyplot as plt
     pd.options.display.max_colwidth = 200
     %matplotlib inline

    现在,让我们以一个示例文档语料库为例,我们将在该语料库上运行本文中的大部分分析。corpus是具有一个或多个主题的文本文档集合。

     corpus = ['The sky is blue and beautiful.',
               'Love this blue and beautiful sky!',
               'The quick brown fox jumps over the lazy dog.',
               "A king's breakfast has sausages, ham, bacon, eggs, toast and beans",
               'I love green eggs, ham, sausages and bacon!',
               'The brown fox is quick and the blue dog is lazy!',
               'The sky is very blue and the sky is very beautiful today',
               'The dog is lazy but the brown fox is quick!'    
     ]
     labels = ['weather', 'weather', 'animals', 'food', 'food', 'animals', 'weather', 'animals']
     
     corpus = np.array(corpus)
     corpus_df = pd.DataFrame({'Document': corpus,
                               'Category': labels})
     corpus_df = corpus_df[['Document', 'Category']]

    640?wx_fmt=png

    可以看到,我们已经为我们的toy语料库获取了一些属于不同类别的文本文档示例。像往常一样,在讨论特征工程之前,我们需要进行一些数据预处理或整理,以删除不必要的字符、符号和tokens。

    文本预处理

    可以有多种方法来清理和预处理文本数据。在接下来的几点中,我们将重点介绍在自然语言处理(NLP)中大量使用的一些最重要的方法。

    • 删除标签:我们的文本经常包含不必要的内容,如HTML标签,分析文本的时候这不会增加多少价值。BeautifulSoup库可以帮我们做很多必须的工作。

    • 删除重音字符:在任何文本语料库中,特别是在处理英语时,通常可能要处理重音字符/字母。因此,我们需要确保将这些字符转换并标准化为ASCII字符。一个简单的例子是将é转换为e

    • 扩展缩略语:在英语中,缩略语基本上是单词或音节的缩写形式。这些现有单词或短语的缩略形式是通过删除特定的字母和声音来创建的。例如,do not变为don 't以及I would 变为I 'd 。将每个缩略语转换为其扩展的原始形式通常有助于文本标准化。

    • 删除特殊字符:非字母数字字符的特殊字符和符号通常会增加非结构化文本中的额外噪音。通常,可以使用简单正则表达式(regexes)来实现这一点。

    • 词根提取和词形还原:词干通常是可能的单词的基本形式,可以通过在词干上附加词缀,如前缀和后缀来创建新单词。这就是所谓的拐点。获取单词基本形式的反向过程称为“词根提取”。一个简单的例子是单词WATCHESWATCHING,和WATCHED。它们以词根WATCH作为基本形式。词形还原与词根提取非常相似,在词根提取中,我们去掉词缀以得到单词的基本形式。然而,在这种情况下,基本形式被称为根词,而不是词根。不同之处在于,词根总是一个词典上正确的单词(存在于字典中),但根词的词干可能不是这样。

    • 删除停止词:在从文本中构造有意义的特征时,意义不大或者没有意义的词被称为停止词或停止词。如果你在语料库中做一个简单的词或词的频率,这些词的频率通常是最高的。像aantheand等词被认为是停止词。没有一个通用的停止词列表,但是我们使用了一个来自“nltk”的标准英语停止词列表。你还可以根据需要添加自己的域特定的停止词。

    640?wx_fmt=png

    除此之外,你还可以执行其他标准操作,如标记化、删除额外的空格、文本小写转换和更高级的操作,如拼写纠正、语法错误纠正、删除重复字符等等。

    由于本文的重点是特征工程,所以我们将构建一个简单的文本预处理程序,该程序的重点是删除特殊字符、额外的空格、数字、停止词和把文本语料库的大写变成小写。

     wpt = nltk.WordPunctTokenizer()
     stop_words = nltk.corpus.stopwords.words('english')
     
     def normalize_document(doc):
         # lower case and remove special characters\whitespaces
         doc = re.sub(r'[^a-zA-Z\s]', '', doc, re.I|re.A)
         doc = doc.lower()
         doc = doc.strip()
         # tokenize document
         tokens = wpt.tokenize(doc)
         # filter stopwords out of document
         filtered_tokens = [token for token in tokens if token not in stop_words]
         # re-create document from filtered tokens
         doc = ' '.join(filtered_tokens)
         return doc

    一旦我们准备好了基本的预处理pipeline,我们可以将其应用于示例语料库。

     norm_corpus = normalize_corpus(corpus)
     norm_corpus
     Output
     ------
     array(['sky blue beautiful', 'love blue beautiful sky',
            'quick brown fox jumps lazy dog',
            'kings breakfast sausages ham bacon eggs toast beans',
            'love green eggs ham sausages bacon',
            'brown fox quick blue dog lazy',
            'sky blue sky beautiful today',
            'dog lazy brown fox quick'],
           dtype='<U51')

    上面的输出应该可以让你清楚地看到我们的每个示例文档在预处理之后的样子。现在让我们来设计一些特征!

    词袋模型

    这可能是非结构化文本最简单的向量空间表示模型。向量空间模型只是一个数学模型,它将非结构化文本(或任何其他数据)表示为数值向量,这样向量的每个维度都是一个特定的特性\属性。单词包模型将每个文本文档表示为一个数字向量,其中每个维度都是来自语料库的特定单词,其值可以是其在文档中的频率、出现频率(用1或0表示),甚至是加权值。模型的名称是这样的,因为每个文档都按照字面意思表示为自己单词的“包”,不考虑单词顺序、序列和语法。

     from sklearn.feature_extraction.text import CountVectorizer
     
     cv = CountVectorizer(min_df=0., max_df=1.)
     cv_matrix = cv.fit_transform(norm_corpus)
     cv_matrix = cv_matrix.toarray()
     cv_matrix
     Output
     ------
     array([[0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
            [0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0],
            [0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0],
            [1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0],
            [1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0],
            [0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0],
            [0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1],
            [0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0]
          ], dtype=int64)

    因此,可以看到我们的文档已经被转换成数字向量,这样每个文档都由上面的特征矩阵中的一个向量(行)表示。下面的代码将帮助以更容易理解的格式表示这一点。

     # get all unique words in the corpus
     vocab = cv.get_feature_names()
     # show document feature vectors
     pd.DataFrame(cv_matrix, columns=vocab)

    640?wx_fmt=png

    可以清楚地看到,特征向量中的每一列表示语料库中的一个单词,每一行表示我们的一个文档。任何单元格中的值表示该单词(用列表示)在特定文档中出现的次数(用行表示)。因此,如果一个文档语料库由所有文档中的N唯一单词组成,那么每个文档都有一个N维向量。

    N-Grams袋模型

    一个单词只是一个符号,通常被称为unigram或1-gram。我们已经知道词袋模型不考虑单词的顺序。但是,如果我们也想考虑按顺序出现的短语或单词的集合呢?N-gram帮助我们达到这个目的。N-gram基本上是文本文档中单词tokens的集合,这些标记是连续的,并以序列的形式出现。Bi-gram表示2阶n-grams(2个单词),Tri-grams表示3阶n-grams(3个单词),依此类推。因此,N-Grams袋模型只是词袋模型的一个扩展,因此我们也可以利用基于N-gram的特征。下面的示例描述了每个文档特征向量中基于bi-gram的特征。

     # you can set the n-gram range to 1,2 to get unigrams as well as bigrams
     bv = CountVectorizer(ngram_range=(2,2))
     bv_matrix = bv.fit_transform(norm_corpus)
     
     bv_matrix = bv_matrix.toarray()
     vocab = bv.get_feature_names()
     pd.DataFrame(bv_matrix, columns=vocab)

    640?wx_fmt=png

    这为我们的文档提供了特征向量,其中每个特征由表示两个单词序列的bi-gram组成,值表示该bi-gram出现在文档中的次数。

    TF-IDF模型

    在大型语料库中使用词袋模型可能会产生一些潜在的问题。由于特征向量是基于绝对频率,可能有一些项在所有文档中都经常出现,这可能倾向于掩盖其他方面的特征。TF-IDF模型试图解决这一问题,在计算中使用了缩放或归一化因子。TF-IDF是Term Frequency- reverse Document Frequency的缩写。

    其计算方法为:词频(tf)逆文档频率(idf)。该技术是为搜索引擎中查询结果的排序而发展起来的,目前已成为信息检索和自然语言处理领域中一个不可或缺的模型。

    在数学上,我们可以将TF-IDF定义为tfidf = tf x idf,可以进一步展开为:

    640?wx_fmt=png

    这里,tfidf(w, D)是文档D中单词w的TF-IDF得分。tf(w, D)表示文档Dw的词频,可以从词袋模型中得到。idf (w, D)w这个单词的逆文档频率,可以通过计算语料库中的文档的总数C除以w这个词的文档频率的对数变换得到, 这基本上是文档的语料库词w的频率。这个模型有多种变体,但最终都得到了非常相似的结果。现在让我们把它应用到我们的语料库上!

    640?wx_fmt=png

    每个文本文档的基于TF-IDF的特征向量与原始的词袋模型值相比具有了缩放和标准化的值。

    文档相似度

    文档相似度是使用基于距离或相似度的度量的过程,该度量可用于根据从文档中提取的特征(如词袋或tf-idf)确定文本文档与任何其他文档的相似程度。

    640?wx_fmt=jpeg

    因此,可以看到,我们可以构建在上一节中设计的基于tf-idf的特征的基础上,并使用它们来生成新的特征,通过利用基于这些特征的相似性,可以在搜索引擎、文档集群和信息检索等领域中发挥作用。

    语料库中的成对文档相似性涉及到为语料库中的每对文档计算文档相似性。因此,如果在一个语料库中有C文档,那么最终将得到一个C x C矩阵,其中每一行和每一列表示一对文档的相似度得分,这对文档分别表示行和列的索引。有几个相似度和距离度量用于计算文档相似度。其中包括余弦距离/相似度、欧几里德距离、曼哈顿距离、BM25相似度、jaccard距离等。在我们的分析中,我们将使用可能是最流行和广泛使用的相似性度量,

    余弦相似度和基于TF-IDF特征向量的成对文档相似度比较。

    from sklearn.metrics.pairwise import cosine_similarity

    similarity_matrix = cosine_similarity(tv_matrix)
    similarity_df = pd.DataFrame(similarity_matrix)
    similarity_df

    640?wx_fmt=png

    余弦相似度给出了一个度量,表示两个文本文档的特征向量表示之间夹角的余弦值。文档之间的夹角越小,它们之间的距离就越近,也就越相似,如下图所示。

    640?wx_fmt=png

    仔细观察相似矩阵可以清楚地看出,文档(0,1和6)、(2,5和7)彼此非常相似,文档3和文档4彼此略有相似,但幅度不是很大,但仍然比其他文档强。这必须表明这些类似的文档具有一些类似的特性。这是一个完美的分组或聚类的例子,可以通过无监督学习来解决,尤其是在处理数百万文本文档的大型语料库时。

    使用相似特征对文档进行聚类

    聚类利用无监督学习将数据点(本场景中的文档)分组或聚集。在这里,我们将利用一种无监督的分层聚类算法,通过利用前面生成的文档特征相似性,尝试将我们的玩具语料库中的类似文档分组在一起。层次聚类算法有两种,即聚合算法和分裂算法。我们将使用一个聚合聚类算法,这是分层聚类使用自底向上的方法,即从自己的簇中开始,然后使用一个度量数据点之间距离的距离度量和一个链接合并准则将簇依次合并在一起。下图显示了一个示例描述。

    640?wx_fmt=png

    链接准则的选择控制了合并的策略。链接准则的例子有Ward、Complete、Average等。该准则对于选择每一步合并的簇对(最低级的单个文档和较高级的簇)非常有用,它基于目标函数的最优值。我们选择Ward 's minimum variance method作为我们的链接准则来最小化总簇内方差。因此,在每个步骤中,我们都找到了合并后总簇内方差增加最小的一对簇。既然我们已经有了特征相似性,让我们在示例文档上构建链接矩阵。

    from scipy.cluster.hierarchy import dendrogram, linkage
    Z = linkage(similarity_matrix, 'ward')
    pd.DataFrame(Z, columns=['Document\Cluster 1', 'Document\Cluster 2',
    'Distance', 'Cluster Size'], dtype='object')

    640?wx_fmt=png

    如果仔细查看链接矩阵,可以看到链接矩阵的每一步(行)都告诉我们哪些数据点(或簇)合并在一起。如果有n数据点,链接矩阵Z的形状将是(n - 1) x 4,其中Z[i]将告诉我们在步骤i合并了哪些集群。每一行有四个元素,前两个元素要么是数据点标识符,要么是簇标签(在矩阵的后半部分中有一次合并了多个数据点),第三个元素是前两个元素(数据点或集群)之间的簇距离,最后一个元素是合并完成后簇中元素\数据点的总数。

    现在让我们把这个矩阵形象化为一个树形图,以便更好地理解这些元素!

    plt.figure(figsize=(8, 3))
    plt.title('Hierarchical Clustering Dendrogram')
    plt.xlabel('Data point')
    plt.ylabel('Distance')
    dendrogram(Z)
    plt.axhline(y=1.0, c='k', ls='--', lw=0.5)

    640?wx_fmt=png

    我们可以看到,每个数据点开始时是一个单独的簇,然后慢慢地开始与其他数据点合并,形成聚类。从颜色和树状图的高度来看,如果考虑距离度量在1.0或以上(用虚线表示),则可以看到模型正确地识别了三个主要聚类。利用这个距离,我们得到了聚类标签。

    from scipy.cluster.hierarchy import fcluster
    max_dist = 1.0

    cluster_labels = fcluster(Z, max_dist, criterion='distance')
    cluster_labels = pd.DataFrame(cluster_labels, columns=['ClusterLabel'])
    pd.concat([corpus_df, cluster_labels], axis=1)

    640?wx_fmt=png

    可以清楚地看到,我们的算法根据分配给文档的聚类标签正确地标识了文档中的三个不同类别。这将使你对如何利用TF-IDF特征来构建相似特征有一个很好的了解,而相似特征反过来又有助于对文档进行聚类。

    总结

    这些示例应该让你对文本数据上的特征工程的流行策略有一个很好的了解。请记住,这些都是基于数学、信息检索和自然语言处理概念的传统策略。因此,随着时间的推移,这些经过尝试和测试的方法在各种数据集和问题中都证明是成功的。下一步将是利用文本数据上的特性工程的深度学习模型的详细策略!


    640?wx_fmt=png
    — END—


    英文原文:https://towardsdatascience.com/understanding-feature-engineering-part-3-traditional-methods-for-text-data-f6f7d70acd41

    640?wx_fmt=jpeg

    请长按或扫描二维码关注本公众号



    推荐阅读:

    640?wx_fmt=jpeg
    Python与算法社区
    长按二维码,关注我的公众号
    展开全文
  • 常见文本相似度计算方法简介

    千次阅读 多人点赞 2020-04-25 20:51:16
    本文首发于知乎(https://zhuanlan.zhihu.com/p/88938220),主要介绍了文本相似度计算的基本思路和常用方法

    0引言

    在自然语言处理任务中,我们经常需要判断两篇文档是否相似、计算两篇文档的相似程度。比如,基于聚类算法发现微博热点话题时,我们需要度量各篇文本的内容相似度,然后让内容足够相似的微博聚成一个簇;在问答系统中,我们会准备一些经典问题和对应的答案,当用户的问题和经典问题很相似时,系统直接返回准备好的答案;在监控新闻稿件在互联网中的传播情况时,我们可以把所有和原创稿件相似的文章,都看作转发,进而刻画原创稿件的传播范围;在对语料进行预处理时,我们需要基于文本的相似度,把重复的文本给挑出来并删掉……总之,文本相似度是一种非常有用的工具,可以帮助我们解决很多问题。

    这里对计算文本相似度涉及的模型和算法,进行简要的整理。

    1文本相似度计算任务的简单分析

    文本的相似性计算,是我们常说的“文本匹配任务”的一种特殊情况。

    1.1任务目标

    一般来说,文本相似度计算任务的输入,是两篇文档,比如表1-1的前两个句子;输出是两篇文档的相似程度,通常用[0,1]区间内的小数来表示。作为一个懂人话的人类,我知道句子1和句子2的内容是一样的,并认为计算二者的相似性非常简单。

    假如说,我们要判断1万对文档的相似性,或者在1秒内判断100对文档的相似度呢?那我就不行了,需要上机器。

    大家在生活里和可能已经用到了文本相似度计算支持的东西。很多产品(APP,网站,导游机器人等等)配备了问答系统,允许用户用自然语言向系统发出各种请求。系统会理解用户的语言,然后返回一定形式的内容并展示在终端展里,作为对用户的回答。有些问题比较经典,大家经常问到。工程师或者领域专家会把这些问题和对应的答案收集并存储起来——当用户再次问到类似的问题时,直接返回现成的答案即可。“类似”与否的判断,需要使用文本相似度计算来支持。

    那么,如何让机器替我们完成文本相似度的计算呢?

    表1-1 我对机器人说的话

    序号

    问句

    问题答案pairs

    问句

    答案

    1

    我想去厕所

    厕所位置是哪里?

    左手边直走30米。请看我的地图…

    2

    撒尿哪里走?

    3

    请问卫生间在哪里?

    4

    请问厕所在哪里?

    5

    饿死了,有啥建议啊?

    附近的餐厅在哪里?

    左手边直走31米。请看地图…

     

    1.2候选方案

    文本相似度计算方法有2个关键组件,即文本表示模型和相似度度量方法,如表1-2。前者负责将文本表示为计算机可以计算的数值向量,也就是提供特征;后者负责基于前面得到的数值向量计算文本之间的相似度。

    从文本表示模型和相似度度量方法中选择合适的,就可以组合出一个文本相似度计算方案。

    表1-2 常见的文本表示模型和相似度度量方法

    文本表示模型

    相似度度量方法

    文本切分粒度

    特征构建方法

    原始字符串

    ngram

    词语

    句法分析结果

    主题模型

     

     

    TF

    TF-IDF

    句向量

    词向量

    Simhash

     

     

    最小编辑距离

    欧氏距离

    余弦距离

    杰卡德相似度

    海明距离

    分类器

     

    使用这个菜单里的选项,我们可以组合出非常多的文本相似度计算方案。那么,每一种方案都可以用来解决什么样的任务呢?要回答这个问题,需要了解一下每一个组件的原理和特点。

     

     

    2有监督和无监督的文本相似性计算

    文本相似度计算方法分为有监督和无监督两类。

    有监督方法,就是用朴素贝叶斯分类器之类的有监督模型来判断文本相似性或者计算相似度。这类方法要求有一定数量的标注语料,构建的代价比较高;由于训练语料通常无法做得很大,模型的泛化性不够,实际用起来会有点麻烦;距离计算环节的复杂度会比较高。

    无监督方法,就是用欧氏距离等方法,直接计算文本之间的距离或者相似度。这类方法的特点是:不需要标注语料,特征工程或者参数估计可以使用很大的数据;很多方法对语言的依赖比较小,可以应对多语种混杂的场景;距离计算环节复杂度较低。

    通常来说我们首先考虑无监督模式。

    3文本切分粒度

    3.1n-gram

    我们常说的“n-gram语言模型“,指的是一类使用相同文本切分方式的语言模型。这种切分方式非常简单:使用一个长度为n的窗口,从左到右、逐字符滑过文本;每一步,会框到一个字符串,就是一个gram;文本里所有的gram就是该文本的切分结果。如表3-1所示,是几种常见的n-gram切分结果。

    表3-1 “我爱北京天安门”的n-gram表示

    序号

    N取值

    名称

    切分示例

    1

    1

    unigram

    我/爱/北/京/天/安/门

    2

    2

    bigram

    我爱/爱北/北京/京天/天安/安门

    3

    3

    trigram

    我爱北/爱北京/北京天/京天安/天安门

     

    n-gram越长,词表越大。一份中文语料的Trigram词表可以达到上百万的规模。要是来个quadgram,由于内存消耗较大、特征很稀疏,我们的工作会很难开展。

    3.2分词

    另外一种文本切分方式就是分词,比如将“我爱北京天安门”切分为“我/爱/北京/天安门”。分词的目的是将文本切分为有句法意义的一个个小单元,便于人和机器理解文本的内容。

    在NLP进入深度学习时代之前,分词是中文信息处理的基础任务。语言这种序列数据,具有很强的时间/空间相关性。在一段文本序列的某些位置,会出现相关性特别高的若干连续字符,比如“我爱北京天安门”里的“天安门”,这3个字符内部之间的相关性明显高于它们同其他字符的相关性。

    相比n-gram,分词的优势是,在字符相关性较小的位置进行切分、造成的信息损失比较小。由于分词降低了文本的相关性,可以提升一些带有独立性假设的模型。

    当然,ngram由于极高的计算速度,仍然占有一定的市场。

    3.3句法分析

    我们可以基于句法分析的结果,从文本中抽取短语,作为文本的表示。这样得到的特征非常稀疏,适合精度要求较高的场景。

    3.3.1粗暴版句法分析

    我们可以用一些规则或者模型,从文本中提取特定的词语组合,作为文本的切分结果。比如用“第一个名词+第一个动词+第二个名词”这个规则处理“我爱北京天安门”的结果是“我+爱+北京”。

    3.3.2正经句法分析

    可以使用正经的句法分析工具,提取“主+谓+宾”之类的,作为文本的切分结果。句法分析的耗时比较高,适合数据量小的场景。

    3.4主题模型

    可以使用主题模型来提取文本的主题,用主题词来表示文本。常见的主题模型有PLSA、LDA以及它们的变种(LSA适用于教学场景;还有很多优秀的主题模型,所知甚少,不多介绍)。主题模型在训练的过程中,学习到了语料的全局信息,因此具有一定的“联想”或者说“推理”能力,可以基于文档内容推测出文档字面没有明说的一些信息。因此,主题模型可以处理一些需要关注隐藏信息的场景。

    当然了,主题模型的训练比较慢、对语料规模和质量有较高的要求,因此考虑是否使用的时候需要慎重。

    4特征构建方法

    文本相似度计算任务的第二步,是用数值向量表示文本的内容。通常,我们会用一个数值向量描述文本在语义空间中的位置。

    4.1TF与TF-IDF

    4.1term frqeuncy向量

    词袋模型(bag of words)假设,文本里的term(虽然名字里是”words”,实际上我们也可以用n-gram之类的切分方式)之间相互独立,也就是词语A的出现和词语B的出现没有关系。

    我们可以用独热编码表示所有的term,然后对文本中的term去重,最后把得到的term的编码加起来,就得到了TF向量。

    TF向量对常用词比较友好。假设有一份红学文集构成的语料,里面“红楼梦”“贾宝玉”这样的词语几乎会出现在每一篇文档里,相应的频率还很高。结果就是这样的词语“统治”了TF向量,导致两篇文档比较相似。换句话说,TF对文档的区分能力比较低。

    4.2词向量和句向量

    4.3simhash

    4.3.1simhash简介

    Simhash是敏感哈希算法在文本特征提取任务中的应用。它会把一篇文档映射为一个长度为64、元素值为0或1的一维向量。这样我们就可以使用某种距离计算方式,计算两篇文本的距离和相似度了。一般来说,与simhash配合的是海明距离。

    4.3.2simhash的适用场景

    Simhash的特点是,对文本的“相同”与否特别敏感:当两篇文档相同时,相似度为1;当其中一篇略有不同,相似度会有明显降低。因此非常适合用来判断两篇文档内容是否相同。

    另外simhash的计算比较简单,速度上有一定优势。如果配合一定的检索策略来召回候选相似文档,simhash可以用来对海量文档进行去重——这就是simhash最常见的一个应用场景。

    5距离的度量方式

    假设表1-1的3句和4句分词结果分别为:

    5.1欧氏距离

    5.1.1欧氏距离的计算方法

    假设我们有两个数值向量,表示两个实例在欧式空间中的位置:

     

    二者的欧氏距离是这样计算的:

     

    如图5-1,二维空间(平面)里有两个点 和   。二者在X轴上的差异大小是 ,在Y轴上的差异是  。综合两个坐标轴上的差异,就得到了两点之间的距离:   。

    欧式距离是最符合我们直觉的一种距离度量方式。它认为事物的所有特征都是平等的。两个实例在所有维度上的差异的总和,就是二者的距离。

     

    图5-1 二维空间中的两个点的距离

     

    5.1.2基于欧式距离的文本相似度计算

    假设我们的词汇表是(部分词语在特征选择中删掉了):

    那么两个句子对应的TF向量分别是:

    二者的欧氏距离为:

    这样,我们就可以计算相似度了,常用的方式是:

     

    分母中的”1”用来保证相似度最高是1。当然,相似度可以根据场景要求花式定义。

    5.2余弦距离

    5.2.1余弦距离的计算方式

    余弦距离来源于向量之间夹角的余弦值。假设空间中有两个向量:

    那么二者的夹角的余弦值等于:

    这个计算方式是可以推导出来的——由于形式简单,我们可以把它当做勾股定理这样的知名定理来对待。如图5-2,是二维平面上,两个向量之间夹角的示意图,我们可以基于勾股定理凑出上面的式子。

    图5-2 二维空间中两个向量的夹角

    5.2.2基于余弦距离的文本相似度

    向量的夹角余弦值可以体现两个向量在方向上的差异,因此我们可以用它来度量某些事物的差异或者说距离。

    在文本相似度计算任务中,为了让数据适合余弦夹角的概念,人们假想:语义空间中存在一个“原点”;以原点为起点、文本特征数组(这里为了避免与“语义向量”混淆,借用了“数组”这个名称)表示的点为终点 ,构成了一个向量,这就是代表了文本语义的“语义向量”。语义向量的方向,描述了文本的语义。因此,我们可以用两篇文档的语义向量的夹角余弦值来表示它们的差异。这个余弦值通常被称为“余弦距离”。

    提取文本特征后,可以将数值向量套入前面的余弦值计算公式,既可以得到两篇文本的余弦距离:

    余弦值的取值范围是[0,1],我们可以用一个简单的方式得到余弦相似度:

     

    当文本特征维度比较高的时候,在余弦距离的视角下,文本之间的区分度越来越小。

    这导致我们在设定“是否相同”的阈值时,遇到困难。因此余弦距离比较适用于文本较短,也就是特征维度较低的场景。

    5.3Jacard相似度

     

    5.3.1杰卡德相似度的计算方式

    杰卡德相似度一般被用来度量两个集合之间的差异大小。假设我们有两个集合A和B,那么二者的杰卡德相似度为:

    杰卡德距离的思想非常简单:两个集合共有的元素越多,二者越相似;为了控制距离的取值范围,我们可以增加一个分母,也就是两个集合拥有的所有元素。

    5.3.2基于杰卡德相似度的文本相似度计算

    我们可以把文档看做是词语的集合,然后用杰卡德距离相似度度量文档之间的差异。

    words3={"请", "问","卫生间","在","哪里", "?"}

    words4={"请", "问","厕所","在","哪里", "?"}

     

    表1-1的3句和4句的杰卡德相似度就是:

     

    我们可以基于这个距离计算得到杰卡德距离:

     

    5.3.3杰卡德相似度的改装

    我的同事兰博同学认为,杰卡德相似度忽略了文本长度差异。“我让你三掌!”和“我让你三掌!我让你三掌!我让你三掌!”这两句话,使用杰卡德相似度得到的相似度是1,即完全相同。事实上,二者的含义还是略有区别的(一般来说,重要的事情才需要说三遍)。如何区分这两句话呢?

    他的解决思路是,在杰卡德相似度的分母增加一个对文本长度差异的惩罚:

    式中α是一个超参数,可以根据相似度的效果调试大小。

    5.4海明距离

    海明距离是simhash算法的御用距离算法。

    5.4.1海明距离的计算方式

    海明距离的计算方式非常简单。如5.1.1所述,两个句子可以用词袋模型来表示:

    我们比较两篇文档的特征向量的每一个维度,判断各个维度上取值是否相等。不相等的维度越多,两篇文档差异越大。海明距离的计算方式如下:

    其中,

    5.4.2基于海明距离的文本相似度

    换个角度,两篇文档的特征向量里,相等的维度越多,相似度就越大。相似度的计算方法如下:

    s 

    其中,

    5.5最小编辑距离

    最小编辑距离是一种经典的距离计算方法,用来度量字符串之间的差异。它认为,将字符串A不断修改(增删改)、直至成为字符串B,所需要的修改次数代表了字符串A和B的差异大小。当然了,将A修改为B的方案非常多,选哪一种呢?我们可以用动态规划找到修改次数最小的方案,然后用对应的次数来表示A和B的距离。

    从定义上可以看出,最小编辑距离比较适合判断字面上的相似性,对文本字语义上的相似性无能为力。

    6结语

    相似度计算不光在文本数据处理里经常用到,在图像、音频、生物信息等等类型数据的处理中也有很高的出场率。对应地,相似度计算可以帮助我们解决生产活动里的很多具体问题。因此,它是一种非常有用的方法,值得我们仔细琢磨。

    判断事物之间的相似性,是我们需要和喜欢的一种活动。我们在生活中,无时不刻在进行着一种活动:判断接触到的事物是否从未见过;如果没见过,就会思考哪些已知的东西和它类似;如果它太独特、可借鉴的经验很少,就认为它是一种新的事物;如果有很多类似的已知事物,我们会基于经验对它分析一波,并在这个基础上快速地加以了解。

    最近查找资料的时候,发现一些朋友未经我的允许,也未注明转载来源,直接使用了我的文章——更可气的是,还是以“原创”的名义。这种侵犯知识产权的事情,以前、现在和以后会一直发生。比如我当年没少下载各种免费的音乐资源。今后几年我国会大力建设知识产权保护环境,大家的知识产权意识也会提升,这种情况应该会越来越少。

     

    展开全文
  • 文本分类-特征选择方法

    千次阅读 2017-10-20 17:56:27
    文本分类-特征选择方法 一、概念 特征词选择和特征词权重 ... 常见的且基础的文本特征选择的算法基于文档频率(DocumentFrequency)、信息增益(InformationGain,IG)、开方拟和检验方法(CHI统计)、互信息(mut

    文本分类-特征选择方法

    一、概念

       特征词选择和特征词权重

       1.特征词选择:特征词选择是为了降低文本表示的维度,而特征词权重是为了表示文本表示中每一个特征项的重要程度。

       常见的且基础的文本特征选择的算法有基于文档频率(DocumentFrequency)、信息增益(InformationGain,IG)、开方拟和检验方法(CHI统计)、互信息(mutualInformation)、潜在语义分析LSA、期望值交叉算熵、文本证据权、termstrength(TS)、GSSCoefficient、oddsratio。

       

       2.特征词权重:每一个特征项的重要程度

       常见的算法:TF-IDF,TF的改进,信息熵的引用

       3.区别:特征词选择是为了降低文本表示的维度,而特征词权重是为了表示文本表示中每一个特征项的重要程度。

    二、特征选择方法总结

       1.文档频率

       词条的文档频率(document frequency)是指在预料中出现该词条的文档的数目。只有当某词条在较多的文档中出现时才被保留下来,DF值低于某个阈值的词条是低频词,将这样的词条从原始特征空间中移除,不但能够降低特征空间的维数,而且还有可能提高分类的精度。

        DF是一种最简单的词约简技术,由于具有相对于预料规模的线性复杂度,所以它能够容易地被用于大规模的语料特征选择中。

        缺点:对低文档频的特征项不可靠,而且不能说明词条和类别的相关性

       2.互信息

       在互信息算法中,采用计算特征词 t 和类别 c 之间的相关度:

    其中, A 为在类别 c 中特征词 t 出现的文档数; B 为在除了类别 c 的其他类别中特征词 t 出现的文档数; C 为在类别 c 中特征词 t 未出现的文档数; N 为所有类别中的文档数的总和。如果共有 m 个类别,那么每个特征词将得到 m 个相关度值,取这 m 个值的平均值作为每个特征词的权值,权值大的特征词被保留的可能性大。

        

       3. 信息增益

       信息增益 (IG) 是公认较好的特征选择方法,它刻画了一个词语在文本中出现与否对文本情感分类的影响,即一个词语在文本中出现前后的信息嫡之差。某个词语的信息增益值越大,说明它对分类的贡献就越大。信息增益的计算见公式:

    P(Ci) ,表示类别 Ci 出现的概率,其实只要用 1 除以类别总数就得到了(这是说你平等的看待每个类别而忽略它们的大小时这样算,如果考虑了大小就要把大小的影响加进去)。

    P(t) ,就是特征 t 出现的概率,只要用出现过 t 的文档数除以总文档数就可以了

    P(Ci|t) 表示出现 t 的时候,类别 Ci 出现的概率,只要用出现了 T 并且属于类别 Ci 的文档数除以出现了 T 的文档数就可以了

       缺点 :信息增益最大的问题还在于它只能考察特征对整个系统的贡献,而不能具体到某个类别上,这就使得它只适合用来做所谓 “ 全局 ” 的特征选择(指所有的类都使用相同的特征集合),而无法做 “ 本地 ” 的特征选择(每个类别有自己的特征集合,因为有的词,对这个类别很有区分度,对另一个类别则无足轻重)。

       4. 开方拟和检验方法 (CHI 统计 ) 

       开方检验最基本的思想就是通过观察实际值与理论值的偏差来确定理论的正确与否

       5. 潜在语义分析LSA

       LSA思想方法最初应用于文本信息检索领域有效地解决了同义词和多义词的问题,通过识别文本中的同义词, LSA将信息检索精度提高了10%--30%

       随着应用领域的不断拓展, LSI在信息过滤、信息分类/聚类、交叉语言检索、信息理解、判断和预测等众多领域中得到了广泛的应用。

    展开全文
  • 文本表示方法

    千次阅读 2016-11-28 17:55:06
    这里博主枚举一些主流的文本表示方法。 这里主要说的是基于文本内容的表示,顺带先扯扯基于行为的表示:不同的业务不同的表示,基于行为的文本表示如SVD,LFM等,基于用户的行为日志(如新闻点击)学习用户和文本...
  • 文本分类——常见分类模型

    万次阅读 多人点赞 2018-11-06 17:37:56
      文本分类方法模型主要分为两个大类,一类是基于规则的分类模型;另一类是基于概率统计的模型。 基于规则的模型   基于规则的分类模型相对简单,易于实现。它在特定领域的分类往往能够取得较好的效果。相对于...
  • 文本分类——特征选择概述

    万次阅读 2018-11-06 15:33:36
    内容提要特征选择概述常见模型文档频率(DF)卡方校验(CHI)信息增益(IG)互信息(MI) 特征选择概述   在向量空间模型中,文本可以选择字、词组、短语、甚至“概念”等多种元素表示。这些元素用来表征文本的性质,区别...
  • 1 文件读取全文本操作在一定场景下我们需要把文本全部内容读取出来,进行处理。python提供三种函数读取文件,分别是read readline readlines,read():读取文件的全部内容,加上参数可以指定读取的字符。readline()...
  • 文本相似度的方法对比

    千次阅读 2018-09-10 10:34:44
    在这篇博文中,作者比较了各种计算句子相似度的方法,并了解它们是如何操作的。词嵌入(word embeddings)已经在自然语言处理领域广泛使用,它可以让我们轻易地计算两个词语之间的语义相似性,或者找出与目标词语最...
  • 一、概念 二、特征选择方法总结   一、概念 ... 常见的且基础的文本特征选择的算法基于文档频率(DocumentFrequency)、信息增益(InformationGain,IG)、开方拟和检验方法(CHI统计)、互信息(mutua...
  • 文本分类中的降维方法总结

    万次阅读 2017-08-18 11:16:11
    人们通常采用向量空间模型来描述文本向量,但是如果直接用分词算法和词频统计方法得到的特征项来表示文本向量中的各个维,那么这个向量的维度将是非常的大。 这种未经处理的文本矢量不仅给后续工作带来巨大的计算...
  • 详解常见的汉字的输入方法

    千次阅读 2021-07-24 00:38:11
    常见汉字的输入方法,各有千秋,你可以根据自己的实际情况选择一种进行学习,最好能够比较熟练地掌握一种,今天就跟小编一起来学习和了解汉字的输入吧.输入法专门的程序,图标在任务栏的右下角,一个键盘的图标 ,...
  • 本文将详细讲解数据预处理、Jieba分词和文本聚类知识,这篇文章可以说是文本挖掘和自然语言处理的入门文章。两万字基础文章,希望对您有所帮助。欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列...
  • html表单元素有哪些

    千次阅读 2021-06-14 03:30:55
    HTML中常用的表单元素包括:文本区域(TEXTAREA),列表框(SELECT),文本输入框(INPUT type=text),密码输入框(INPUT type=password),单选输入框(INPUT type=radio),复选输入框(INPUT type=checkbox),重置按钮、...
  • Excel中数据输入的方法有哪些

    千次阅读 2021-07-29 02:10:44
    目前,数据输入方法比较多,常见人工输入、计算机辅助系统转换和光电输入等方式,我们在这里介绍日常工作中易于出现、...那么,Excel数据输入的方法有哪些呢?一、外部数据导入需要导入Excel中外部数据最常见...
  • 自然语言处理中一个很常见的操作就是文本分类,比如一组新闻文本,通过分类模型,将新闻文本分为政治、体育、军事、娱乐、财经等等几大类。那么分类第一步就是文本向量化,前一篇博客讲了一些,本文可以说是前文的...
  • class_="at"属性 span=soup.find_all('span',class_="at") # for i in span: # print(i.get_text()) #select方法(CSS选择器) span1=soup.select('span[class="at"]') for m in span1: print(m.get_text()) 四、...
  • 什么是富文本编辑器? 概述: javascript Text Editor ​ 我们平常在页面上写文章 或者 后台发布文章内容、或内容描述等、一直都是用的是富文本编辑器,包括很多论坛发帖的文字窗口也是典型的富文本编辑器, 它跟...
  • 计算文本相似度的常用算法

    千次阅读 2021-03-07 14:33:43
    NLP、数据挖掘领域中,文本分析是一个很重要的领域,这助于我们去让计算机理解语言的作用和使用。文本分析是数据挖掘的重要手段,利用文本分析,我们将很快的读取到一本书、一篇文章、一段话中的关键词和核心思想...
  • quill 富文本编辑器常见问题汇总

    千次阅读 2021-05-18 22:33:18
    最近项目里用到了这个quill 富文本编辑器,网上一看,woc骂声一片。其实我觉得是中文的翻译,以及介绍不够详尽导致的,其实这个富文本编辑器还是很友善的。 官方github地址:https://github.com/quilljs/quill 官方...
  • 时候我们在网上下载了一些文档,打开之后发现全是乱码,很多用户顿时不知道怎么办,其实文档打开乱码可能是系统没有这个文字也可能是打开的软件问题,那么当你遇到文本文档乱码该怎么办呢?不懂的朋友看看小...
  • 中文文本关键词抽取的三种方法-python

    万次阅读 多人点赞 2020-07-22 22:52:23
    目前,用于文本关键词提取的主要方法有四种:基于TF-IDF的关键词抽取、基于TextRank的关键词抽取、基于Word2Vec词聚类的关键词抽取,以及多种算法相融合的关键词抽取。笔者在使用前三种算法进行关键词抽取的学习过程...
  • 文本向量的表示方法基于词向量的表示方法有监督文本表示方法 基于词向量的表示方法 虽然one-hot和TF-IDF的表示方式也成为词向量,但是我们这里讨论的基于词向量的表示方式是围绕分布式词表征进行的。也就是利用Word2...
  • 信息技术的分类方法有哪些

    千次阅读 2019-03-04 11:32:09
    信息技术的分类方法有哪些? 一、按照是否可物化为实物形态分类 按照是不否可以物化为实物形态,信息技术可 或分为“硬”信息技术和“软”信息技术两大类。硬信息技术是指各种已经或即将转化为信息设备的信息技术,...
  • 文本生成任务常见评估指标

    千次阅读 2019-05-16 15:40:55
        在传统的文本生成任务中,对于模型生成的文本,往往很难评估他们的质量,一般会采用人工投票的形式,来比较生成的文本和真实的参考文本之间的优劣或接近程度,因此,其评估过程是非常昂贵和耗时的,并且该...
  • 基于SVM的中文文本分类方法

    千次阅读 2017-06-15 16:50:21
    基于SVM的中文文本分类方法 1、文本分类简介 文本分类(Text Classification)是将文本文档与规定好的类别进行匹配的过程。文本分类可以分为训练和分类两个阶段,其对应的流程图如下面的图1.1和图1.2所示: 图...
  • 自然语言处理—文本分类综述/什么是文本分类

    千次阅读 多人点赞 2021-11-22 15:11:42
    最近在学习文本分类,读了很多博主的文章,要么已经严重过时(还在一个劲介绍SVM、贝叶斯),要么就是机器翻译的别人的英文论文,几乎看遍全文,竟然没有一篇能看的综述,花了一个月时间,参考了很多文献,特此写下此...
  • Google发布天马-地表最强文本摘要生成模型,打败人类,我只要1000个样本) 背景 机构:Google Research 作者:Jingqing Zhang, Yao Zhao, Mohammad Saleh, Peter J. Liu 论文地址:https://arxiv.org/abs/1912.08777 ...
  • 文本向量化的方法

    万次阅读 2017-02-10 16:54:40
    向量空间模型(Vector Space Model)[3],又称词袋表示法,文本被表示为向量,文本 d 被看成由二元特征组成的特征向量。 一般是先选择特征,再计算权重,特征选则的方式见前一篇文章。权重一般用ifidf, 词...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 257,551
精华内容 103,020
热门标签
关键字:

常见的选择文本的方法有哪些