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
Förklaring av koden
- Wordnet är en korpus, så den importeras från ntlk.corpus
- Listan med både synonym och antonym tas som tom och kommer att användas för att lägga till
- Synonymer till ordet aktiv söks i modulen synsets och läggs till i listan synonymer. Samma process upprepas för den andra.
- 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
- Substantiv
- Verb
- Adjektiv
- 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.