【问题标题】:Compare two phrases using WordNet?使用 WordNet 比较两个短语?
【发布时间】:2014-06-23 18:39:01
【问题描述】:
我正在尝试比较两个短语的语义。
在 Python 中,我使用 nltk 和 difflib。
首先,我从短语中删除停用词,然后使用 WordNetLemmatizer 和 PorterStemmer 对单词进行规范化,然后将其余部分与 difflib 的 SequenceMatcher 进行比较。
我仍然认为有比使用 difflib 更好的方法。
有什么建议或提议吗?
在短语之间的比较中是否有任何使用 Wordnet 的库?
我做的步骤是否正确?
【问题讨论】:
标签:
python
string
nltk
semantic-analysis
difflib
【解决方案1】:
简而言之,不,你不能用 NLTK 做这种语义。而且使用 Wordnet 根本行不通,因为大多数句子都包含不在数据库中的单词。当前逼近句子语义的方法涉及分布技术(词空间模型)。
如果您是 Python 程序员,scikit-learn 和 Gensim 通过潜在语义分析 (LSA、LSI) 和潜在狄利克雷分配 (LDA) 为您提供所需的功能。请参阅this previous question 的答案。在 Java 中,我建议您尝试出色的 S-Space package。
但是,大多数模型都会为您提供严格基于单词的表示。将单词的语义组合成更大的结构要困难得多,除非您假设短语和句子是词袋(因此,错过了例如 Mary love Kate 和 Kate爱玛丽。