当前位置:   article > 正文

文本分类 -- 追根究底_文本互信息计算

文本互信息计算

特征提取

样本如何量化

    在对文本进行分类之前,首先要在文本里面找到特征,特征是什么呢,通常会凭着业务直觉加以选择,比如说要找垃圾邮件,根据我对垃圾邮件的认识,可能出现了一些特别的词就是垃圾邮件,比如“代考”、“淘宝”这些很可能是垃圾邮件,正常的邮件很少出现这些词,当然这些特征合不合理,需要通过数据的粗分析才能决定,选择好特征之后可以加上权重,就是说使用一个数值来描述特征强烈的程度,以及跟其他特征相比应该占有什么位置,比如说垃圾邮件包含“代考”、“淘宝”这些词,这些都是特征,这些权重可以选什么呢,可以选择布尔型的权重,有没有出现这个特征,或者使用频率作为特征,这个也是可以看做一个权重,关于权重的选择等一下会讲的,还有其他的方法等一下讲解,有了特征相当于有了维度,权重相当于是将文本看成一个样本的话,就相当于样本在相关的维度里面的取值,于是我们形成了一个向量,这个向量的每一个元素就是在每一个特征上面的权值,这个向量的话就是样本空间里面的样本点,可以理解为向量空间里面的向量,这样就将文本量化了,剩下的事情我们就在向量空间或者样本空间里面构建适当的分类器来做分类,这个分类器可能是支持向量机或者是线性分类器,贝叶斯或者神经网络等等。

    可以使用夹角余弦的方法来计算文本的相似度,如果向量重叠的话,这两个样本就很接近,夹角就非常接近于0,余弦值就会接近于1,等一下可以使用内积来描述夹角余弦的计算方法。

    如果是样本空间中的两个点,怎么说两个点很接近或者相似的呢,可以使用欧式距离或者马氏距离来判断相差多远。

如何选择文本的特征

    业务不是很懂的时候,怎么选文本特征呢,首先将邮件进行分词,将每一个词当做一个特征,实在不知道垃圾邮件里面应该出现什么词,分词是基本的工作,如果不分词的话,对汉字文本就没办法做下去了,包括垃圾邮件分类这么简单的事情。

    分词之后有很多词和是不是垃圾邮件这个事情的关系不是很大,垃圾邮件中会出现,不是垃圾邮件中也会出现,能不能将不能区分的词淘汰掉呢,只剩下一部分像“伟哥”这样明显的词呢,下面讲讲文本特征选择方法。

1、基于文本频率的特征选择方法

    首先看频率统计,就是这个词在特征文档里面出现了多少次,如果出现的太少的话,这个特征就没有什么用处,因为这个特征出现的太少的话,就没有代表性,因为很稀疏,数据很稀疏,就淘汰掉,比如说垃圾邮件里面出现了“伟哥”这个词,但是只出现了一次,但是这个特征出现的太低了,没有什么意思,所以出现频率太低的特征我们需要将他淘汰掉,但是有一些特征出现的频率很高,但是几乎在每一个邮件里面都出现了,比如说“我们”这个词,这种特征也没有什么意思,因为出现的频率太高,没有区分度,这种特征也要淘汰。

2、信息增益法

    信息增益其实在机器学习里面讲决策树的时候讲过,我们没有使用特征分类的时候,我们统计一下熵,后面就是我们利用这个进行分类之后,分成了两小类,有序程度增加了,这个熵应该会降低,我们计算一下两个熵的差别,这个就是获得的信息增益,熵减少了,就意味着有序性增强了,有序性增强的越多,就说明这个特征特别有意义。

上面的公式计算信息增益,具体的解释如上所述。

     如果现在手头上有很多词,相当于有很多个ti,这个i可能是从1到10000,一共提取出10000个词,这就是对垃圾邮件分词得到的,计算一下信息增益,算完之后哪一些信息增益比较高的,可以筛选出一批出来,高于多少的留下来,没有高于这个数的就不要了,剩下的就是你需要的词,文本分类的特征肯定不是几个或者是几十个,一般是成千上万的。

