我期待使用NLTK獲取單個單詞和句子中的每個單詞之間的相似性。NLTK將標記化的句子轉換爲synset格式
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')]
是否有可能從pos_tag()結果獲取synset格式的數據結果在NLTK?通過同義詞集格式化我的意思是像dog.n.01
我發現這個'lesk'的例子,但你的代碼似乎給出更好的結果,我想知道爲什麼(只是好奇):http://www.nltk.org/ howto/wsd.html –
Lesk並沒有很好地工作。此代碼可能更好地工作的唯一原因是因爲它獲得第一個synset。在wordnet中,synsets按頻率排序。換句話說,如果我們不考慮上下文,第一個同義詞集合是最可能的。 – bogs