关键词与关键词之间的相关度计算
2006-11-29 12:00
260 查看
在信息论中常用互信息(MI,Mutual Information)来衡量两个词的相关度MI(X,Y)=log2p(x,y)/p(x)p(y)
MI越大,表示两个词之间的结合越紧密。
当X,Y关联大时,MI(X,Y)大于0;当X与Y关系弱时,MI(X,Y)等于0;当MI(X,Y)小于0时,X与Y称为“互补关系”
这个算式看起来很直观,但计算还是有些麻烦,因为计算概率值p(x),p(y)都需要在语料中进行分词,
这就涉及到词典的构成以及分词的算法。
下面介绍一个简便而直观的算法:
假设一个文章集合 {C},总文章数目为N,其中含有单词X的文章总数为Nx,含有单词Y的文章总数是Ny,含有{X+Y}的文章总数是 Nxy,那么相关性这么计算
Corr(X,Y)= Math.log10(N/Nx)*Math.log10(N/Ny)*Nxy/(Nx+Ny-Nxy)
我写了一个程序进行测试,首先准备一个词典,然后准备大量语料,为检索方便,用lucence建索引,然后查询每个词与两个词交集的个数。测试汽车,前两百名结果非常好。测试一个不常见的词,如活性炭,得到的结果如下,还蛮不错的。
MI越大,表示两个词之间的结合越紧密。
当X,Y关联大时,MI(X,Y)大于0;当X与Y关系弱时,MI(X,Y)等于0;当MI(X,Y)小于0时,X与Y称为“互补关系”
这个算式看起来很直观,但计算还是有些麻烦,因为计算概率值p(x),p(y)都需要在语料中进行分词,
这就涉及到词典的构成以及分词的算法。
下面介绍一个简便而直观的算法:
假设一个文章集合 {C},总文章数目为N,其中含有单词X的文章总数为Nx,含有单词Y的文章总数是Ny,含有{X+Y}的文章总数是 Nxy,那么相关性这么计算
Corr(X,Y)= Math.log10(N/Nx)*Math.log10(N/Ny)*Nxy/(Nx+Ny-Nxy)
我写了一个程序进行测试,首先准备一个词典,然后准备大量语料,为检索方便,用lucence建索引,然后查询每个词与两个词交集的个数。测试汽车,前两百名结果非常好。测试一个不常见的词,如活性炭,得到的结果如下,还蛮不错的。
主关键词x | 关联词y | 关联词数Ny | 主关键词数Nx | 总文章数N | Nxy | Coorr(X,y) |
活性碳 | 不织布 | 16 | 72 | 1127199 | 9 | 2.316674 |
活性碳 | 回力胶 | 25 | 72 | 1127199 | 9 | 1.996593 |
活性碳 | 吸音棉 | 29 | 72 | 1127199 | 9 | 1.883334 |
活性碳 | 珍珠棉 | 31 | 72 | 1127199 | 9 | 1.831631 |
活性碳 | 滤袋 | 39 | 72 | 1127199 | 8 | 1.453371 |
活性碳 | 防尘网 | 59 | 72 | 1127199 | 9 | 1.32477 |
活性碳 | 云母片 | 26 | 72 | 1127199 | 6 | 1.26853 |
活性碳 | 压敏胶 | 27 | 72 | 1127199 | 6 | 1.250454 |
活性碳 | 超滤膜 | 19 | 72 | 1127199 | 4 | 0.92056 |
活性碳 | 海棉 | 119 | 72 | 1127199 | 9 | 0.82483 |
活性碳 | 反渗透 | 155 | 72 | 1127199 | 10 | 0.746471 |
活性碳 | 滤膜 | 47 | 72 | 1127199 | 4 | 0.639034 |
活性碳 | 电导仪 | 4 | 72 | 1127199 | 2 | 0.617857 |
活性碳 | 铜箔 | 100 | 72 | 1127199 | 6 | 0.614342 |
活性碳 | 糊精 | 52 | 72 | 1127199 | 4 | 0.606269 |
活性碳 | 铝粉 | 52 | 72 | 1127199 | 4 | 0.606269 |
活性碳 | 制冰机 | 27 | 72 | 1127199 | 3 | 0.605689 |
活性碳 | 水净化 | 219 | 72 | 1127199 | 10 | 0.554048 |
活性碳 | 滤芯 | 356 | 72 | 1127199 | 15 | 0.533304 |
活性碳 | ro膜 | 14 | 72 | 1127199 | 2 | 0.489964 |
活性碳 | 工业水 | 165 | 72 | 1127199 | 7 | 0.489529 |
活性碳 | 二氧化钛 | 83 | 72 | 1127199 | 4 | 0.459238 |
相关文章推荐
- 关键词与关键词之间的相关度计算
- 优矿-python计算上证50之间的相关系数
- 关于取出关键词并且计算出相关长度
- 写4个同名方法,实现两个整数、两个实数,一个实数一个整数,一个整数一个实数之间的求和。在主调函数中调用这4个方法计算相关的值。(方法的重载)
- 理解openstack中与虚拟机相关一些简单网络知识-3.计算节点的网络拓扑以及网络分配
- 【并行计算-CUDA开发】有关CUDA当中global memory如何实现合并访问跟内存对齐相关的问题
- 百度地图如何计算两点之间距离
- 计算两个经纬度之间的距离
- 7.5.编程计算并输出从1到n之间的所有数的介乘值。
- oracle 计算两个时间之间的月份差,相差几个星期,相差多少天
- Java 计算两个日期之间相差的天数
- android手机屏幕密度的计算及dp、px、sp单位的转换,屏幕适配相关
- 百度地图计算两点之间距离
- DateTime与String之间的转换,及DateTime相关详解
- 计算天数------java两个日期之间的天数、分钟计算
- 【算法总结】计算几何相关
- 2D和3D空间中计算两点之间的距离
- IP地址专题六:计算相关地址
- 第三天,编码设置,主键设置与删除,无关子查询,相关子查询,表与表之间的关系
- 组策略 从入门到精通 (三) 关于站点之间策略的相互复制和相关设置