根据句子的含义比较句子

时间:2013-02-13 11:11:47

标签: python data-mining nltk

Python提供了NLTK库,它是一个庞大的文本和语料库资源,以及大量的文本挖掘和处理方法。有没有什么方法可以根据它们为可能的匹配传达的含义来比较句子?那就是一个聪明的句子匹配器?

例如, giggling at bad jokes I like to laugh myself silly at poor jokes 等句子。两者都表达了相同的含义,但句子没有远程匹配(单词不同,Levenstein Distance会严重失败!)。

现在假设我们有一个API,它公开了找到的here等功能。因此,基于此,我们有机制可以发现 giggle laugh 这两个词在其传达的意义上是匹配的。 Bad poor 不匹配,因此我们可能需要添加更多图层(就像它们在< strong> joke ,因为 bad joke 通常与 poor joke 相同,但 {{1} } bad person 不同!)。

一个主要的挑战是丢弃那些不会改变句子含义的东西。因此,算法应返回第一句与此之间相同程度的匹配度: poor person

所以有了这个,有没有这样的算法已经构思出来了?或者我必须发明轮子?

1 个答案:

答案 0 :(得分:5)

你需要一个更高级的主题建模算法,当然还有一些语料库来训练你的模型,这样你就可以轻松处理像笑声和笑一样的同义词!

在python中,你可以尝试这个包:http://radimrehurek.com/gensim/ 我从未使用它,但它包括经典的语义向量空间方法,如lsa / lsi,随机投影甚至lda。

我个人最喜欢的是随机投影,因为它更快且效率更高(我现在在java中使用另一个库)。