簡體   English   中英

單詞和名詞相似性Python NLTK

[英]Word and noun similarity Python NLTK

我在使用NLTK的Python中有一個簡單的問題。 我想檢查單詞之間的相似性。 經過研究,我試圖使用wordnet.synsets() 但是我沒有強調一些結果:

syns1 = wordnet.synsets('location')
syns2 = wordnet.synsets('located')

for s1, s2 in product(syns1, syns2):
    print("%s -- %s :" % (s1, s2))
    print(s1.wup_similarity(s2)

Synset('location.n.01') -- Synset('locate.v.01') :
None
Synset('location.n.01') -- Synset('situate.v.01') :
None
Synset('location.n.01') -- Synset('locate.v.03') :
None
Synset('location.n.01') -- Synset('settle.v.04') :
None
Synset('location.n.01') -- Synset('located.s.01') :
None
Synset('placement.n.03') -- Synset('locate.v.01') :
None
Synset('placement.n.03') -- Synset('situate.v.01') :
None
Synset('placement.n.03') -- Synset('locate.v.03') :
None
Synset('placement.n.03') -- Synset('settle.v.04') :
None
Synset('placement.n.03') -- Synset('located.s.01') :
None
Synset('localization.n.01') -- Synset('locate.v.01') :
None
Synset('localization.n.01') -- Synset('situate.v.01') :
None
Synset('localization.n.01') -- Synset('locate.v.03') :
None
Synset('localization.n.01') -- Synset('settle.v.04') :
None
Synset('localization.n.01') -- Synset('located.s.01') :
None
Synset('location.n.04') -- Synset('locate.v.01') :
None
Synset('location.n.04') -- Synset('situate.v.01') :
None
Synset('location.n.04') -- Synset('locate.v.03') :
None
Synset('location.n.04') -- Synset('settle.v.04') :
None
Synset('location.n.04') -- Synset('located.s.01') :
None

有人可以解釋我為什么會發生這種情況,以及如何在單詞相似度方面取得好的結果嗎? 我知道一個是名詞,另一個是動詞/ adj,但嘿,常見的是99%一樣!

謝謝。

通常會看到不同類型的相似性,您似乎遇到的問題是因為它也是一種語法差異。 如果您只希望有一個字符級匹配和一個基於它的相似性,則可以嘗試:

from fuzzywuzzy import fuzz
word1 = "location"
word2 = "located"
similarity = fuzz.ratio(word1,word2)
print(similarity)

但是,如果您確實想使用wordnet進行檢查並且與多個字符匹配有關。 我建議您先對單詞進行詞素化,然后再通過檢查進行。

from pattern.en import lemma
word1 = "located"
lemma_word1 = lemma(word1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM