Extrahieren Sie Word aus Synset mit Wordnet in NLTK 3.0

Vor einiger Zeit fragte jemand auf SO, wie man eine Liste von Wörtern für eine gegebene Synchronisation mit NLTKs Wordnet-Wrapper abruft. Hier ist einer der vorgeschlagenen Antworten:

for synset in wn.synsets('dog'): print synset.lemmas[0].name 

Das Ausführen dieses Codes mit NLTK 3.0 ergibt TypeError: 'instancemethod' object is not subscriptable .

Ich habe versucht, jede der zuvor vorgeschlagenen Lösungen (jede der Lösungen auf der Seite oben verlinkt beschrieben), aber jeder wirft einen Fehler. Ich wollte also fragen: Ist es möglich, die Worte für eine Liste von Synsets mit NLTK 3.0 zu drucken? Ich wäre dankbar für jeden Rat, den andere bei dieser Frage anbieten können.

3 Solutions collect form web for “Extrahieren Sie Word aus Synset mit Wordnet in NLTK 3.0”

WordNet funktioniert in NLTK 3.0 gut. Sie greifen nur auf die Lemmata (und Namen) auf die falsche Weise zu. Versuche es stattdessen

 >>> 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 ist eine Methode und hat keine __getitem__() Methode (und ist also nicht abonnierbar).

Benutzen:

 wn.synset('dog.n.1').name() 

Anstatt von:

 wn.synset('dog.n.1').name 

Weil NLTK die Synset-Eigenschaften geändert hat, um stattdessen Funktionen zu erhalten. Siehe https://github.com/nltk/nltk/commit/ba8ab7e23ea2b8d61029484098fd62d5986acd9c

Dies ist eine gute Liste der Änderungen an der APL von NLTK, um py3.x anzupassen: https://github.com/nltk/nltk/wiki/Porting-your-code-to-NLTK-3.0

Sie können auch direkt zu den Lemma-Namen mit lemma_names() :

 >>> wordnet.synset('dog.n.1').lemma_names() ['dog', 'domestic_dog', 'Canis_familiaris'] 

Und es funktioniert für mehrere Sprachen

 >>>> wordnet.synset('dog.n.1').lemma_names(lang='jpn') ['イヌ', 'ドッグ', '洋犬', '犬', '飼犬', '飼い犬'] 
  • Verwenden von WN-Affect, um Emotion / Stimmung eines Strings zu erkennen
  • Wordnet lemmatisierung und pos tagging in python
  • Extrahieren Sie Word aus Synset mit Wordnet in NLTK 3.0
  • Lemmen Plural Substantive mit nltk und wordnet
  • NLTK Daten veraltet - Python 3.4
  • Konvertieren von Wörtern zwischen Verb / Nomen / Adjektivformen
  • Sentiment-Analyse mit senti_classifier und NLTK
  • Mit python nltk, um Ähnlichkeit zwischen zwei Webseiten zu finden?
  • Text-Matching, semantische Ähnlichkeit, passen die ähnliche Phrase / Wörter python semantischen WortNet FuzzyMatch
  • AttributeError: 'WordNetCorpusReader' Objekt hat kein Attribut 'get_synsets_from_word'
  • Wie kann man jedes Wort durch nltk synsets iterieren und falsch geschriebene Wörter in einer separaten Liste speichern?
  • Python ist die beste Programmiersprache der Welt.