使用WordNet比较两个短语?
我正在尝试比较两个短语的意思。在Python中,我使用了nltk和difflib这两个库。首先,我会把短语中的一些常见词(也就是停用词)去掉,然后使用WordNetLemmatizer和PorterStemmer来规范化单词,最后用difflib里的SequenceMatcher来比较剩下的单词。我觉得用difflib的方式可能还有更好的选择。有没有什么建议或者推荐的方式?有没有库可以在比较短语时使用WordNet?我现在的步骤是否正确?
1 个回答
1
简单来说,不,你不能用NLTK实现这种语义分析。而且使用Wordnet也行不通,因为大多数句子里包含的单词在这个数据库里找不到。现在要大致理解句子的意思,通常会用一些分布式的方法(比如词空间模型)。
如果你是Python程序员,可以用scikit-learn和Gensim来实现你想要的功能,它们支持潜在语义分析(LSA, LSI)和潜在狄利克雷分配(LDA)。你可以看看这个之前的问题的回答。如果你用Java,我建议你试试很棒的S-Space包。
不过,大多数模型只会给你基于单词的表示。把单词的意思组合成更大的结构要困难得多,除非你假设短语和句子只是单词的集合(这样就会忽略例如Mary loves Kate和Kate loves Mary之间的区别)。