WordNet s NLTK: Hledání synonym pro slova v Pythonu

Obsah:

Anonim

Co je Wordnet?

Wordnet je čtečka korpusů NLTK, lexikální databáze pro angličtinu. Lze jej použít k vyhledání významu slov, synonym nebo antonym. Lze jej definovat jako sémanticky orientovaný slovník angličtiny. Importuje se pomocí následujícího příkazu:

from nltk.corpus import wordnet as guru

Statistiky ukazují, že do anglického WordNetu je zahrnuto 155287 slov a 117659 sad synonym .

Různé metody dostupné ve WordNetu najdete zadáním 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']

Rozumíme některým funkcím dostupným na wordnetu:

Synset : Nazývá se také jako sada synonym nebo kolekce synonymních slov. Podívejme se na příklad

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

Výstup:

[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ální vztahy : Jedná se o sémantické vztahy, které jsou vzájemné. Pokud existuje vztah mezi {x1, x2, ... xn} a {y1, y2, ... yn}, pak existuje také vztah mezi {y1, y2, ... yn} a {x1, x2, ... xn}. Například Synonymum je opakem antonymů nebo hypernymů a hyponym jsou typem lexikálního konceptu.

Napíšeme program pomocí pythonu, abychom pomocí Wordnetu našli synonymum a antonymum slova „aktivní“.

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:

{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'involved', 'alive', 'active'} - Synonymum

{'stative', 'passive', 'quiet', 'passive_voice', 'zaniklý', 'spící', 'neaktivní'} - Antonym

Vysvětlení kódu

  1. Wordnet je korpus, takže se importuje z ntlk.corpus
  2. Seznam synonym i antonym je považován za prázdný, který bude použit pro připojení
  3. Synonyma slova aktivní jsou vyhledávána v synsetech modulu a jsou připojena v seznamu synonym. Stejný postup se opakuje pro druhý.
  4. Výstup se vytiskne

Závěr:

WordNet je lexikální databáze, kterou používá hlavní vyhledávač. Ze sítě WordNet lze vypočítat informace o daném slově nebo frázi, například

  • synonymum (slova mající stejný význam)
  • hypernyms (Obecný termín používaný k označení třídy specifik (tj. jídlo je snídaně), hyponyma (rýže je jídlo)
  • holonymy (bílkoviny, sacharidy jsou součástí jídla)
  • meronyma (jídlo je součástí denního příjmu potravy)

WordNet také poskytuje informace o souřadných pojmech, derivátech, smyslech a dalších. Používá se k nalezení podobnosti mezi libovolnými dvěma slovy. Obsahuje také informace o výsledcích souvisejícího slova. Stručně řečeno, lze to považovat za slovník nebo tezaurus. Jdeme hlouběji do wordnetu, je rozdělen do čtyř celkových podsítí, jako je

  1. Podstatné jméno
  2. Sloveso
  3. Přídavné jméno
  4. Příslovce

Lze jej použít v oblasti umělé inteligence pro textovou analýzu. Pomocí Wordnetu můžete vytvořit svůj korpus pro kontrolu pravopisu, jazykový překlad, detekci spamu a mnoho dalších.

Stejným způsobem můžete tento korpus použít a zformovat jej tak, aby fungoval s některými dynamickými funkcemi. Je to jako připravený korpus pro vás. Můžete to použít svým způsobem.