根据它们的含义来比较句子
Python提供了NLTK
库,这是一个庞大的文本和语料库资源,以及大量的文本挖掘和处理方法。 有什么方法可以根据它们为可能的匹配传达的含义来比较句子吗? 那就是智能句子匹配器?
例如,一个像giggling at bad jokes
这样的句子, I like to laugh myself silly at poor jokes
。 两者都表达了相同的含义,但句子不具有远程匹配性(词语不同, Levenstein Distance
将会失败!)。
现在想象我们有一个暴露功能的API,例如这里找到的。 因此,基于这一点,我们有机制发现, giggle
和laugh
这两个词在它们所表达的意义上确实匹配。 Bad
不匹配poor
,所以我们可能需要添加更多的图层(像他们匹配在像joke
这样的词语中,因为bad joke
通常与poor joke
,尽管bad person
与poor 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!
因此,有了这样的算法,是否有这样的算法呢? 或者我必须发明轮子?
你将需要一个更高级的话题建模算法,当然还有一些语料库可以训练你的模型,这样你就可以轻松处理像傻笑和笑声的同义词!
在Python中,你可以试试这个包:http://radimrehurek.com/gensim/我从来没有使用它,但它包括经典的语义向量空间方法,如lsa / lsi,随机投影甚至lda。
我个人最喜欢的是随机投影,因为它速度更快,而且效率非常高(我正在用另一个库在java中进行)。
链接地址: http://www.djcxy.com/p/69319.html