簡體   English   中英

在 NLTK 3.0 中使用 Wordnet 從 Synset 中提取單詞

[英]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.

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