當我嘗試打印上位詞時,我只是想要這個詞而不是關於這個詞的所有信息。Differnt Nltk,wordnet hypernym輸出需要
pp = wn.synset('grow.v.01')
pp1= pp.hypernyms()
print pp1
我的輸出是[Synset('change.v.02')]。我只想「改變」。我需要做什麼改變?對不起,我是wordnet的新手。
當我嘗試打印上位詞時,我只是想要這個詞而不是關於這個詞的所有信息。Differnt Nltk,wordnet hypernym輸出需要
pp = wn.synset('grow.v.01')
pp1= pp.hypernyms()
print pp1
我的輸出是[Synset('change.v.02')]。我只想「改變」。我需要做什麼改變?對不起,我是wordnet的新手。
您可以使用Synset
對象的lemma_names
函數。 記住它返回的名稱列表,你可以選擇一個你感到滿意的名字(在這種情況下,它只有1個結果'更改')。
>> print(pp1[0].lemma_names())
['change']
還呼籲hypernyms()
也將返回一個列表,所以我用pp1[0]
。例如查詢'狗'返回[dog, frump, cad...]
等。如果您想要獲取所有上位詞的所有lemma_names
,則可以使用列表理解。
>> [s.lemma_names() for s in wn.synsets('dog')]
[['dog', 'domestic_dog', 'Canis_familiaris'],
['frump', 'dog'],
['dog'],
...
['chase', 'chase_after', 'trail', 'tail', 'tag', 'give_chase', 'dog', 'go_after', 'track']]
感謝,帶有打印內容(PP1 [0] .lemma_names ()),我得到輸出[u'change'],'你'是什麼意思,爲什麼它與你的不同?這是一個wordnet版本問題或其他什麼? –
@codeninja'u'關鍵字表示它是一個'unicode'字符串。我在python 3上寫了我的回覆,其中文字字符串被* default *編碼爲'unicode',因此是差異。無論如何,它只是如何在控制檯上表現出來,不應該對你有所幫助,你正在處理'change','u'只是顯示它的編碼。 (如果你打印列表的成員,即:print(pp1 [0] .lemma_names()[0])'我相信它應該在python 2中沒有unicode關鍵字的情況下打印出來) – umutto
參見https://stackoverflow.com/questions/27517924/extract-word-from-synset-using-wordnet-in-nltk-3-0 – alvas