簡體   English   中英

如何使用 Python NLTK 在 WordNet 同義集中打印出單詞本身?

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

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