[英]Extract Word from Synset using Wordnet in NLTK 3.0
前段時間,SO 上有人詢問如何使用 NLTK 的 wordnet 包裝器檢索給定同義詞集的單詞列表。 以下是建議的回應之一:
for synset in wn.synsets('dog'):
print synset.lemmas[0].name
使用 NLTK 3.0 運行此代碼會產生TypeError: 'instancemethod' object is not subscriptable
。
我嘗試了之前提出的每個解決方案(上面鏈接的頁面中描述的每個解決方案),但每個都引發錯誤。 因此,我想問:是否可以使用 NLTK 3.0 打印同義詞列表的單詞? 對於其他人可以就這個問題提供的任何建議,我將不勝感激。
WordNet 在 NLTK 3.0 中運行良好。 您只是以錯誤的方式訪問引理(和名稱)。 試試這個:
>>> import nltk
>>> nltk.__version__
'3.0.0'
>>> from nltk.corpus import wordnet as wn
>>> for synset in wn.synsets('dog'):
for lemma in synset.lemmas():
print lemma.name()
dog
domestic_dog
Canis_familiaris
frump
dog
dog
cad
bounder
blackguard
...
synset.lemmas
是一種方法,沒有__getitem__()
方法(因此不可下標)。
您還可以使用lemma_names()
直接轉到引理名稱:
>>> wordnet.synset('dog.n.1').lemma_names()
['dog', 'domestic_dog', 'Canis_familiaris']
它適用於多種語言
>>>> wordnet.synset('dog.n.1').lemma_names(lang='jpn')
['イヌ', 'ドッグ', '洋犬', '犬', '飼犬', '飼い犬']
用:
wn.synset('dog.n.1').name()
代替:
wn.synset('dog.n.1').name
因為 NLTK 更改了 Synset 屬性以獲取函數。 見https://github.com/nltk/nltk/commit/ba8ab7e23ea2b8d61029484098fd62d5986acd9c
這是一個很好的 NLTK API 更改列表以適應 py3.x:https ://github.com/nltk/nltk/wiki/Porting-your-code-to-NLTK-3.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.