Saya ingin memeriksa program Python jika ada kata dalam kamus bahasa Inggris.
Saya percaya antarmuka wordnet nltk mungkin cara untuk pergi tapi saya tidak tahu bagaimana menggunakannya untuk tugas yang sederhana.
def is_english_word(word):
pass # how to I implement is_english_word?
is_english_word(token.lower())
Di masa depan, saya mungkin ingin memeriksa apakah bentuk kata tunggal dalam kamus (misalnya, properti -> properti -> kata bahasa Inggris). Bagaimana saya mencapai itu?
/usr/share/dict/
dan/var/lib/dict
dapat dirujuk pada pengaturan * nix.Ini tidak akan bekerja dengan baik dengan WordNet, karena WordNet tidak mengandung semua kata bahasa Inggris. Kemungkinan lain berdasarkan NLTK tanpa enchant adalah kata-kata NLTK corpus
sumber
set(words.words())
Menggunakan NLTK :
Anda harus merujuk ke artikel ini jika Anda mengalami kesulitan menginstal wordnet atau ingin mencoba pendekatan lain.
sumber
Menggunakan set untuk menyimpan daftar kata karena mencari mereka akan lebih cepat:
Untuk menjawab bagian kedua dari pertanyaan, bentuk jamak sudah ada dalam daftar kata yang bagus, tetapi jika Anda ingin secara khusus mengecualikan mereka dari daftar karena beberapa alasan, Anda memang bisa menulis fungsi untuk mengatasinya. Tapi aturan pluralisasi bahasa Inggris cukup rumit sehingga saya hanya perlu memasukkan bentuk jamak dalam daftar kata.
Ke mana menemukan daftar kata bahasa Inggris, saya menemukan beberapa hanya dengan Googling "daftar kata bahasa Inggris". Ini salah satunya: http://www.sil.org/linguistics/wordlists/english/wordlist/wordsEn.txt Anda dapat menggunakan Google untuk Bahasa Inggris atau Bahasa Inggris Amerika jika Anda menginginkan secara khusus salah satu dialek tersebut.
sumber
english_words
sebuahset
bukannyalist
, makais_english_word
akan berjalan jauh lebih cepat..xreadlines()
dan hanya beralihword_file
.wamerican
danwbritish
memberikan daftar kata-kata bahasa Inggris Amerika dan Inggris sebagai/usr/share/dict/*-english
. Info paket memberikan wordlist.sourceforge.net sebagai referensi.Untuk solusi berbasis NLTK yang lebih cepat, Anda dapat memotong sekumpulan kata untuk menghindari pencarian linear.
sumber
Saya menemukan bahwa ada 3 solusi berbasis paket untuk menyelesaikan masalah. Mereka adalah pyenchant, wordnet dan corpus (self-defined atau dari ntlk). Pyenchant tidak dapat diinstal dengan mudah di win64 dengan py3 . Wordnet tidak berfungsi dengan baik karena itu corpus tidak lengkap. Jadi bagi saya, saya memilih solusi yang dijawab oleh @Sadik , dan gunakan 'set (words.words ())' untuk mempercepat.
Pertama:
Kemudian:
sumber
Dengan pyEnchant.checker Pemeriksa Ejaan:
sumber
Untuk pendekatan web semantik, Anda bisa menjalankan kueri sparql terhadap WordNet dalam format RDF . Pada dasarnya cukup gunakan modul urllib untuk mengeluarkan permintaan GET dan mengembalikan hasil dalam format JSON, parsing menggunakan modul python 'json'. Jika bukan kata bahasa Inggris, Anda tidak akan mendapatkan hasil.
Sebagai ide lain, Anda dapat meminta API Wiktionary .
sumber
Untuk Semua Pengguna Linux / Unix
Jika OS Anda menggunakan kernel Linux, ada cara sederhana untuk mendapatkan semua kata dari kamus bahasa Inggris / Amerika. Di direktori
/usr/share/dict
Anda memilikiwords
file. Ada juga yang lebih spesifikamerican-english
danbritish-english
file. Ini mengandung semua kata dalam bahasa spesifik itu. Anda dapat mengakses ini di setiap bahasa pemrograman yang mengapa saya pikir Anda mungkin ingin tahu tentang ini.Sekarang, untuk pengguna khusus python, kode python di bawah ini harus menetapkan kata daftar untuk memiliki nilai setiap kata:
Semoga ini membantu!!!
sumber