NLTK WordNet: Szinonimák keresése az NLTK WordNetben Python

⚡ Okos összefoglaló

A WordNet egy angol nyelvű lexikai adatbázis és NLTK korpuszolvasó, amely főneveket, igéket, mellékneveket és határozószókat csoportosít szinonímhalmazokba, lehetővé téve Python A programok szinonimákat, antonimákat, hipernimákat és szójelentéseket keresnek a természetes nyelvi feldolgozáshoz.

  • 🧩 Korpuszolvasó: A WordNet az nltk.corpus oldalról importálva található, és szemantikailag orientált angol szótárként működik.
  • 🔁 Szinhétek: A szinoním szavak gyűjteménye, például a „kutya” szó nyolc érzékszerve.
  • 🔗 Lexikai kapcsolatok: A reciprok szemantikai kapcsolatok szinonimákat, antonimákat, hipernímákat és hiponímákat kötnek össze.
  • 🧪 Szinonimák és antonimák: Vécéping A szinhétek és lemmák felett egy szó összes szinonimáját és antonimáját összegyűjti.
  • ???? Hierarchia: A hipernimák, hiponimák, holonimák és meronimák a szavakat főnévi, igei, melléknévi és határozószói alhálózatokba rendezik.
  • 🤖 A mesterséges intelligencia előnyei: A WordNet olyan szövegelemzési feladatokat lát el, mint a helyesírás-javítás, a fordítás és a spamészlelés.

NLTK WordNet

Mi az a Wordnet?

WordNet egy NLTK korpuszolvasó, egy angol lexikai adatbázis. Szavak jelentésének, szinonimáinak vagy antonimáinak megkereséséhez használható. Definiálható szemantikailag orientált angol szótárként. A WordNet importálása a következő paranccsal történik:

from nltk.corpus import wordnet as guru

Mivel a WordNet egy kész korpuszként érkezik, egyszer betöltve azonnal elkezdheti a szókapcsolatok lekérdezését anélkül, hogy saját maga kellene szótárat építenie.

Szinonimák keresése az NLTK WordNetben Python

A statisztikák azt mutatják, hogy vannak 155287 szó és 117659 szinonimája az angol WordNet részét képező készletek. A WordNetben elérhető különböző módszerek a következő címen találhatók: typing dir(guru), amely felsorolja a korpuszolvasó által elérhető összes betöltő attribútumot és segítő metódust.

Szinhét: Szinonimakészletnek vagy szinonimaszavak gyűjteményének is nevezik. Nézzünk egy példát.

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

output:

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

Lexikai kapcsolatok: Ezek szemantikai relációk, amelyek kölcsönösen hatnak egymásra. Ha kapcsolat van {x1,x2,…xn} és {y1,y2,…yn} között, akkor kapcsolat van {y1,y2,…yn} és {x1,x2,…xn} között is. Például a szinonima az antonima ellentéte, míg a hipernimák és hiponimák egyfajta lexikai fogalmak.

Írjunk egy programot a segítségével Python az „aktív” szó szinonimájának és antonimájának megkeresése a WordNet segítségével.

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

A kód kimenete:

{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} -- Synonym
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} -- Antonym

A kód magyarázata:

  • A WordNet egy korpusz, ezért az nltk.corpus csomagból importáljuk.
  • A szinonimák és antonimák két listáját üresnek tekintjük, ezeket fogjuk felhasználni a hozzáfűzéshez.
  • Az „active” szó szinonimáit a synsets metódus keresi meg, és hozzáfűzi a szinonimák listájához. Ugyanez a folyamat gyűjti az antonimákat is.
  • A kimenet így nyomtatódik ki: Python beállítja, így a duplikált bejegyzések automatikusan eltávolításra kerülnek.

A szinonimákon és antonimákon túl a WordNet hipernimákat (tágabb kifejezéseket), hiponimákat (specifikusabb kifejezéseket), holonimákat és meronimákat is kínál, így egyetlen lekérdezéssel egy szót egy teljes „is-a” hierarchiába lehet helyezni. Ezek a relációk teszik a WordNetet praktikus tezauruszzá a helyesírás-ellenőrzőkhöz, a nyelvi fordításhoz, a spamészleléshez és más szövegelemzési feladatokhoz a mesterséges intelligenciában.

GYIK

A WordNet egy NLTK korpuszolvasó és lexikai adatbázis angol nyelvhez. Szemantikailag orientált szótárként működik, lehetővé téve egy szó jelentésének, szinonimáinak és antonimáinak egyszerű szavakkal történő kikeresését. Python parancsokat.

A szinonímakészlet (synset), azaz a szinonimakészlet, olyan szavak csoportja, amelyek ugyanazt a fogalmat használják. A wordnet.synsets(„kutya”) függvény meghívása több szinonímakészletet ad vissza, amelyek mindegyike a „kutya” szó egy különböző jelentését képviseli.

Végigfutjuk a wordnet.synsets(word) függvényt, majd iteráljuk az egyes synset-ek lemmáit(). Fűzzük hozzá a lemma.name() függvényt a szinonimák összegyűjtéséhez, és hívjuk meg a lemma.antonyms() függvényt az antonimák összegyűjtéséhez. Wrapping A set() függvény eredményei eltávolítják a duplikált bejegyzéseket.

A hipernima egy tágabb, általánosabb kifejezés (a meal a breakfast hipernimája), míg a hiponima egy konkrétabb kifejezés (a rice a meal hiponimája). A WordNet ezeket összekapcsolja egy „van”-„egy” hierarchiát alkotva.

Az English WordNet körülbelül 155 287 szót tartalmaz, amelyek nagyjából 117 659 szinonimakészletbe vannak rendezve. Az adatbázis négy szófajt ölel fel: főneveket, igéket, mellékneveket és határozószókat, amelyek mindegyike saját alhálózatban tárolódik.

A mesterséges intelligencia területén a WordNet olyan szövegelemzési feladatokat támogat, mint a szóértelmezés egyértelműsítése, a helyesírás-javítás, a nyelvi fordítás és a spamészlelés. Strukturált relációi gazdagabb nyelvi jellemzőket biztosítanak a gépi tanulási modelleknek, mint a nyers tokenek önmagukban.

Igen. A mesterséges intelligencia és a gépi tanulási folyamatok WordNet hasonlósági mértékeket használnak, mint például az útvonal-hasonlóság és a Wu-Palmer-hasonlóság. A hipernimák és hiponimák hierarchiájában a közöttük lévő legrövidebb útvonal mérésével értékelik, hogy mennyire közel vannak két szinoníma halmaz.

Egy normál szótár ábécé sorrendben sorolja fel a definíciókat. A WordNet ehelyett szinonímák és lexikai relációk segítségével jelentésük alapján kapcsolja össze a szavakat, így úgy viselkedik, mint egy kombinált szótár és tezaurusz, amelyet a gépek programozottan be tudnak bonyolítani.

Foglald össze ezt a bejegyzést a következőképpen: