14

1 つの単語を含む入力テキスト ファイルを取得する必要があります。次に、wordnet を使用して単語の synset の lemma_names、定義、および例を見つける必要があります。私は本を​​読みました:「NLTK 2.0クックブックによるPythonテキスト処理」と「NLTKを使用した自然言語処理」は、この方向で私を助けてくれます。ターミナルを使用してこれを行う方法は理解しましたが、テキスト エディターを使用して同じことを行うことはできません。

たとえば、入力テキストに「flabbergasted」という単語が含まれている場合、出力は次のようにする必要があります。

flabbergasted (動詞) flabbergast、boggle、bowl over - 驚きに打ち勝つ。「これは頭がおかしくなる!」(形容詞) 唖然とした、唖然とした、あわてた、呆然とした、落雷した、唖然とした、唖然とした - まるで驚きと驚きで口がきけなくなったかのように。「事故を見たという彼女の否定に、警察の輪が唖然とした」; 「びっくりした市会議員は言葉を失いました」; 「彼の昇進のニュースに落胆した」

Synset、定義、および例文は、WordNet から直接取得されます。

次のコードがあります。


from __future__ import division
import nltk
from nltk.corpus import wordnet as wn


tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
fp = open("inpsyn.txt")
data = fp.read()

#to tokenize input text into sentences

print '\n-----\n'.join(tokenizer.tokenize(data))# splits text into sentences

#to tokenize the tokenized sentences into words

tokens = nltk.wordpunct_tokenize(data)
text = nltk.Text(tokens)
words = [w.lower() for w in text]  
print words     #to print the tokens

for a in words:
    print a

syns = wn.synsets(a)
print "synsets:", syns

for s in syns:
    for l in s.lemmas:
        print l.name
    print s.definition
    print s.examples

次の出力が得られます。


flabbergasted

['flabbergasted']
flabbergasted
synsets: [Synset('flabbergast.v.01'), Synset('dumbfounded.s.01')]
flabbergast
boggle
bowl_over
overcome with amazement
['This boggles the mind!']
dumbfounded
dumfounded
flabbergasted
stupefied
thunderstruck
dumbstruck
dumbstricken
as if struck dumb with astonishment and surprise
['a circle of policement stood dumbfounded by her denial of having seen the accident', 'the flabbergasted aldermen were speechless', 'was thunderstruck by the news of his promotion']

レンマ名のグループとともに品詞を取得する方法はありますか?

4

4 に答える 4

22
def synset(word):
    wn.synsets(word)

何も返さないので、デフォルトで取得しますNone

あなたは書くべきです

def synset(word):
    return wn.synsets(word)

補題名の抽出:

from nltk.corpus import wordnet
syns = wordnet.synsets('car')
syns[0].lemmas[0].name
>>> 'car'
[s.lemmas[0].name for s in syns]
>>> ['car', 'car', 'car', 'car', 'cable_car']


[l.name for s in syns for l in s.lemmas]
>>>['car', 'auto', 'automobile', 'machine', 'motorcar', 'car', 'railcar', 'railway_car', 'railroad_car', 'car', 'gondola', 'car', 'elevator_car', 'cable_car', 'car']
于 2011-04-04T06:04:27.553 に答える
1
synonyms = []
for syn in wordnet.synsets("car"):
    for l in syn.lemmas():
        synonyms.append(l.name())
print synonyms
于 2016-10-24T07:36:01.383 に答える