Algoritma apa yang dapat digunakan untuk mencapai prediksi kata berikutnya yang cukup baik?

10

Apa cara yang baik untuk menerapkan "prediksi kata berikutnya"? Misalnya, pengguna mengetik "Saya" dan sistem menyarankan "a" dan "tidak" (atau mungkin orang lain) sebagai kata berikutnya. Saya mengetahui metode yang menggunakan Rantai Markov dan beberapa teks pelatihan (jelas) untuk mencapai atau kurang ini. Tetapi saya membaca di suatu tempat bahwa metode ini sangat membatasi dan berlaku untuk kasus yang sangat sederhana.

Saya mengerti dasar-dasar jaringan saraf dan algoritma genetika (walaupun belum pernah menggunakannya dalam proyek yang serius) dan mungkin mereka bisa membantu. Saya ingin tahu apakah ada algoritme yang, mengingat teks pelatihan yang sesuai (misalnya, artikel surat kabar, dan pengetikan pengguna sendiri) dapat menghasilkan saran yang cukup sesuai untuk kata berikutnya. Jika tidak (tautan ke) algoritma, metode umum tingkat tinggi untuk menyerang masalah ini dipersilakan.

yati sagade
sumber

Jawaban:

9

Lihatlah n-gram . Satu n-gram adalah urutan nkata - kata. Dalam kasus Anda, Anda ingin nmenjadi 3, karena Anda membutuhkan dua query wordsdan a resulting word. Satu 3 gram akan misalnya "Saya lelah", yang lain "Saya senang".

Yang Anda butuhkan adalah koleksi 3 gram ini yang dikumpulkan di atas bahasa target Anda, katakanlah bahasa Inggris. Karena Anda tidak dapat mengambilnya dari semua yang pernah ditulis dalam bahasa Inggris, Anda harus memilih. Pemilihan teks representatif itu disebut a corpus. Jika korpus Anda bagus, itu akan memberi tahu Anda seberapa sering urutan dari tiga kata spesifik muncul bersama dalam bahasa Inggris. Dari situ Anda bisa menghitung probabilitas 3 gram.

Mengumpulkan data semacam ini adalah bagian tersulit. Setelah Anda memiliki daftar semua 3 gram bersama dengan probabilitas mereka, Anda dapat memfilter daftar Anda ke semua 3 gram dimulai dengan "Saya". Kemudian Anda mengurutkan semua daftar ini berdasarkan probabilitas dan voilà: prediksi Anda.

sebastiangeiger
sumber
Baiklah, dan adakah nilai optimal nyang menghasilkan hasil yang bagus? Itu tidak selalu harus menjadi kata ketiga yang diprediksi, Anda tahu
yati sagade
2
Nah, nhasil yang lebih besar menghasilkan daftar yang lebih panjang yang akan memberi Anda prediksi yang lebih tepat tetapi juga lebih mahal untuk dicari. Jadi ini merupakan pertukaran antara waktu presisi dan komputasi.
sebastiangeiger
2
Selain itu, Anda memerlukan corpus yang lebih besar untuk n-gram yang lebih besar agar praktis berguna.
liori
4
um ini secara harfiah Rantai Markov ... tidak hanya itu, tetapi secara harfiah contoh buku teks yang paling ...
Justin L.
2

Sepertinya domain masalah adalah subset dari pencarian string. Dengan memperluas kata-kata untuk memasukkan spasi putih, pencocokan string fuzzy dapat diterapkan di sini.

Anda mungkin ingin mempertimbangkan / mengizinkan semua input pengguna sebagai satu kata selama pelatihan selain kamus Anda. Ini memungkinkan Anda untuk menyarankan kata berikutnya tetapi juga menyarankan secara otomatis melengkapi kata atau frasa.

Berikut ini tautan ke kompilasi algoritma pencarian string fuzzy

http://ntz-develop.blogspot.com/2011/03/fuzzy-string-search.html

Dorward Villaruz
sumber
1

Anda mencari model bahasa (statistik) .

Model bahasa statistik memberikan probabilitas ke urutan kata-kata m P(w_1,...,w_m)dengan cara distribusi probabilitas ...

Dalam pengenalan suara dan dalam kompresi data, model seperti itu mencoba untuk menangkap sifat-sifat bahasa, dan untuk memprediksi kata berikutnya dalam urutan ucapan ...

pengguna3287
sumber
Wow. Tapi saya pikir jawaban @ sebastiangeiger menjelaskan ini untuk n = 3.
yati sagade
Jawabannya menggambarkan model bahasa tertentu, yaitu model n-gram. Ada model bahasa lain, misalnya, model bahasa sintaksis ( goo.gl/ffPOg ).
user3287