互信息在自然语言处理中常有应用,最近我爬取了百度百科五十万个网页,利用中科院ICTCLAS分词系统,借助于互信息的方法,做了一个考察两个中文句子之间的语义相似度的模型。把结果整理于下。
先谈谈整个思路。爬取网页并从中抽取出干净的段落,这个没有难点。初始工作完成後,就对这些文章进行分词,去掉一些停用词、人名、无意义的助词等等,得到另一份数据。这份数据一篇文章就用一些词來表示。比如:
这就是其中一篇文章的结果。这是第一步。
第二步是计算词与词之间的互信息。但凡在一篇文章中同时出现的两个词,我们都记一次共现。利用互信息的计算公式可以方便地进行计算。不过需要说明的是:首先,那些出现次数较低的词应该直接排除。50万篇文章如果出现次数只是几次,十几次,那么这些词肯定可以排除的。我设的门槛是25。为什么设这个数,是因为我当时查看了某个词(具体哪个词忘记了-,-),它极少出现,但确实是一个词,于是就用它的出现次数作为门槛。另外,整个计算过程耗时较长,需要有足够的耐心。我整个程序跑一次需要六天。当然,本不需这麽长时间,是因为我跑了几次才成功(硬件原因)。
第三步是测试结果了。先定义词与句子之间的语义相似度。我们把目标句子分词,去杂,之後比较每个词与目标词的互信息。选择得分最高的三个,求均值,并做一个对数操作。接着再定义句子与句子的相似度。把句子1分词,得出每个词与句子2的相似度,选择得分最高的三个,求均值,做对数操作。这样整个程序就算完成了。
测试的结果:
下面四个句子,其中前两句摘自同一篇文章:
1、他没有详细介绍宏达国际平板电脑的销售情况。
2、他对谷歌收购摩托罗拉移动表示欢迎,因为这有助于谷歌把摩托罗拉移动的技术和软件功能移植到Android系统上,对手机制造商有利。
3、美国证券交易委员会执法部主管罗伯特库扎米周四表示,美国司法部已经开始针对中国在美国上市企业的会计舞弊和账目违规行为展开了调查。
4、各位,从中午至今,我收到的捐款或借款意向,已经足够非法集资份额的了,诸多短信和私信未及回复。
5、无论是农村还是城市,房子是国家统一建的,然后分配给每个公民居住。
第一句与其他四个句子的语义相似度分别是:
0.828664 0.822052 0.731076 0.715613
可以看到,第二句真的是险胜!
另外一组测试,同样,前两句摘自同一篇文章:
1、美国学者利用推特研究人的情绪波动
2、美国康奈尔大学学者发现人的积极情绪高峰出现在早上,上午10点左右衰退,傍晚再次升高,半夜再次达到高峰。另外,人们在周末也会更加快乐。
3、小聪明是战术,大智慧是战略;小聪明看到的是芝麻,大智慧看到的是西瓜。
4、交易员言论吓呆BBC主播 称世界由高盛统治
5、美国蓝筹股走高 科技类股下跌
第一句与其他四个句子的语义相似度分别是:
这个的结果也是险胜。
也有不满意的情形:
2、浙大物理系去年考研英语最低多少分?
3、浙大物理系去年政治考研分数线是多少?
4、浙大物理系今年研究生招生多少人?
5、浙大物理系去年考研分数线是多少?
这是因为我们的句子相似度计算方案的问题,没有办法突出其中的“英语”关键词,所以会导致这个问题的出现。
下一步:
1、改进句子相似度计算方案
2、考虑平均互信息的概念,重新考察语义相似度
浙公网安备 33010602011771号