WordNet s NLTK: Hľadanie synoným pre slová v Pythone

Obsah:

Anonim

Čo je to Wordnet?

Wordnet je čítačka korpusu NLTK, lexikálna databáza pre angličtinu. Môže sa použiť na vyhľadanie významu slov, synoným alebo antonymov. Možno ho definovať ako sémanticky zameraný slovník angličtiny. Importuje sa pomocou nasledujúceho príkazu:

from nltk.corpus import wordnet as guru

Štatistiky ukazujú, že anglický WordNet obsahuje 155 287 slov a 117 659 skupín synoným .

Rôzne metódy dostupné v sieti WordNet nájdete zadaním príkazu dir (guru)

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

Rozumieme niektorým funkciám dostupným v sieti wordnet:

Synset : Nazýva sa tiež ako sada synoným alebo skupina synonymných slov. Pozrime sa na príklad

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

Výkon:

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

Lexikálne vzťahy : Ide o sémantické vzťahy, ktoré sú recipročné. Ak existuje vzťah medzi {x1, x2, ... xn} a {y1, y2, ... yn}, potom existuje aj vzťah medzi {y1, y2, ... yn} a {x1, x2, ... xn}. Napríklad Synonymum je opakom antonymu alebo hypernymu a hyponymum je typom lexikálneho konceptu.

Poďme napísať program pomocou pythonu, aby sme pomocou Wordnetu našli synonymum a antonymum slova „aktívny“.

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

Výstup kódu:

{'dynamický', 'bojový', 'bojový', 'active_voice', 'active_agent', 'zúčastnený', 'živý', 'aktívny'} - synonymum

{'stative', 'passive', 'tichý', 'passive_voice', 'zaniknutý', 'neaktívny', 'neaktívny'} - Antonymum

Vysvetlenie kódu

  1. Wordnet je korpus, takže sa importuje z súboru ntlk.corpus
  2. Zoznam synoným aj antonymov sa považuje za prázdny, ktorý sa použije ako príloha
  3. Synonymá slova aktívne sa vyhľadávajú v súpravách modulov a nachádzajú sa v zozname synoným. Rovnaký postup sa opakuje aj pri druhom.
  4. Výstup sa vytlačí

Záver:

WordNet je lexikálna databáza, ktorú používa hlavný vyhľadávač. Z WordNetu sa dajú vypočítať informácie o danom slove alebo fráze, ako napr

  • synonymum (slová s rovnakým významom)
  • hypernymy (Všeobecný termín používaný na označenie triedy špecifík (tj. jedlo je raňajky), hyponymá (ryža je jedlo)
  • holonymy (bielkoviny, sacharidy sú súčasťou jedla)
  • meronymá (jedlo je súčasťou denného príjmu potravy)

WordNet tiež poskytuje informácie o súradnicových pojmoch, derivátoch, zmysloch a ďalších. Používa sa na nájdenie podobnosti medzi ľubovoľnými dvoma slovami. Taktiež obsahuje informácie o výsledkoch súvisiaceho slova. V skratke alebo skratke sa k nej dá priložiť ako k slovníku alebo tezauru. Keď pôjdeme hlbšie do wordnetu, je rozdelený do štyroch celkových podsietí ako napr

  1. Podstatné meno
  2. Sloveso
  3. Prídavné meno
  4. Príslovka

Môže byť použitý v oblasti umelej inteligencie na textovú analýzu. Pomocou Wordnetu môžete vytvoriť svoj korpus na kontrolu pravopisu, jazykový preklad, detekciu spamu a mnoho ďalších.

Rovnakým spôsobom môžete tento korpus použiť a formovať ho tak, aby fungoval s niektorými dynamickými funkciami. Je to ako pripravený korpus pre vás. Môžete to použiť svojim spôsobom.