我想使用NLTK获取单个单词与句子中每个单词之间的相似度。
NLTK可以像下面展示的那样获取两个特定单词之间的相似度。此方法需要给出对单词的具体引用,在本例中是“dog.n.01”,其中dog是一个名词,我们想使用第一个(01)NLTK定义。
dog = wordnet.synset('dog.n.01')
cat = wordnet.synset('cat.n.01')
print dog.path_similarity(cat)
>> 0.2
问题在于我需要从每个句子中获取词语的词性信息。NLTK软件包可以获取句子中每个单词的词性,如下所示。然而,这些词性('NN'、'VB'、'PRP'等)与synset所需的格式不匹配。
text = word_tokenize("They refuse to permit us to obtain the refuse permit")
pos_tag(text)
>> [('They', 'PRP'), ('refuse', 'VBP'), ('to', 'TO'), ('permit', 'VB'), ('us', 'PRP'), ('to', 'TO'), ('obtain', 'VB'), ('the', 'DT'), ('refuse', 'NN'), ('permit', 'NN')]
在NLTK中,是否可以从pos_tag()的结果中获得与synset格式相同的数据?这里的synset格式是类似于dog.n.01
的格式。
lesk
的例子,但是你的代码似乎给出了更好的结果,我想知道为什么(只是好奇):http://www.nltk.org/howto/wsd.html - Hamman Samuel