天然语言处理(NLP)中的不少问题,都须要给文档中的词语一个定量化的权重值,进而能够完后词语重要性的排序,类似度的计算,相关性的排序,等等。本文就目前流行的权重计算方案进行了一个列举。api
1. TF-IDFblog
wij=log(fij) x log(N/nj)排序
wij是词语j在文档i中的权重, fij是词语j在文档i中出现的频率(TF), N是全部的文档数,文章后面含义同此。文档
主要思想:若是一个词语在一篇文章中出现的频率TF高,而且在其余文档中不多出现,则认为此词语具备很好的区分能力。对区分文档最有意义的词语应该是那些在文档中出现频率高而在整个文档集合中出现频率低的词语。考虑到每一个词语区分不一样类别的能力,TF-IDF认为一个词语出现的文档频率越小,它区分不一样类别文档的能力就越大。基础
2. MI (互信息)im
这里的N是全部文档中全部词语频率的和,而不是文档数。上面公式中,分子表示的是词语j在文档i中出现的几率;分母的前一项词语j在全部文档出现的几率,后一项是文档i出现的几率。d3
互信息的意义:db
在某个特定文档出现频率高,但在其余文档出现频率比较低的词语与该文档的互信息比较大。一般用互信息做为特征词语和文档之间的相关度测量,若是特征词属于该文档,则他们的互信息量最大。img
3. ATC语言
4. Okapi
5. LTU
nj是词语j至少出现过一次的文档, nj/N 是词语j的文档频率(DF), 那么N/nj 就是逆向文档频率(IDF), max_f是词语在全部文档中的最大频率, dl是文档长度,avg_dl是全部文档的平均长度。
这三种权重方案都是TF-IDF的变种,是在其的基础上引入了其余的因素。ATC 引入了全部文档中的词语的最大频率,同时使用了欧几里德距离做为文档长度归一化考虑。Okapi和LTU使用了相似的方式
来考虑文档长度(文档越长,那么相对来讲,词语的频率也就越高,为了平衡,须要对长文档作出必定的惩罚,但又不能惩罚太厉害,因此引入了dl/avg_dl),但他们采用不一样的方式来处理词语的频率。
LTU使用的是log(fij),而Okapi使用的是fij/(fij+2).
通常这几种方案没有绝对的优劣之分,根据具体状况选择合适的方案便可。