NLTK WordNet: Szinonimák keresése az NLTK WordNetben Python
Mi az a Wordnet?
A Wordnet egy NLTK korpusz olvasó, egy angol lexikális adatbázis. Használható szavak, szinonimák vagy antonimák jelentésének megtalálására. Úgy definiálhatjuk, mint egy szemantikailag orientált angol szótárt. Az importálás a következő paranccsal történik:
from nltk.corpus import wordnet as guru
Szinonimák keresése az NLTK WordNetben Python
A statisztikák azt mutatják, hogy vannak 155287 szó és 117659 szinonimája készletek az angol WordNethez.
A WordNettel elérhető különféle módszereket a dir(guru) beírásával találhatja meg
['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '___class_'_'._,___dic__' ir__', '__doc__', '__eq__', '__format__', ' __ge__', '__getattr__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__name, _______ __' , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_'subniir', '_'subniir'
Ismerkedjünk meg a wordnet néhány funkciójával:
Synset: Szinonimakészletnek vagy szinonimszavak 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 kapcsolatok, amelyek kölcsönösek. Ha van kapcsolat {x1,x2,…xn} és {y1,y2,…yn} között, akkor van kapcsolat az {y1,y2,…yn} és az {x1,x2,…xn} között is. Például a szinonimák az antonimák ellentéte, vagy a hipernimák és a hiponimák lexikális fogalomtípusok.
Írjunk egy programot a segítségével piton hogy megtalálja az „aktív” szó szinonimáját és antonimáját 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'} — Szinonimák
{'statív', 'passzív', 'csendes', 'passzív_hang', 'kihalt', 'alvó', 'inaktív'} — Antoníma
A kód magyarázata
- A Wordnet egy korpusz, ezért az ntlk.corpusból importálják
- A szinonimák és az antonimák listája üresnek tekinthető, amelyet a hozzáfűzéshez használunk
- Az aktív szó szinonimáit a rendszer a modul szintkészleteiben keresi, és hozzáfűzi a szinonimák listájához. Ugyanez a folyamat megismétlődik a másodiknál is.
- A kimenet kinyomtatott
Következtetés
A WordNet egy lexikális adatbázis, amelyet egy szakos használt kereső. A WordNetből egy adott szóra vagy kifejezésre vonatkozó információkat lehet kiszámítani, mint pl
- szinonimák (azonos jelentésű szavak)
- hipernimák (az általános kifejezés, amely egy speciális osztály megjelölésére szolgál (azaz az étkezés egy reggeli), hiponimák (a rizs egy étkezés)
- holonimák (a fehérjék, szénhidrátok az étkezés részét képezik)
- meronimák (az étkezés a napi táplálékbevitel része)
A WordNet a koordináta kifejezésekről, a származékokról, az érzékekről és egyebekről is nyújt információkat. Arra használják, hogy megtalálják a hasonlóságokat bármely két szó között. Információkat is tartalmaz a kapcsolódó szó eredményeiről. Röviden vagy dióhéjban szótárként vagy tezauruszként kezelhetjük. A wordnetben mélyebben haladva négy teljes alhálózatra oszlik, mint pl
- Főnév
- Ige
- Melléknév
- határozószó
Használható a mesterséges intelligencia területén szövegelemzésre. A Wordnet segítségével elkészítheti korpuszát a helyesírás-ellenőrzéshez, a nyelvi fordításhoz, a levélszemét-felismeréshez és még sok máshoz.
Ugyanígy használhatja ezt a korpuszt, és alakíthatja ki bizonyos dinamikus funkciók működéséhez. Ez olyan, mint az Ön számára elkészített korpusz. Használhatja a maga módján.