现在的位置: 首页 > 综合 > 正文

句子相似度计算

2013年09月20日 ⁄ 综合 ⁄ 共 910字 ⁄ 字号 评论关闭

如何计算句子的语义相似度,很容易想到的是向量空间模型(VSM)和编辑距离的方法,比如A:“我爸是李刚”,B:“我儿子是李刚”,利用VSM方法A(我,爸,是,李刚)B(我,儿子,是,李刚),计算两个向量的夹角余弦值,不赘述;编辑距离就更好说了将“爸”,“儿子”分别替换掉,D(A,B)= replace_cost;

这是两种相当呆的方法,属于baseline中的baseline,换两个例子看一下就知道A:“楼房如何建造?”,B:“高尔夫球怎么打?”,C:“房子怎么盖?”,如果用VSM算很明显由于B,C中有共同的词“怎么”,所以BC相似度高于AC;编辑距离同理;

解决这种问题方法也不难,只要通过同义词词典对所有句子进行扩展,“如何”、“怎么”,“楼房”、“房子”都是同义词或者近义词,扩展后再算vsm或者edit distance对这一问题即可正解。这种方法一定程度上解决了召回率低的问题,但是扩展后引入噪声在所难免,尤其若原句中含有多义词时。例如:“打酱油”、“打毛衣”。在汉字中有些单字词表达了相当多的意义,在董振东先生的知网(hownet)中对这种类型汉字有很好的语义关系解释,通过hownet中词语到义元的树状结构可以对对词语粒度的形似度进行度量。

问题到这里似乎得到了不错的解答,但实际中远远不够。VSM的方法把句子中的词语看做相互独立的特征,忽略了句子序列关系、位置关系对句子语义的影响;Edit Distance考虑了句子中词语顺序关系,但是这种关系是机械的置换、移动、删除、添加,实际中每个词语表达了不同的信息量,同样的词语在不同词语组合中包含的信息量或者说表达的语义信息大不相同。What about 句法分析,计算句法树的相似度?这个比前两种方法更靠谱些,因为句法树很好的描述了词语在句子中的地位。实际效果要待实验证实。

对了,还有一种方法translation model,IBM在机器翻译领域的一大创举,需要有大量的语料库进行训练才能得到理想的翻译结果。当然包括中间词语对齐结果,如果能够利用web资源建立一个高质量的语料库对两两相似句对通过EM迭代词语对齐,由词语对齐生成句子相似度,这个。。想想还是不错的方法!

抱歉!评论已关闭.