Bir sonraki makul kelime tahminini elde etmek için hangi algoritmalar kullanılabilir?


10

"Sonraki kelime tahmini" ni uygulamanın iyi bir yolu nedir? Örneğin, kullanıcı "Ben" yazar ve bir sonraki kelime olarak "a" ve "değil" (veya muhtemelen diğerleri) önerir. Bunu başarmak için Markov Zincirler ve bazı eğitim metinlerini (açıkçası) kullanan bir yöntemin farkındayım. Ancak bir yerde bu yöntemin çok kısıtlayıcı olduğunu ve çok basit durumlar için geçerli olduğunu okudum.

Sinir ağlarının ve genetik algoritmaların temellerini anlıyorum. Acaba, uygun eğitim metni verildiğinde (örn. Gazete makaleleri ve kullanıcının kendi yazması gibi) bir sonraki kelime için makul olarak uygun öneriler getirebilecek herhangi bir algoritma olup olmadığını merak ediyorum. Değilse (algoritmalar) algoritmaları, bu soruna saldırmak için genel üst düzey yöntemler kabul edilir.

Yanıtlar:


9

N-grama bir göz atın . Bir n-gram bir nkelime dizisidir . Sizin durumunuzda istediğiniz nolmaya 3Eğer iki gerekir, çünkü query wordsbir resulting word. Bir 3 gram örneğin "Yoruldum", diğeri "Mutluyum" olurdu.

O zaman ihtiyacınız olan şey, İngilizce dediğiniz hedef dilinizde toplanan bu 3 gramlık bir koleksiyon. İngilizce yazdığınız her şeyi toplayamadığınız için bir seçim yapmanız gerekiyor. Bu temsili metin seçimine a denir corpus. Eğer topluluğunuz iyiyse, üç belirli kelimeden oluşan bir dizinin İngilizcede ne sıklıkta ortaya çıktığını size söyleyecektir. Bundan 3 gramlık olasılığı hesaplayabilirsiniz.

Bu tür verileri toplamak en zor kısımdır. Olasılıkları ile birlikte tüm 3 gramların listesine sahip olduktan sonra, listeyi "Ben" ile başlayan tüm 3 gramlara göre filtreleyebilirsiniz. Sonra tüm bu listeyi olasılık ve voilà'ya göre sıralarsınız : tahmininiz.


Tamam, ve bunun niyi bir sonuç veren optimal bir değeri var mı? Her zaman tahmin edilen üçüncü kelime olmak zorunda değildir , görüyorsunuz
yati sagade

2
Daha büyük nbir liste daha uzun bir liste verir, bu da size daha kesin bir tahmin verir, ancak arama yapmak da daha pahalıdır.
sebastiangeiger

2
Ayrıca, daha büyük n-gramların pratik olarak yararlı olması için daha büyük bir cesete ihtiyacınız vardır.
liori

4
Bu tam anlamıyla bir Markov Zinciri ... sadece bu değil, kelimenin tam anlamıyla en ders kitabı örneği ...
Justin L.

2

Sorunlu etki alanı dize aramasının bir alt kümesi gibi görünüyor. Kelimeleri beyaz boşlukları içerecek şekilde genişleterek, burada bulanık dize eşleme uygulanabilir.

Eğitim sırasında sözlüğünüze ek olarak tüm kullanıcı girişlerini tek bir kelime olarak değerlendirmek / izin vermek isteyebilirsiniz. Bu, bir sonraki sözcüğü önermenizi sağlar, ancak aynı zamanda otomatik olarak sözcük veya kelime öbeklerini tamamlamanızı önerir.

Bulanık dizgi arama algoritmalarının bir derlemesine bir bağlantı

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


1

(İstatistiksel) bir dil modeli arıyorsunuz .

İstatistiksel bir dil modeli, P(w_1,...,w_m)bir olasılık dağılımı yoluyla bir m kelime dizisine bir olasılık atar ...

Konuşma tanımada ve veri sıkıştırmada, böyle bir model bir dilin özelliklerini yakalamaya ve bir konuşma dizisindeki bir sonraki kelimeyi tahmin etmeye çalışır ...


Vay. Ama bence @ sebastiangeiger'in cevabı bunu n = 3 için açıklıyor.
yati sagade

Cevabı belirli bir dil modelini, yani n-gram modellerini anlatıyor. Başka dil modelleri de vardır, örneğin sözdizimsel dil modelleri ( goo.gl/ffPOg ).
user3287
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.