WordNet NLTK: n kanssa: Synonyymien etsiminen sanoille Pythonissa

Sisällysluettelo:

Anonim

Mikä on Wordnet?

Wordnet on NLTK-korpuslukija, englanninkielinen leksikaalinen tietokanta. Sitä voidaan käyttää sanojen, synonyymien tai antonyymien merkityksen löytämiseen. Voidaan määritellä se semanttisesti suuntautuvaksi englannin sanakirjaksi. Se tuodaan seuraavalla komennolla:

from nltk.corpus import wordnet as guru

Tilastot paljastavat, että englanninkieliseen WordNetiin sisältyy 155287 sanaa ja 117659 synonyymisarjaa .

Eri tapoja, jotka ovat käytettävissä WordNetissä, löytyy kirjoittamalla dir (guru)

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__', __, __, _ __d __ge__ ',' __getattr__ ',' __getattribute__ ',' __gt__ ',' __hash__ ',' __init__ ',' __le__ ',' __lt__ ',' __module__ ',' __name__ ',' __ne__ ',' __new__ ',' __reduc , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_unload', 'alihakemisto', 'unicode_repr']

Olkaamme ymmärrettyjä ominaisuuksia, joita Wordnet tarjoaa:

Synset : Sitä kutsutaan myös synonyymijoukoksi tai synonyymisanojen kokoelmaksi. Tarkistetaan esimerkki

from nltk.corpus import wordnetsyns = wordnet.synsets("dog")print(syns)

Tuotos:

[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, on myös suhde {y1, y2, ... yn} ja {x1, x2,… xn}. Esimerkiksi Synonyymi on vastakohta antonyymille tai hypermeille ja hyponym on tyypiltään leksikaalinen käsite.

Kirjoitetaan ohjelma pythonilla sanan "aktiivinen" synonyymien ja antonyymien löytämiseksi Wordnetin avulla.

from nltk.corpus import wordnetsynonyms = []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 lähtö:

{'dynaaminen', 'taistelu', 'taisteluvalmis', 'aktiivinen_voima', 'aktiivinen_agentti', 'osallistuva', 'elossa', 'aktiivinen'} - Synonyymi

{'staattinen', 'passiivinen', 'hiljainen', 'passiivinen_haku', 'sukupuuttoon kuollut', 'lepotilassa', 'ei-aktiivinen'} - Antonym

Koodin selitys

  1. Wordnet on korpus, joten se tuodaan ntlk.corpusista
  2. Sekä synonyymien että antonyymien luettelo pidetään tyhjänä, jota käytetään liitettäessä
  3. Aktiivisen sanan synonyymejä haetaan moduulin synketeistä ja ne liitetään luettelosynonyymeihin. Sama prosessi toistetaan toiselle.
  4. Tulosteet tulostetaan

Päätelmä:

WordNet on leksikaalinen tietokanta, jota suuri hakukone on käyttänyt. WordNetistä tietyn sanan tai lauseen tiedot voidaan laskea esimerkiksi

  • synonyymi (sanat, joilla on sama merkitys)
  • hypermanssit (yleinen termi, jota käytetään kuvaamaan erityisryhmää (eli ateria on aamiainen), hyponymit (riisi on ateria)
  • holonyymit (proteiinit, hiilihydraatit ovat osa ateriaa)
  • meronyymit (ateria on osa päivittäistä ruokaa)

WordNet tarjoaa myös tietoa koordinaattiehdoista, johdannaisista, aisteista ja muusta. Sitä käytetään kahden sanan yhtäläisyyksien löytämiseen. Siellä on myös tietoa vastaavan sanan tuloksista. Lyhyesti sanottuna tai pähkinänkuoressa voidaan kohdella sitä sanakirjana tai tesauruksena. Mennessä syvemmälle wordnet, se on jaettu neljään alaverkkoon, kuten

  1. Substantiivi
  2. Verbi
  3. Adjektiivi
  4. Adverbi

Sitä voidaan käyttää tekoälyn alueella tekstianalyyseihin. Wordnetin avulla voit luoda korpusosi oikeinkirjoituksen tarkistamiseen, kielenkääntämiseen, roskapostin havaitsemiseen ja paljon muuta.

Samalla tavalla voit käyttää tätä korpusta ja muovata sen toimimaan dynaamisesti. Tämä on kuin valmiina tehty korpus sinulle. Voit käyttää sitä omalla tavallasi.