核心问题
如何对文本进行进行特征提取 => 主要是找出在某一篇文档中哪些token可以对这篇文档的分类起到决定性的作用
特征选择只是从海量的特征或者数据中选择一些更具有判别不同类别意义的特征,并不是学习过程,也不会做分类,分类问题可以在之后的。
信息增益
核心思想:若把某一个单词是否在一篇文章中出现作为分类原则,比较分类前后系统的信息增益。
可以把文档变成token,然后根据文档的类别信息计算每一个token的信息增益,即,总的系统的熵,减去,出现了某token的文档的熵,和未出现此token的文档的熵。排序后找出几个信息增益最大的特征(token)。
TF-IDF
核心思想:以某一单词在某一类文档中出现的次数的多少来判断一篇文档的类型
先把文档变成token,然后再去掉stop word(停止词),然后再词根化(如果是英文文档的话)。
计算文档中词语出现的数目,得到类似下面的结果:
doc_id1 : (term1, term_frequency1), (term2, term_frequency2), etc.
doc_id2:
然后找出前K个频率最高的词作为这篇文档的特征,再进行分类。
比如有两个分类,那么我们找出这两个分类中每个分类词频率前100的词,这样我们就有2*100个词,即200个特征,然后再用分类算法进行分类。
卡方检验
核心思想:以某一个单词在一类文章中实际的出现次数和期望的出现次数之差的平方来判断这个单词是否对这篇文档的分类有影响。
先取出所有文档的token,
对每一个token(可以看成是一个特征),进行卡方检验,验证这个 token是否与结果相关,比如“篮球”是否与“体育类”相关。
比如我们共有两类“体育”和“财经”,那么我们用每一个token分别计算其对这两个类别的卡方值,然后选出比如每个类别前100(越大越说明相关),那么就有泪200个特征值,然后我们就从海量的词汇中挑选了200个特征出来 => 特征选择。
在用这200个特征做分类即可。