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
所以有了这个,有没有这样的算法已经构思出来了?或者我必须发明轮子?
答案 0 :(得分:5)
你需要一个更高级的主题建模算法,当然还有一些语料库来训练你的模型,这样你就可以轻松处理像笑声和笑一样的同义词!
在python中,你可以尝试这个包:http://radimrehurek.com/gensim/ 我从未使用它,但它包括经典的语义向量空间方法,如lsa / lsi,随机投影甚至lda。
我个人最喜欢的是随机投影,因为它更快且效率更高(我现在在java中使用另一个库)。