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.

  • 🧩 Korpuslukija: WordNet tuodaan nltk.corpus-sivustolta ja toimii semanttisesti suuntautuneena englannin sanakirjana.
  • 🔁 Synsetit: Synonyymisana on kokoelma synonyymisanoja, kuten sanalle ”koira” palautetut kahdeksan aistia.
  • 🔗 Leksikaaliset suhteet: Vastavuoroiset semanttiset linkit yhdistävät synonyymejä, antonyymeja, hypernyymejä ja hyponyymeja.
  • 🧪 Synonyymit ja antonyymit: Vessaping Synonyymien ja lemmojen yli kerää kaikki sanan synonyymit ja antonyymit.
  • 🌳 Hierarkia: Hypernyymit, hyponyymit, holonyymit ja meronyymit järjestävät sanat substantiivi-, verbi-, adjektiivi- ja adverbialiverkkoihin.
  • 🤖 Tekoälyn hyöty: WordNet mahdollistaa tekstianalyysitehtävät, kuten oikeinkirjoituksen korjauksen, kääntämisen ja roskapostin tunnistuksen.

NLTK WordNet

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.

UKK

WordNet on NLTK-korpuslukija ja leksikaalinen tietokanta englanniksi. Se toimii kuin semanttisesti suuntautunut sanakirja, jonka avulla voit etsiä sanojen merkityksen, synonyymit ja antonyymit yksinkertaisilla hakusanoilla. Python komentoja.

Synonyymijoukko (synonym set) on joukko sanoja, joilla on sama käsite. Funktion wordnet.synsets("dog") kutsuminen palauttaa useita synonyymijoukkoja, joista jokainen edustaa sanan "dog" yhtä erillistä merkitystä.

Käy läpi wordnet.synsets(word) ja iteroi sitten jokaisen synsetin lemmas(). Lisää lemma.name() kerätäksesi synonyymeja ja kutsu lemma.antonyms() kerätäksesi antonyymeja. Rivitäping set()-funktion tulokset poistavat kaksoiskappaleet.

Hypernyymi on laajempi, yleisnimitys (ateria on aamiaisen hypernyymi), kun taas hyponyymi on täsmällisempi termi (riisi on aterian hyponyymi). WordNet linkittää nämä muodostaen on-a-hierarkian.

English WordNet sisältää noin 155 287 sanaa, jotka on järjestetty noin 117 659 synonyymijoukkoon. Tietokanta kattaa neljä sanaluokkaa: substantiivit, verbit, adjektiivit ja adverbit, joista jokainen on tallennettu omaan aliverkkoonsa.

Tekoälyssä WordNet tukee tekstianalyysitehtäviä, kuten sanojen merkityksen yksiselitteistämistä, oikeinkirjoituksen korjausta, kielen kääntämistä ja roskapostin tunnistusta. Sen jäsennellyt relaatiot antavat koneoppimismalleille rikkaampia kieliopillisia ominaisuuksia kuin pelkät raakatunnukset.

Kyllä. Tekoäly- ja koneoppimisputket käyttävät WordNetin samankaltaisuusmittareita, kuten polun samankaltaisuutta ja Wu-Palmerin samankaltaisuutta. Ne arvioivat kahden synonyymijoukon läheisyyttä mittaamalla niiden välisen lyhimmän reitin hypernyymi- ja hyponyymihierarkiassa.

Tavallinen sanakirja luettelee määritelmät aakkosjärjestyksessä. WordNet sen sijaan linkittää sanat merkityksen mukaan synsettien ja leksikaalisten suhteiden avulla, joten se toimii kuin yhdistetty sanakirja ja tesaurus, jota koneet voivat ohjelmallisesti käydä läpi.

Tiivistä tämä viesti seuraavasti: