在面对文本型特征时,大致可以分为两种。
一是枚举类型,比如:男女,小学生初中生高中生大学生……这种类型下类别一般不会超过百种,那么就可以使用 哑编码(one-hot)来处理。
另一种就是真正意义上的文本,一条评论或是一篇文章。对于这样的数据,我们介绍两种方法:
(1)、词袋法。
什么是词袋法?将文本当作一个无序的集合,可以采用文本中的词条T进行体现,那么文本中出现的所有词条以及其出现的次数就可以体现文档的特征。
即,将文章分成一个个词语,然后统计各个词语的次数。
但是这样做法一般情况下都会造成分出词语过多,尤其无用词语过多,例如“是”,“的”,“啊”等无意义的词语。为了处理一些词袋法处理的不太好的问题,我们使用TF-IDF法。
(2)、TF-IDT。
TF-IDF如何处理上述问题。
首先,我们有语料库的概念:以{文章1:词条1 : 2个,文章1:词条2 : 3个}类似的形式去存储已有文章和词条。
然后,我们用语料库来解决无用词语的问题:
词条的重要性随着 在语料库中出现频率的增加 而减少。
比如有个关于动物的各种文章语料库,“动物”这个词在所有文章中出现的频率极高,那么“动物”这个词对于我们区分语料库中的文章有帮助吗?
并没有,也就是说 词条在语料库中出现的越少,作用才会越大。那么我们就去计算 词条在语料库中出现的频率就可以了。
IDF 就是在计算 词条在语料库中出现的频率,具体计算规则如下。
IDF(逆向文件频率):文件频率 = 包含该词的文件数 / 所有文件数。 逆向文件频率 = 所有文件数 / 包含该词的文件数。(IDF只是对文件频率取了倒数,原因很简单,按照上面讲的逻辑,文件频率与该词作用成反比,我们想要一个变量和该词作用成正比,那就取倒数喽!)
值得一提,有时候为了后面的计算和衡量,还会对IDF取个对数。
那么TF又是什么? 这个更简单了,就是词袋法的核心:该词条在文本中出现的次数。
所谓的TF-IDF = TF *IDF 。这样既保证了 该词条在文章中出现次数 与 该词作用 成正比,又保证了无用词语不会产生太大影响。