Python提供了NLTK
库,这是一个庞大的文本和语料库资源,以及大量的文本挖掘和处理方法。我们有没有办法根据句子所表达的意思来比较句子,以便找到可能的匹配点?也就是说,一个聪明的句子匹配者?在
例如,像giggling at bad jokes
和I like to laugh myself silly at poor jokes
这样的句子。两者表达的意思相同,但句子并不完全匹配(单词不同,Levenstein Distance
会很失败!)。在
现在假设我们有一个API,它公开了诸如found here等功能。基于此,我们有机制来发现单词giggle
和laugh
在它们所传达的意思上是匹配的。Bad
不会匹配到poor
,因此我们可能需要添加更多层(比如它们在单词上下文中匹配,比如joke
,因为bad joke
通常与poor joke
相同,尽管bad person
与poor person
不同。在
一个主要的挑战是丢弃那些对句子意义没有太大改变的东西。因此,算法应该返回第一个句子和this之间相同的匹配度: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。在
我个人最喜欢的是随机投影(random projection),因为它更快,而且仍然非常高效(不过,我正在用另一个库在java中进行)。在
相关问题 更多 >
编程相关推荐