NLTK WordNet: Finden Sie Synonyme aus NLTK WordNet in Python
⚡ Intelligente Zusammenfassung
WordNet ist eine lexikalische Datenbank und ein NLTK-Korpusleser für Englisch, der Substantive, Verben, Adjektive und Adverbien zu Synsets gruppiert und so ermöglicht, … Python Programme suchen Synonyme, Antonyme, Hyperonyme und Wortbedeutungen für die Verarbeitung natürlicher Sprache.
Was ist Wordnet?
WordNet WordNet ist ein NLTK-Korpusleser, eine lexikalische Datenbank für Englisch. Mit ihm lassen sich die Bedeutung von Wörtern, Synonyme oder Antonyme finden. Man kann es als semantisch orientiertes Wörterbuch des Englischen bezeichnen. WordNet wird mit folgendem Befehl importiert:
from nltk.corpus import wordnet as guru
Da WordNet als fertiges Korpus ausgeliefert wird, können Sie es einmal laden und sofort mit der Abfrage von Wortbeziehungen beginnen, ohne selbst ein Wörterbuch erstellen zu müssen.
Finden Sie Synonyme aus NLTK WordNet in Python
Statistiken zeigen, dass es welche gibt 155287 Wörter und 117659 Synonyme Die in English WordNet enthaltenen Sets. Verschiedene mit WordNet verfügbare Methoden können durch ty gefunden werden.ping dir(guru), das alle vom Korpusleser bereitgestellten Loader-Attribute und Hilfsmethoden auflistet.
Synset: Man nennt es auch Synonymmenge oder Sammlung von Synonymwörtern. Schauen wir uns ein Beispiel an.
from nltk.corpus import wordnet syns = wordnet.synsets("dog") print(syns)
Ausgang:
[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')]
Lexikalische Beziehungen: Dies sind semantische Relationen, die wechselseitig sind. Besteht eine Beziehung zwischen {x1, x2, …, xn} und {y1, y2, …, yn}, so besteht auch eine Beziehung zwischen {y1, y2, …, yn} und {x1, x2, …, xn}. Beispielsweise ist ein Synonym das Gegenteil eines Antonyms, während Hyperonyme und Hyponyme lexikalische Konzepte darstellen.
Schreiben wir ein Programm mit Python Synonyme und Antonyme des Wortes „aktiv“ mithilfe von WordNet finden.
from nltk.corpus import wordnet synonyms = [] antonyms = [] for syn in wordnet.synsets("active"): for l in syn.lemmas(): synonyms.append(l.name()) if l.antonyms(): antonyms.append(l.antonyms()[0].name()) print(set(synonyms)) print(set(antonyms))
Die Ausgabe des Codes:
{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} -- Synonym
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} -- Antonym
Erklärung des Codes:
- WordNet ist ein Korpus und wird daher aus dem nltk.corpus-Paket importiert.
- Es werden zwei Listen für Synonyme und Antonyme als leer angenommen, die zum Anhängen verwendet werden.
- Synonyme des Wortes „aktiv“ werden mithilfe der Synsets-Methode gesucht und der Synonymliste hinzugefügt. Das gleiche Verfahren ermittelt Antonyme.
- Die Ausgabe wird wie folgt gedruckt: Python setzt, dass doppelte Einträge automatisch entfernt werden.
Neben Synonymen und Antonymen deckt WordNet auch Hyperonyme (übergeordnete Begriffe), Hyponyme (spezifischere Begriffe), Holonyme und Meronyme auf, sodass eine einzelne Abfrage ein Wort in eine ganze „ist-ein“-Hierarchie einordnen kann. Diese Beziehungen machen WordNet zu einem praktischen Thesaurus für Rechtschreibprüfungen, Sprachübersetzungen, Spam-Erkennung und andere Textanalyseaufgaben im Bereich der künstlichen Intelligenz.

