NLTK WordNet: Finn synonymer fra NLTK WordNet i Python
Hva er Wordnet?
Wordnet er en NLTK-korpusleser, en leksikalsk database for engelsk. Den kan brukes til å finne betydningen av ord, synonym eller antonym. Man kan definere det som en semantisk orientert engelskordbok. Den importeres med følgende kommando:
from nltk.corpus import wordnet as guru
Finn synonymer fra NLTK WordNet i Python
Statistikk viser at det er det 155287 ord og 117659 synonymer sett inkludert i engelsk WordNet.
Ulike metoder tilgjengelig med WordNet kan bli funnet ved å skrive dir(guru)
['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__', '__delattr__', '__delattr__', '__delattr__,' __format__', ' __ge__', '__getattr__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__reduce__' , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_unload', 'subdir', 'unicode_repr']
La oss forstå noen av funksjonene som er tilgjengelige med wordnet:
Synset: Det kalles også som synonymsett eller samling av synonymord. La oss sjekke et eksempel
from nltk.corpus import wordnet syns = wordnet.synsets("dog") print(syns)
Utgang:
[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')]
Leksiske forhold: Dette er semantiske relasjoner som er gjengjeldt. Hvis det er en sammenheng mellom {x1,x2,…xn} og {y1,y2,…yn}, så er det også en sammenheng mellom {y1,y2,…yn} og {x1,x2,…xn}. For eksempel er synonym det motsatte av antonym eller hypernyms og hyponym er en type leksikalsk konsept.
La oss skrive et program ved hjelp av python for å finne synonym og antonym til ordet "aktiv" ved hjelp av Wordnet.
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))
Utgangen av koden:
{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} — Synonym
{'stativ', 'passiv', 'stille', 'passiv_stemme', 'utdødd', 'sovende', 'inaktiv'} – Antonym
Forklaring av koden
- Wordnet er et korpus, så det importeres fra ntlk.corpus
- Liste over både synonymer og antonymer tas som tom, som vil bli brukt for å legge til
- Synonymer til ordet aktiv søkes i modulen synsets og legges til i listen synonymer. Den samme prosessen gjentas for den andre.
- Utdata skrives ut
Konklusjon
WordNet er en leksikalsk database som har blitt brukt av en hovedfag søkemotor. Fra WordNet kan informasjon om et gitt ord eller uttrykk beregnes som f.eks
- synonym (ord som har samme betydning)
- hypernymer (det generiske begrepet som brukes for å betegne en klasse med spesifikke kjennetegn (dvs. måltid er en frokost), hyponymer (ris er et måltid)
- holonymer (proteiner, karbohydrater er en del av måltidet)
- meronymer (måltid er en del av daglig matinntak)
WordNet gir også informasjon om koordinerte termer, derivater, sanser og mer. Det brukes til å finne likhetene mellom to ord. Den inneholder også informasjon om resultatene av det relaterte ordet. Kort eller nøtteskall kan man behandle det som ordbok eller synonymordbok. Går dypere inn i wordnet, er det delt inn i fire totale undernett som f.eks
- Substantiv
- Verb
- Adjektiv
- adverb
Den kan brukes innen kunstig intelligens for tekstanalyse. Ved hjelp av Wordnet kan du lage ditt korpus for stavekontroll, språkoversettelse, spam-deteksjon og mange flere.
På samme måte kan du bruke dette korpuset og forme det til å fungere litt dynamisk funksjonalitet. Dette er akkurat som klart å lage korpus for deg. Du kan bruke den på din måte.