上一篇中,主要说的就是词袋模型。回顾一下,在进行文本分类之前,我们需要把待分类文本先用词袋模型进行文本表示。首先是将训练集中的所有单词经过去停用词之后组合成一个词袋,或者叫做字典,实际上一个维度很大的向量。这样每个文本在分词之后,就可以根据我们之前得到的词袋,构造成一个向量,词袋中有多少个词,那这个向量就是多少维度的了。然后就把这些向量交给计算机去计算,而不再需要文本啦。而向量中的数字表示的是每个词所代表的权重。代表这个词对文本类型的影响程度。
在这个过程中我们需要解决两个问题:1.如何计算出适当的权重。2.如何把词袋给缩小,后面会说到的其实就是降维的思想
先来解决第一个问题:如何计算权重?
上篇说过,使用词频来计算权重是个没什么人去用的方法。而我们大都会使用地球人都知道的算法:TF/IDF
TF/IDF 用来评估一个词在训练集中对某个文本的重要程度。其中TF表示的是某个词在文本中出现的频率也就是词频啦,用公式表示就是:
那IDF是什么呢?IDF叫做逆向文件频率: 计算公式是:
|D| 表示训练集的总文档数|{j:t¡Εdj}|表示包含词ti的所有文档
一般由于|{j:t¡Εdj}|可能会为0,所以分母+1,这么表示:
意思就是文档总数除以包含该词的文档数再取对数。具体意思是啥呢,就是说如果包含某个词的文档很少很少,那么这个词就非常具有区分度。这个道理很好理解,大多数文章都会包含"的" ,而大部分关于搜索引擎的文章才会包含"索引",那么"索引"这个词就比"的"更具有区分度。
而TF/IDF的方法是将TF/IDF结合