WordNet dengan NLTK: Mencari Sinonim untuk perkataan dalam Python

Isi kandungan:

Anonim

Apa itu Wordnet?

Wordnet adalah pembaca korpus NLTK, pangkalan data leksikal untuk bahasa Inggeris. Ia boleh digunakan untuk mencari makna perkataan, sinonim atau antonim. Seseorang boleh mendefinisikannya sebagai kamus bahasa Inggeris yang berorientasikan semantik. Ia diimport dengan arahan berikut:

from nltk.corpus import wordnet as guru

Statistik mendedahkan bahawa terdapat 155287 perkataan dan 117659 kumpulan sinonim yang disertakan dengan WordNet Inggeris.

Kaedah yang berbeza dengan WordNet boleh didapati dengan menaip dir (guru)

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__' ,_________, __ ',_______ __ge__ ',' __getattr__ ',' __getattribute__ ',' __gt__ ',' __hash__ ',' __init__ ',' __le__ ',' __lt__ ',' __module__ ',' __name__ ',' __ne__ ',' __new____, ' , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_unload', 'subdir', 'unicode_repr']

Mari kita fahami beberapa ciri yang terdapat pada wordnet:

Synset : Ia juga disebut sebagai kumpulan sinonim atau kumpulan kata-kata sinonim. Mari kita periksa contohnya

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

Pengeluaran:

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

Hubungan Leksikal : Ini adalah hubungan semantik yang saling berpasangan. Sekiranya terdapat hubungan antara {x1, x2,… xn} dan {y1, y2,… yn} maka ada juga hubungan antara {y1, y2,… yn} dan {x1, x2,… xn}. Contohnya Sinonim adalah kebalikan dari antonim atau hiperim dan hiponim adalah jenis konsep leksikal.

Marilah kita menulis program menggunakan python untuk mencari sinonim dan antonim perkataan "aktif" menggunakan 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))

Keluaran kod:

{'dinamik', 'pertempuran', 'siap tempur', 'aktif_voice', 'aktif_agent', 'berpartisipasi', 'hidup', 'aktif'} - Sinonim

{'stative', 'pasive', 'quiet', 'passive_voice', 'pupus', 'dormant', 'inactive'} - Antonim

Penjelasan kod

  1. Wordnet adalah korpus, jadi ia diimport dari ntlk.corpus
  2. Senarai sinonim dan antonim diambil sebagai kosong yang akan digunakan untuk penambahan
  3. Sinonim kata aktif dicari dalam set modul dan dilampirkan dalam sinonim senarai. Proses yang sama diulang untuk yang kedua.
  4. Keluaran dicetak

Kesimpulan:

WordNet adalah pangkalan data leksikal yang telah digunakan oleh mesin pencari utama. Dari WordNet, maklumat mengenai kata atau frasa yang diberikan dapat dikira seperti

  • sinonim (perkataan yang mempunyai makna yang sama)
  • hypernyms (Istilah generik yang digunakan untuk menetapkan kelas spesifik (iaitu, makan adalah sarapan pagi), hiponim (nasi adalah makanan)
  • holonim (protein, karbohidrat adalah sebahagian daripada makanan)
  • meronyms (makan adalah sebahagian daripada pengambilan makanan harian)

WordNet juga memberikan maklumat mengenai istilah koordinat, terbitan, deria dan banyak lagi. Ia digunakan untuk mencari persamaan antara dua perkataan. Ia juga menyimpan maklumat mengenai hasil kata yang berkaitan. Singkatnya atau ringkasnya seseorang boleh menganggapnya sebagai Kamus atau Tesaurus. Dengan lebih mendalam dalam wordnet, ia dibahagikan kepada empat subnet seperti

  1. Kata nama
  2. Kata kerja
  3. Kata sifat
  4. Adverb

Ia boleh digunakan dalam bidang kecerdasan buatan untuk analisis teks. Dengan bantuan Wordnet, anda boleh membuat korpus anda untuk pemeriksaan ejaan, terjemahan bahasa, pengesanan Spam dan banyak lagi.

Dengan cara yang sama, anda boleh menggunakan corpus ini dan mencetaknya agar dapat berfungsi dengan baik. Ini seperti corpus siap untuk anda. Anda boleh menggunakannya dengan cara anda.