我试图比较两个短语的语义。 在Python中我使用的是nltk和difflib。 首先我从短语中删除停用词,然后我使用WordNetLemmatizer和PorterStemmer来规范化单词然后我将其余部分与difflib的SequenceMatcher进行比较。 我仍然认为有一种比使用difflib更好的方法。 有什么建议或提议吗? 在短语之间的比较中是否有任何使用Wordnet的库? 我正在制定的步骤是否正确?
答案 0 :(得分:1)
简而言之,不,你不能用NLTK做这种语义。使用Wordnet将无法正常工作,因为大多数句子都包含不在数据库中的单词。目前接近句子语义的方法涉及分布式技术(字空间模型)。
如果您是python程序员,scikit-learn和Gensim通过潜在语义分析(LSA,LSI)和Latent Dirichlet Allocation(LDA)为您提供所需的功能。查看this previous question的答案。在Java中,我建议你尝试优秀的S-Space package。
但是,大多数模型都会为您提供严格的基于单词的表示。将单词的语义结合到更大的结构中要困难得多,除非你假设短语和句子是单词包(因此,缺少例如 Mary喜欢Kate 和 Kate之间的区别爱玛丽。