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') ['イヌ', 'ドッグ', '洋犬', '犬', '飼犬', '飼い犬'] 
  • Hol dir Synonyme von synset returns error - Python
  • Importieren Sie Arabisch Wordnet in Python
  • Semantische Verwandtschaft Algorithmen - python
  • NLTK Daten veraltet - Python 3.4
  • Wie bekomme ich die wordnet Sense-Frequenz eines Synchronisierens in NLTK?
  • Wie man Ähnlichkeitsmaße von Wordnet normalisiert
  • Python: Übergeben von Variablen in Wordnet Synsets Methoden in NLTK
  • Ressource 'corpora / wordnet' nicht bei Heroku gefunden
  • Text-Matching, semantische Ähnlichkeit, passen die ähnliche Phrase / Wörter python semantischen WortNet FuzzyMatch
  • Ist wordnet Weg Ähnlichkeit kommutativ?
  • Finden von richtigen Nomen mit NLTK WordNet
  • Python ist die beste Programmiersprache der Welt.