3、卡方统计量                 

                                             

               

    卡方统计量统计的是什么呢,用来计算ti和Cj之间的关联程度有多高,关联程度越高的话,卡的统计量就越大,所以如果有很多候选的词,判断一下和垃圾邮件有没有关系,就计算他们之间的卡统计量,比较大小就知道了,留下大的,小的就去掉,这个和信息增益差不多。

    Cj和~Cj表示属于Cj和不属于Cj的频次,A B C D都表示频次,出现的个数,ti就是一个特征项,~ti就是不出现这个特征项,例如Cj是垃圾邮件,~Cj就不是垃圾邮件,ti是“伟哥”这个词出现了, ~ti就是不出现“伟哥”这个词,上面的表格的意思就是“伟哥”这个词在垃圾邮件中出现了A次,别的类推,这些频率很容易通过分词数出来。

 

                                        

     卡方指标就按照这个上面的公式计算出来了,N表示的是训练语料里面文档的总数,就是有多少封邮件,包括垃圾的和非垃圾的,A D越大,结果越大,C D越大,结果越小,当结果很大的时候,说明这个特征和这个类别的关联程度很高,我们需要将特征留下来当做依据。

13-5和13-6是关于多分类的情况下卡方应该怎么计算,体育,女性,等一堆分类,特征应该跟那个分类的联系最密切呢,很简单就是将每一个卡方值计算完,然后取一个max就搞定了。

4、互信息法

    特征和文本类别的共现程度,一起出现或者一起不出现,所以这两个关系很密切,表达的就是这个意思,通过这个进行特征的淘汰。

    大概就是上面四种方法,要不就是你的业务嗅觉很敏锐,能观察出那些特征是最重要的, 如果你的业务感觉不是很敏锐的话,可以收集一大堆特征,将每一个词都保留下来,然后通过机器计算这些特征,将特征值比较小的特征去掉,保留增益值等比较大的特征,特征选取就是这么一个样子。

   上面就是特征的选取,下面讲一下如何计算特征的权重。

如何计算特征的权重

    选取出有效的特征之后,看一下特征的权重是如何计算的。

            

          

      上标列举了一些常用的计算权重的方法,可以选择布尔权重,如果这一项特征出现了就记录为1,如果特征没有出现就记录为0。

     绝对词频就是这个特征在文本里面出现了多少次,比如说电话号码在文本里面出现了多少次,出现了100次记录为100。

     倒排文档计算特征权重,比如“伟哥”这个词,一共有100封邮件,出现“伟哥”的有20封,这里就是log(100/20),倒排文档就是稀有的特征更加有用,一般来说不是特征出现的越频繁越重要的么,为什么倒过来,等一下可以看看引发的另一种指标。

tf-idf方法计算权重,,就是说某一项特征在某一个频当里面出现的频率,乘以特征的倒排频率,前一项是针对某一个文档的,后一个特征是针对所有的文档的,然后相乘,这个说明什么意思呢,首先这个特征在某一个文档里面出现的越多就说明越重要,但是这个特征如果在所有文档里面都出现的话就要将这个特征倒扣回来,就是说我们重视的特征要两者均衡,一个特征要在一个文档里面出现的多,但是如果在所有的文档里面都出现的话就没有什么意义了,所以这个tf-idf是兼顾了两者个均衡。

基于word2vec的方法对特征进行向量化,这个比较复杂,另外开一片帖子讲,核心就是讲特征词输入训练好的word2vec模型中,输出是一个向量,并且近义词向量之间的距离是很近的,能够体现词与词之间的关系。

后面的TFC和ITC是tf-idf的变形,无非就是将计算做一些更加精细的调整,简单常用的就是前面的几种,后面的变形是在精细的时候使用。

有了这些方法之后就能将向量里面的每一个值都计算出来,于是文档就完成量化了。

分类器选择

量化好之后怎么设计分类器呢,各种分类器都可以使用,包括支持向量机,神经网络,贝叶斯等等,爱用什么用什么,至于哪一种效果好呢,还需要看怎么调参以及适应的分类场景,只要效果好就可以了,具体的这些模型的使用以及原理等有空的时候具体讲解一下。

分类器的性能评估

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/239098
推荐阅读
相关标签
  

闽ICP备14008679号