NLTK WordNet: Βρείτε Συνώνυμα από το NLTK WordNet στο Python
⚡ Έξυπνη Σύνοψη
Το WordNet είναι μια λεξιλογική βάση δεδομένων και ένας αναγνώστης corpus NLTK για τα αγγλικά που ομαδοποιεί ουσιαστικά, ρήματα, επίθετα και επιρρήματα σε συνσύνολα, επιτρέποντας Python Τα προγράμματα αναζητούν συνώνυμα, αντώνυμα, υπερώνυμα και σημασίες λέξεων για την επεξεργασία φυσικής γλώσσας.

Τι είναι το Wordnet;
WordNet είναι ένα πρόγραμμα ανάγνωσης corpus NLTK, μια λεξιλογική βάση δεδομένων για την αγγλική γλώσσα. Μπορεί να χρησιμοποιηθεί για την εύρεση της σημασίας λέξεων, ενός συνωνύμου ή ενός αντωνύμου. Μπορεί κανείς να το ορίσει ως ένα σημασιολογικά προσανατολισμένο λεξικό της αγγλικής γλώσσας. Το WordNet εισάγεται με την ακόλουθη εντολή:
from nltk.corpus import wordnet as guru
Επειδή το WordNet διατίθεται ως έτοιμο σώμα κειμένου, μπορείτε να το φορτώσετε μία φορά και να ξεκινήσετε αμέσως την αναζήτηση σχέσεων λέξεων χωρίς να δημιουργήσετε μόνοι σας κάποιο λεξικό.
Βρείτε Συνώνυμα από το NLTK WordNet στο Python
Τα στατιστικά αποκαλύπτουν ότι υπάρχουν 155287 λέξεις και 117659 συνώνυμο Σετ που περιλαμβάνονται στο αγγλικό WordNet. Διαφορετικές μέθοδοι που είναι διαθέσιμες με το WordNet μπορούν να βρεθούν από τον typing dir(guru), το οποίο παραθέτει κάθε χαρακτηριστικό του φορτωτή και μια βοηθητική μέθοδο που εκτίθεται από τον αναγνώστη του corpus.
Σύνθεση: Ονομάζεται επίσης σύνολο συνωνύμων ή συλλογή συνώνυμων λέξεων. Ας δούμε ένα παράδειγμα.
from nltk.corpus import wordnet syns = wordnet.synsets("dog") print(syns)
Παραγωγή:
[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')]
Λεξικές Σχέσεις: Αυτές είναι σημασιολογικές σχέσεις που είναι αμοιβαίες. Εάν υπάρχει σχέση μεταξύ των {x1,x2,…xn} και {y1,y2,…yn}, τότε υπάρχει επίσης σχέση μεταξύ των {y1,y2,…yn} και {x1,x2,…xn}. Για παράδειγμα, το συνώνυμο είναι το αντίθετο του αντωνύμου, ενώ τα υπερώνυμα και τα υπονύμματα είναι ένας τύπος λεξικής έννοιας.
Ας γράψουμε ένα πρόγραμμα χρησιμοποιώντας Python για να βρείτε το συνώνυμο και το αντώνυμο της λέξης «active» χρησιμοποιώντας το WordNet.
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))
Η έξοδος του κώδικα:
{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} -- Synonym
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} -- Antonym
Επεξήγηση του κώδικα:
- Το WordNet είναι ένα corpus, επομένως εισάγεται από το πακέτο nltk.corpus.
- Δύο λίστες για συνώνυμα και αντώνυμα λαμβάνονται ως κενές, οι οποίες θα χρησιμοποιηθούν για την προσθήκη.
- Τα συνώνυμα της λέξης «active» αναζητούνται με τη μέθοδο synsets και προστίθενται στη λίστα συνωνύμων. Η ίδια διαδικασία συλλέγει και τα αντώνυμα.
- Η έξοδος εκτυπώνεται ως Python ορίζει έτσι ώστε οι διπλότυπες καταχωρήσεις να καταργούνται αυτόματα.
Πέρα από τα συνώνυμα και τα αντώνυμα, το WordNet εκθέτει επίσης υπερνύμματα (ευρύτερους όρους), υπονύμματα (πιο συγκεκριμένους όρους), ολοώνυμα και μερώνυμα, έτσι ώστε ένα μόνο ερώτημα να μπορεί να τοποθετήσει μια λέξη μέσα σε μια ολόκληρη ιεραρχία IS-a. Αυτές οι σχέσεις καθιστούν το WordNet έναν πρακτικό θησαυρό για ορθογραφικούς ελέγχους, μετάφραση γλωσσών, ανίχνευση ανεπιθύμητης αλληλογραφίας και άλλες εργασίες ανάλυσης κειμένου στην τεχνητή νοημοσύνη.
