LemminflectModul Python untuk Lemmatisasi dan Infleksi Bahasa Inggris.
LemMinFlect menggunakan pendekatan kamus untuk melemahkan kata -kata bahasa Inggris dan memasukkannya ke dalam bentuk yang ditentukan oleh dependensi universal yang disediakan pengguna atau tag penn trreebank. Perpustakaan bekerja dengan kata-kata out-of-vocabulary (OOV) dengan menerapkan teknik jaringan saraf untuk mengklasifikasikan formulir kata dan memilih aturan morphing yang sesuai.
Sistem bertindak sebagai modul mandiri atau sebagai ekstensi ke sistem spacy NLP.
Aturan kamus dan morfologi berasal dari leksikon spesialis NIH yang berisi informasi yang luas tentang formulir kata bahasa Inggris.
Sistem Inflection Only yang lebih sederhana tersedia sebagai PyInflect. Lemminflect dibuat untuk mengatasi beberapa kekurangan proyek itu dan menambahkan fitur, seperti ...
Untuk dokumentasi terbaru, lihat Readthedocs .
Keakuratan LemMinFlect dan beberapa utilitas NLP populer lainnya diuji menggunakan database infleksi yang dihasilkan secara otomatis (AGID) sebagai garis dasar. Ini bukan dataset standar "emas" tetapi memiliki daftar ekstensif lemma dan infleksi yang sesuai dan tampaknya menjadi umum yang "baik" untuk pengujian. Setiap infleksi ditinggalkan oleh perangkat lunak uji dan kemudian dibandingkan dengan nilai asli dalam korpus. Tes ini mencakup 119.194 kata -kata infleksi yang berbeda.
| Package | Verb | Noun | ADJ/ADV | Overall | Speed |
|-----------------------------------------------------------------------------|
| LemmInflect 0.2.3 | 96.1% | 95.4% | 93.9% | 95.6% | 42.0 uS |
| Stanza 1.5.0 + CoreNLP 4.5.4 | 94.0% | 96.4% | 93.1% | 95.5% | 30.0 us |
| spaCy 3.5.0 | 79.5% | 88.9% | 60.5% | 84.7% | 393.0 uS |
| NLTK 3.8.1 | 53.3% | 52.2% | 53.3% | 52.6% | 12.0 uS |
|-----------------------------------------------------------------------------|
Kecepatan dalam mikro detik per lemma dan dilakukan pada CPU I9-7940X. Catatan, karena Stanza melakukan panggilan ke perangkat lunak Java Corenlp, semua kasus uji 120K dikelompokkan ke dalam satu panggilan. Untuk spacy, semua komponen pipa dinonaktifkan kecuali lemmatizer. Tingginya waktu per lemma mungkin merupakan cerminan dari overhead umum arsitektur pipa.
Satu -satunya persyaratan eksternal untuk menjalankan Lemminflect adalah numpy yang digunakan untuk matriks matematika yang menggerakkan jaring saraf. Jaring ini relatif kecil dan tidak membutuhkan daya CPU yang signifikan untuk berjalan.
Untuk menginstal do ..
pip3 install lemminflect
Proyek ini dibangun dan diuji di bawah Python 3 dan Ubuntu tetapi harus berjalan di sistem Linux, Windows, Mac, dll. Itu tidak teruji di bawah Python 2 tetapi dapat berfungsi di lingkungan itu dengan perubahan minimal atau tanpa.
Basis kode juga mencakup fungsi perpustakaan dan skrip untuk membuat berbagai file data dan jaring saraf. Ini termasuk hal -hal seperti ...
Tidak ada yang diperlukan untuk operasi run-time. Namun, jika Anda ingin memodifikasi sistem, lihat dokumentasi untuk info lebih lanjut.
Untuk melemahkan kata, gunakan metode getLemma() . Ini membutuhkan kata dan ketergantungan universal dan mengembalikan lemma sebagai daftar ejaan yang mungkin. Sistem kamus digunakan terlebih dahulu, dan jika tidak ada lemma yang ditemukan, sistem aturan digunakan.
> from lemminflect import getLemma
getLemma('watches', upos='VERB')
('watch',)
Untuk mengangkut kata -kata, gunakan metode getInflection . Ini membutuhkan lemma dan tag Penn Treebank dan mengembalikan tuple dari infleksi spesifik yang terkait dengan tag itu. Similary ke atas, kamus digunakan terlebih dahulu dan kemudian aturan infleksi diterapkan jika diperlukan ..
> from lemminflect import getInflection
> getInflection('watch', tag='VBD')
('watched',)
> getInflection('xxwatch', tag='VBD')
('xxwatched',)
Perpustakaan menyediakan fungsi tingkat rendah untuk mengakses kamus dan aturan OOV secara langsung. Untuk deskripsi terperinci, lihat Lemmatizer atau Infleksi.
Untuk digunakan sebagai ekstensi, Anda memerlukan spacy versi 2.0 atau lebih baru. Versi 1.9 dan sebelumnya tidak mendukung metode ekstensi yang digunakan di sini.
Untuk mengatur ekstensi, impor pertama lemminflect . Ini akan menciptakan metode lemma dan inflect baru untuk setiap Token spacy. Metode beroperasi mirip dengan metode yang dijelaskan di atas, dengan pengecualian bahwa string dikembalikan, berisi ejaan yang paling umum, bukan tuple.
> import spacy
> import lemminflect
> nlp = spacy.load('en_core_web_sm')
> doc = nlp('I am testing this example.')
> doc[2]._.lemma()
test
> doc[4]._.inflect('NNS')
examples
Jika Anda menemukan bug, silakan laporkan di daftar masalah GitHub. Namun berhati -hatilah bahwa ketika datang untuk mengembalikan infleksi yang benar ada sejumlah jenis masalah yang dapat muncul. Beberapa di antaranya tidak mudah diperbaiki. Masalah dengan formulir yang dipengaruhi termasuk ...
Salah satu masalah umum adalah bahwa beberapa bentuk kata kerja "BE" tidak sepenuhnya ditentukan oleh tag bank tunung. Misalnya menjadi/VBD infleksi ke salah satu "adalah" atau "adalah" dan menjadi/VBP infleksi untuk "AM", atau "Are". Untuk menghilangkan bentuk bentuk -bentuk ini, kata -kata lain dalam kalimat perlu diperiksa. Pada saat ini, Lemminflect tidak termasuk fungsi ini.