[英]How can I print out the main lemma of a WordNet synset? Python NLTK
[英]How do I print out just the word itself in a WordNet synset using Python NLTK?
在 Python 2.7 中有沒有辦法使用NLTK
來獲取單詞而不是包含"synset"
和括號以及"n.01"
等的額外格式?
例如,如果我這樣做
wn.synsets('dog')
我的結果如下:
[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')]
我怎樣才能得到這樣的列表?
dog
frump
cad
frank
pawl
andiron
chase
有沒有辦法使用NLTK
或者我必須使用regular expressions
? 我可以在 python 腳本中使用regular expressions
嗎?
如果你想在沒有正則表達式的情況下做到這一點,你可以使用列表理解。
[synset.name.split('.')[0] for synset in wn.synsets('dog') ]
您在這里所做的是說,對於每個同義詞集,返回句點之前的第一個單詞。
嘗試這個:
for synset in wn.synsets('dog'):
print synset.lemmas[0].name
您想遍歷 dog 的每個同義詞集,然后打印出同義詞集的詞條。 請記住,多個單詞可以附加到同一個同義詞集,因此如果您想獲取與 dog 的所有同義詞集相關聯的所有單詞,您可以這樣做:
for synset in wn.synsets('dog'):
for lemma in synset.lemmas:
print lemma.name
使用引理名稱可能有效,但Synset
對象的同義詞集名稱有一個規范變量,請嘗試:
>>> from nltk.corpus import wordnet as wn
>>> wn.synset('dog.n.1')
Synset('dog.n.01')
>>> wn.synset('dog.n.1').name
'dog.n.01'
>>> wn.synset('dog.n.1').name.partition('.')[0]
'dog'
>>> for ss in wn.synsets('dog'):
... print ss.name.partition('.')[0]
...
dog
frump
dog
cad
frank
pawl
andiron
chase
非常簡單,只需創建一個列表,然后獲取第一個值
from nltk.corpus import wordnet as wn
syn=[]
for s in wn.synsets('dog'):
syn.appned(s)
return syn[0]
aelfric5578 你很接近:屬性名稱是一個函數,而不是一個字符串。 [synset.name().split('.')[0] 用於 wn.synsets('dog') 中的同義詞集]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.