9

Python 提供了NLTK包含大量文本和语料库的库,以及大量文本挖掘和处理方法。有什么方法可以根据句子传达的可能匹配的含义来比较句子?也就是智能句子匹配器?

例如,像giggling at bad jokesand之类的句子I like to laugh myself silly at poor jokes。两者都传达相同的含义,但句子不匹配(单词不同,Levenstein Distance会严重失败!)。

现在想象一下,我们有一个 API 可以公开功能,例如在这里找到的。因此,基于此,我们有机制来找出单词gigglelaugh在它们传达的含义上匹配。Bad不会匹配到poor,因此我们可能需要添加更多层(就像它们在诸如 之类的词的上下文中匹配一样joke,因为bad joke通常与 相同poor joke,尽管bad personpoor person! 不同)。

一个主要的挑战是丢弃不会改变句子含义的东西。所以,算法应该返回第一句和这个之间相同程度的匹配:I like to laugh myself silly at poor jokes, even though they are completely senseless, full of crap and serious chances of heart-attack!

那么有了这个可用的算法,有没有这样的算法已经被构思出来了?还是我必须发明轮子?

4

1 回答 1

5

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

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

我个人最喜欢的是随机投影,因为它更快并且仍然非常高效(不过我是在 java 中使用另一个库来做的)。

于 2013-02-14T13:51:04.983 回答