Mutual Information 互信息的应用

时间:2024-04-16 17:28:40

MI使用如下公式计算某个特征项t和类别c之间的相关性。

MI.bmp

其中,Atc同时出现的次数;Bt出现而c没有出现的次数;Cc出现而t没有出现的次数。N为所有文档数。如果tc不相关,则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一点利用单例模式一次加载到内存中去,给其他应用使用,虽然资源占用比较大,但是得到的效果还是不错的