我正在尝试比较两个短语的语义。在 Python 中,我使用 nltk 和 difflib。首先,我从短语中删除停用词,然后使用 WordNetLemmatizer 和 PorterStemmer 对单词进行规范化,然后将其余部分与 difflib 的 SequenceMatcher 进行比较。我仍然认为有比使用 difflib 更好的方法。有什么建议或提议吗?在短语之间的比较中是否有任何使用 Wordnet 的库?我正在做的步骤是否正确?
问问题
1277 次
1 回答
1
简而言之,不,你不能用 NLTK 做这种语义。而且使用 Wordnet 根本行不通,因为大多数句子都包含不在数据库中的单词。当前近似句子语义的方法涉及分布技术(词空间模型)。
如果您是 Python 程序员,scikit-learn 和 Gensim 通过潜在语义分析(LSA、LSI)和潜在狄利克雷分配(LDA)为您提供所需的功能。请参阅上一个问题的答案。在 Java 中,我建议您尝试出色的S-Space 包。
然而,大多数模型会给你一个严格的基于单词的表示。将单词的语义组合成更大的结构要困难得多,除非您假设短语和句子是词袋(因此,忽略了例如Mary 爱 Kate和Kate 爱 Mary之间的区别。
于 2014-05-07T20:25:35.783 回答