WordNet NLTK-val: Szinonimák keresése a szavakhoz a Pythonban

Tartalomjegyzék:

Anonim

Mi a Wordnet?

A Wordnet egy NLTK korpuszolvasó, az angol nyelv lexikális adatbázisa. Használható szavak, szinonimák vagy antonimák jelentésének megkeresésére. Meghatározható szemantikailag orientált angol szótárként. A következő paranccsal importálható:

from nltk.corpus import wordnet as guru

A statisztikák szerint 155287 szó és 117659 szinonimakészlet szerepel az angol WordNet-ben.

A WordNet segítségével elérhető különböző módszerek megtalálhatók a dir (guru) beírásával

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class___' __ge__ ',' __getattr__ ',' __getattribute__ ',' __gt__ ',' __hash__ ',' __init__ ',' __le__ ',' __lt__ ',' __module__ ',' __name__ ',' __ne__ ',' __new__ ',' __red___ , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_unload', 'alkönyvtár', 'unicode_repr']

Ismerjük meg a wordnet néhány elérhető tulajdonságát:

Szinset : Szinonimakészletként vagy szinonimaszók gyűjteményeként is hívják. Nézzünk meg egy példát

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

Kimenet:

[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')]

Lexikai kapcsolatok : Ezek szemantikai kapcsolatok, amelyek viszonozva vannak. Ha kapcsolat van {x1, x2,… xn} és {y1, y2, ... yn} között, akkor kapcsolat van {y1, y2, ... yn} és {x1, x2,… xn} között is. Például a szinonimája ellentétes az antonimával, vagy a hiperimmek és a hiponim a lexikális fogalom típusa.

Írjunk egy programot python segítségével, hogy megtaláljuk az "aktív" szó szinonimáját és antonimáját a Wordnet segítségével.

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))

A kód kimenete:

{'dynamic', 'harci', 'harci kész', 'active_voice', 'active_agent', 'részt vevő', 'életben', 'aktív'} - Szinonima

{'stative', 'passzív', 'csendes', 'passive_voice', 'kihalt', 'alvó', 'inaktív'} - Antoním

A kód magyarázata

  1. A Wordnet egy korpusz, ezért az ntlk.corpus fájlból importálja
  2. A szinonimák és az antonimák listáját is üresnek tekintik, amelyeket a csatoláshoz használnak
  3. Az aktív szó szinonimáit keresik a modul szinkronszettjeiben, és a lista szinonimáihoz csatolják. Ugyanezt a folyamatot ismételjük meg a másodiknál ​​is.
  4. A kimenet kinyomtatásra kerül

Következtetés:

A WordNet egy lexikális adatbázis, amelyet egy nagyobb keresőmotor használt. A WordNetből kiszámolhatók egy adott szóra vagy kifejezésre vonatkozó információk, pl

  • szinonima (azonos jelentésű szavak)
  • hiperminták (A specifikus osztály (azaz az étkezés egy reggeli), a hiponimák (a rizs egy étkezés) jelölésére használt általános kifejezés
  • holonimák (fehérje, szénhidrát az étkezés része)
  • meronimák (az étkezés a napi étkezés része)

A WordNet információt nyújt a koordinációs kifejezésekről, a deriváltakról, az érzékekről és egyebekről is. Bármely két szó közötti hasonlóság megtalálására szolgál. Információt is tartalmaz a kapcsolódó szó eredményeiről. Röviden vagy dióhéjban szótárként vagy tezauruszként kezelhetjük. A wordnet mélyebbre menve négy teljes alhálózatra oszlik, mint pl

  1. Főnév
  2. Ige
  3. Melléknév
  4. Határozószó

A mesterséges intelligencia területén használható szövegelemzésre. A Wordnet segítségével létrehozhatja korpuszját a helyesírás-ellenőrzéshez, a nyelvfordításhoz, a spamfelismeréshez és még sok máshoz.

Ugyanígy használhatja ezt a korpuszt, és formázhatja valamilyen dinamikus funkcionalitáshoz. Ez olyan, mintha készen állna az elkészített korpusz az Ön számára. Használhatja a maga módján.