N gram

Bir n- gram , belirli bir diziden oluşturulan n öğenin bir alt dizisidir. Fikir, Claude Shannon'ın bilgi teorisindeki çalışmasından geliyor gibi görünüyor . Onun fikri, belirli bir harf dizisinden (örneğin "  örneğin  ") bir sonraki harfin görünüşünün olabilirlik fonksiyonunu elde etmenin mümkün olduğuydu. Bir öğrenme külliyatından , büyüklük geçmişi olan bir sonraki harf için bir olasılık dağılımı oluşturmak kolaydır . Bu modelleme aslında bir sonraki harfin tahmini için yalnızca son gözlemlerin kullanıldığı bir Markov düzen modeline karşılık gelir . Böylece bir bigram, 2. dereceden bir Markov modelidir.

Örneğin , Fransızcada en sık kullanılan bigram , "de" makalesinde olduğu gibi "de"dir, ancak "  de main", "mon de  " veya "mo de" kelimelerinde olduğu gibi. Olarak doğal dil işleme, kelimeler arasında olup harflerin belirlemek için, N-gram söz yaygındır.

Örnek

“Örneğin” (kısa) korpustan şunu elde ederiz:

Geçmiş yok (unigram):

... Olasılıkların toplamı mutlaka 1'e eşittir.

1 boyutun tarihi (mektubu ve halefi olarak kabul ediyoruz):

... Olasılıkların toplamı her zaman zorunlu olarak 1'e eşittir.

Bir alt diziden, aşağıdaki dizinin olasılığını bilmemizi sağlayan koşullu olasılıklar elde ederiz. Örneğimizde, bir eleman görünümü olasılığı a elemanı bilerek p göründü.

N-gram kullanımı

N-gramlar, otomatik doğal dil işlemede ve aynı zamanda sinyal işlemede yaygın olarak kullanılmaktadır . Kullanımları, bir dizi k eleman ( ) verildiğinde , bir elemanın i konumunda ortaya çıkma olasılığının yalnızca önceki n-1 elemanlara bağlı olduğu basitleştirici varsayıma dayanmaktadır .

Yani biz varız .

İle (vaka trigram ), elimizdeki .

Olasılığı dizisi  :

dönüştürülür: (. orada 0 konumunda bir element olup -1 dizisinin bu boş koşullar sokulmasıyla düzeltilebilir, ilk iki terim muhafaza fark eder, ama bu çok az önem değildi).

N-gram eğitimi

Bu hipotezden yola çıkarak, bir korpustan n-gramları öğrenmek mümkündür . ile tek yapmanız gereken tümceye göz atmak ve bir eleman üçlüsünün her oluşumu için (örneğin, her karakter veya kelime üçlüsü için) bu üçlünün görünüş sayısını, başlangıçtaki çiftin görünüş sayısını not etmektir. üçlünün ve birinciyi ikinciye bölün.

Basit bir örnekte, “aabaacaab” öğrenme külliyatından başlayarak, aşağıdaki üçüzlere sahibiz:

Çiftlerin yanı sıra onları da sıralayalım:

Aşağıdaki tri-gramları elde ederiz:


Bu bütünceden, eğer "aa" çifti ortaya çıkarsa, bir sonraki elemanın "b" olma olasılığı 2/3, bir sonraki elemanın "c" olma olasılığı 1/3 olduğunu çıkarırız.

Önemsiz ama önemli bir özellik . Bu, herhangi bir n değeri için önemsiz bir şekilde genellenir.

Eşdeğer Markov zincirini elde ederiz :

Zincir-markov-trigramme.png

N-gram sınırı

İlk sorun ortaya çıkar: bazı üçüzler eğitim korpusunda görünmez (bu nedenle olasılıkları 0'da sabitlenmiştir), ancak kullanım sırasında risk ortaya çıkar. Gerçekten de, bir dilin tüm n-gramlarını tam olarak dağıtılmış bir şekilde (yani gerçek dağılıma karşılık gelen) içeren temsili bir külliyat oluşturmanın imkansız olduğunu biliyoruz ("dil" ile burada doğal bir dili kastediyoruz, ancak uzatma ile kişinin n-gram ile öğrenmeye tabi tutmak istediği herhangi bir özel dizi kümesini kastediyoruz).

Bu sorunun üstesinden gelmek için olasılıklar "düzeltilir". Tri-gramın hesaplanması yaklaşıktır ve şöyle olur:

ile , unigramın olasılığı ve bigramın olasılığı.

N-gramların Kullanımı

N-gram kullanımının tam bir örneği Viterbi Algoritması makalesinde sunulmaktadır .

Şuna da bakın:


<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">