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

Wordnet Programkode Utgang

Forklaring av koden

  1. Wordnet er et korpus, så det importeres fra ntlk.corpus
  2. Liste over både synonymer og antonymer tas som tom, som vil bli brukt for å legge til
  3. Synonymer til ordet aktiv søkes i modulen synsets og legges til i listen synonymer. Den samme prosessen gjentas for den andre.
  4. 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

  1. Substantiv
  2. Verb
  3. Adjektiv
  4. 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.