Python 提供了 NLTK
库,这是一个巨大的文本和语料库资源,以及大量的文本挖掘和处理方法。有什么方法可以根据句子传达的含义来比较句子以获得可能的匹配吗?即智能句子匹配器?
例如,像这样的句子 giggling at bad jokes
和 I like to laug myself silly at poor jokes
。两者表达相同的意思,但句子并不完全匹配(单词不同,Levenstein Distance
会严重失败!)。
现在假设我们有一个 API,它公开了诸如 found here 之类的功能。 .因此,基于此,我们有机制可以发现单词 giggle
和 laugh
在含义上确实匹配他们传达。 Bad
不会匹配到 poor
,所以我们可能需要添加更多层(比如它们在joke
等词的上下文,因为 bad joke
通常与 poor joke 相同
,尽管 bad person
与 poor person
不同!)
一个主要的挑战是丢弃不会改变句子含义的内容。因此,该算法应该在第一句话和这句话之间返回相同程度的匹配:我喜欢在糟糕的笑话中笑自己傻,即使它们完全没有意义,充满废话和严重的心脏机会-攻击!
那么有了这个,有没有这样的算法已经被构想出来了?还是我必须发明轮子?
最佳答案
您将需要更高级的主题建模算法,当然还需要一些语料库来训练您的模型,以便您可以轻松处理咯咯笑和大笑等同义词!
在 python 中,你可以试试这个包:http://radimrehurek.com/gensim/ 我从未使用过它,但它包括经典的语义向量空间方法,如 lsa/lsi、随机投影甚至 lda。
我个人最喜欢的是随机投影,因为它速度更快而且仍然非常高效(不过我是用 java 和另一个库来做的)。
关于python - 根据意思比较句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14852184/