WordNet med NLTK: Finne synonymer for ord i Python

Innholdsfortegnelse:

Anonim

Hva er Wordnet?

Wordnet er en NLTK korpusleser, en leksikalske database for engelsk. Den kan brukes til å finne betydningen av ord, synonym eller antonym. Man kan definere det som en semantisk orientert ordbok for engelsk. Den importeres med følgende kommando:

from nltk.corpus import wordnet as guru

Statistikk avslører at det er 155287 ord og 117659 synonymsett inkludert i engelsk WordNet.

Ulike metoder tilgjengelig med WordNet finner du ved å skrive dir (guru)

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__', '__ocr__' __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 wordnetsyns = wordnet.synsets("dog")print(syns)

Produksjon:

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

Leksikale forhold : Dette er semantiske forhold som blir gjengjeldt. Hvis det er et forhold mellom {x1, x2, ... xn} og {y1, y2, ... yn}, er det også sammenheng mellom {y1, y2, ... yn} og {x1, x2, ... xn}. For eksempel er Synonym det motsatte av antonymer eller hypernymmer, og hyponym er type leksikalt begrep.

La oss skrive et program ved hjelp av python for å finne synonym og antonym av ordet "aktivt" ved hjelp av Wordnet.

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

Utgangen av koden:

{'dynamisk', 'slåssing', 'kampklar', 'aktiv_stemme', 'aktiv_agent', 'deltakende', 'levende', 'aktiv'} - Synonym

{'stativ', 'passiv', 'stille', 'passiv_stemme', 'utdød', 'sovende', 'inaktiv'} - Antonym

Forklaring av koden

  1. Wordnet er et korpus, så det importeres fra ntlk.corpus
  2. Liste over både synonym og antonym blir sett på som tom som skal brukes til å legge til
  3. Synonymer for ordet aktiv blir søkt i modulen synsets og er lagt til i listens synonymer. Den samme prosessen gjentas for den andre.
  4. Utskriften skrives ut

Konklusjon:

WordNet er en leksisk database som har blitt brukt av en stor søkemotor. Fra WordNet kan informasjon om et gitt ord eller uttrykk beregnes, for eksempel

  • synonym (ord som har samme betydning)
  • hypernyms (Det generiske begrepet som brukes til å betegne en klasse med spesifikasjoner (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 det daglige matinntaket)

WordNet gir også informasjon om koordinere termer, avledede, sanser og mer. Det brukes til å finne likhetene mellom to ord. Den inneholder også informasjon om resultatene av det relaterte ordet. Kort og kort kan man behandle det som ordbok eller synonymordbok. Hvis vi går dypere 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, søppelpostdeteksjon og mange flere.

På samme måte kan du bruke dette korpuset og forme det til å fungere litt dynamisk. Dette er akkurat som klar til å lage korpus for deg. Du kan bruke den på din måte.