NLTK WordNet: Hitta synonymer från NLTK WordNet i Python

Vad är Wordnet?

Wordnet är en NLTK-korpusläsare, en lexikal databas för engelska. Det kan användas för att hitta betydelsen av ord, synonym eller antonym. Man kan definiera det som en semantiskt orienterad ordbok över engelska. Den importeras med följande kommando:

from nltk.corpus import wordnet as guru

Hitta synonymer från NLTK WordNet i Python

Statistik visar att det finns 155287 ord och 117659 synonymer set som ingår i engelska WordNet.

Olika metoder tillgängliga med WordNet kan hittas genom att skriva dir(guru)

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__', '__class__', '__delattr__', '__delattr__', '__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']

Låt oss förstå några av funktionerna som finns tillgängliga med wordnet:

Synset: Det kallas också som synonymuppsättning eller samling av synonymord. Låt oss kolla ett exempel

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

Produktion:

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

Lexikala relationer: Dessa är semantiska relationer som är reciprokerade. Om det finns ett samband mellan {x1,x2,…xn} och {y1,y2,…yn} så finns det också ett samband mellan {y1,y2,…yn} och {x1,x2,…xn}. Till exempel är synonym motsatsen till antonym eller hypernym och hyponym är typ av lexikaliskt begrepp.

Låt oss skriva ett program med hjälp av pytonorm för att hitta synonym och antonym till ordet "aktiv" med 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))

Utdata från koden:

{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} — Synonym

{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} — Antonym

Wordnet Programkod Utdata

Förklaring av koden

  1. Wordnet är en korpus, så den importeras från ntlk.corpus
  2. Listan med både synonym och antonym tas som tom och kommer att användas för att lägga till
  3. Synonymer till ordet aktiv söks i modulen synsets och läggs till i listan synonymer. Samma process upprepas för den andra.
  4. Utdata skrivs ut

Slutsats

WordNet är en lexikalisk databas som har använts av en major sökmotor. Från WordNet kan information om ett givet ord eller en viss fras beräknas som t.ex

  • synonym (ord som har samma betydelse)
  • hypernyms (den generiska termen som används för att beteckna en klass av detaljer (dvs måltid är en frukost), hyponymer (ris är en måltid)
  • holonymer (proteiner, kolhydrater är en del av måltid)
  • meronymer (måltid är en del av det dagliga matintaget)

WordNet ger också information om koordinattermer, derivator, sinnen och mer. Det används för att hitta likheterna mellan två ord. Den innehåller också information om resultatet av det relaterade ordet. Kort eller nötskal kan man behandla det som ordbok eller synonymordbok. Går man djupare i wordnet är det uppdelat i fyra totala subnät som t.ex

  1. Substantiv
  2. Verb
  3. Adjektiv
  4. adverb

Den kan användas inom området artificiell intelligens för textanalys. Med hjälp av Wordnet kan du skapa din korpus för stavningskontroll, språköversättning, skräppostavkänning och många fler.

På samma sätt kan du använda den här korpusen och forma den för att fungera lite dynamisk funktionalitet. Detta är precis som redo att göra korpus för dig. Du kan använda den på ditt sätt.