NLTK WordNet: Etsi synonyymejä NLTK WordNetistä Python
⚡ Älykäs yhteenveto
WordNet on englannin kielen leksikaalinen tietokanta ja NLTK-korpuslukija, joka ryhmittelee substantiiveja, verbejä, adjektiiveja ja adverbejä synonyymijoukkoihin. Python Ohjelmat etsivät synonyymejä, antonyymeja, hypernyemejä ja sanojen merkityksiä luonnollisen kielen käsittelyä varten.

Mikä Wordnet on?
WordNet on NLTK-korpuslukija, englannin kielen leksikaalinen tietokanta. Sitä voidaan käyttää sanojen merkitysten, synonyymien tai antonyymien löytämiseen. Se voidaan määritellä semanttisesti suuntautuneeksi englannin sanakirjaksi. WordNet tuodaan seuraavalla komennolla:
from nltk.corpus import wordnet as guru
Koska WordNet toimitetaan valmiina korpusina, voit ladata sen kerran ja heti aloittaa sanojen välisten suhteiden kyselyn ilman, että sinun tarvitsee itse rakentaa sanakirjaa.
Etsi synonyymejä NLTK WordNetistä Python
Tilastot paljastavat, että niitä on 155287 sanaa ja 117659 synonyymiä Englanninkielisen WordNetin mukana tulevat sarjat. WordNetin eri metodit löytyvät osoitteesta typing dir(guru), joka listaa kaikki korpuslukijan paljastamat latausohjelman attribuutit ja apumetodit.
Synsetti: Sitä kutsutaan myös synonyymijoukoksi tai synonyymisanojen kokoelmaksi. Tarkastellaan esimerkkiä.
from nltk.corpus import wordnet syns = wordnet.synsets("dog") print(syns)
lähtö:
[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')]
Leksikaaliset suhteet: Nämä ovat semanttisia suhteita, jotka ovat vastavuoroisia. Jos {x1,x2,…xn} ja {y1,y2,…yn} välillä on suhde, niin myös {y1,y2,…yn} ja {x1,x2,…xn} välillä on suhde. Esimerkiksi synonyymi on antonyymin vastakohta, kun taas hypernyymit ja hyponyymit ovat eräänlainen leksikaalinen käsite.
Kirjoitetaan ohjelma käyttäen Python löytääksesi sanan ”aktiivinen” synonyymin ja antonyymin WordNetin avulla.
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))
Koodin tulos:
{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} -- Synonym
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} -- Antonym
Koodin selitys:
- WordNet on korpus, joten se tuodaan nltk.corpus-paketista.
- Kaksi synonyymi- ja antonyymilistaa otetaan tyhjiksi, ja niitä käytetään liittämiseen.
- Sanan ”active” synonyymejä etsitään synsets-metodilla ja lisätään synonyymiluetteloon. Sama prosessi kerää myös antonyymit.
- Tuloste tulostetaan muodossa Python asettaa, jotta kaksoiskappaleet poistetaan automaattisesti.
Synonyymien ja antonyymien lisäksi WordNet tarjoaa myös hypernymejä (laajempia termejä), hyponyymeja (tarkempia termejä), holonyymeja ja meronyymeja, joten yksi kysely voi sijoittaa sanan kokonaisen on-a-hierarkian sisälle. Nämä suhteet tekevät WordNetistä käytännöllisen tesauruksen oikeinkirjoituksen tarkistuksiin, kielenkäännöksiin, roskapostin tunnistukseen ja muihin tekoälyn tekstianalyysitehtäviin.
