MI 使用如下公式计算某个特征项 t 和类别 c 之间的相关性。
其中, A 为 t 和 c 同时出现的次数; B 为 t 出现而 c 没有出现的次数; C 为 c 出现而 t 没有出现的次数。 N 为所有文档数。如果 t 和 c 不相关,则 I(t,c) 值为 0 。如果有 m 个类,于是对于每个 t 会有 m 个值,取它们的平均,就可得到特征选取所需的一个线性序。大的 I 平均值的特征被选取的可能性大。
上面为互信息(Mutual Information,MI)在文本自动分类中的应用,体现了词和某类文本的相关性
互信息(Mutual Information,MI)应用还相当广泛,例如可以做新词发现。
新词发现的思路如下:
对训练集中的文本进行字频的统计,并且统计相邻的字之间的互信息,当互信息的值达到某一个阀值的时候,我们可以认为这两个字是一个词,三字,四字,N字的词可以在这基础上进行扩展
搜索引擎检索的结果的排序现在都是使用PageRank算法计算得到重要度而进行排序
小型的搜索引擎要搞PageRank算法这样的统计貌似并不是一件容易的事情,因此某些小型的搜索引擎会喜欢说 相关度排序
相关度排序要做的事情就简单多了
就是计算 检索的关键字与检索结果的相关性,而这种计算又可以转换为 检索的关键字与检索结果的词的相关性计算
此时还是可以使用互信息(Mutual Information,MI)来进行计算,但是计算的数量要增加不少
主要计算的是两个词在文章中同时出现的次数,例如 原子弹 和 核辐射 同现的次数肯定比 核辐射 和 猪肉 同现的次数要高,而我们也知道 原子弹和核辐射是比较相关的。
正是根据这样的思想得到了相关度排序的依据
互信息(Mutual Information,MI) 的缺点是 前期预处理的计算量比较大,计算结果会形成一个 big table,当然只要适当调整阀值还是可以接受的。
在项目中完成的一个 搜索引擎相关度排序就是利用互信息(Mutual Information,MI)来实现,计算得到的模型大概是 50MB, BT一点利用单例模式一次加载到内存中去,给其他应用使用,虽然资源占用比较大,但是得到的效果还是不错的