Kneser-Ney yumuşatmada görünmeyen kelimeler nasıl ele alınır?


15

Gördüğüm kadarıyla, (ikinci dereceden) Kneser-Ney yumuşatma formülü şu ya da bu şekilde

PKN2(wn|wn−1)=max{C(wn−1,wn)−D,0}∑w′C(wn−1,w′)+λ(wn−1)×Pcont(wn)

normalize faktörü ile λ(wn−1) olarak verilmiştir

λ(wn−1)=D∑w′C(wn−1,w′)×N1+(wn−1∙)

ve devam olasılığı Pcont(wn) bir kelime ve wn

Pcont(wn)=N1+(∙wn)∑w′N1+(∙w′)

burada N1+(∙w) bağlamlarda sayısıdır w veya simplier görüldü, farklı sözcük sayısını ∙ verilen kelime önce w . Anladığım kadarıyla, formül özyinelemeli olarak uygulanabilir.

Şimdi bu, bilinmeyen bağlamlarda farklı n-gram uzunlukları için iyi bilinen kelimeleri işler, ancak açıklamaması sözlük dışı kelimeler olduğunda ne yapılması gerektiğidir. Unigramlar için özyineleme adımında P_ {devamı} (/) = P ^ 0_ {KN} (/) = \ frac {1} {V} olduğunu belirten bu örneği izlemeye çalıştım . Belge daha sonra yukarıdaki formülü P ^ 1_ {KN} (w) = P_ {devamı} (w) olarak doğrulamak için bunu kullanır .Pcont(/)=PKN0(/)=1VPKN1(w)=Pcont(w)

Bilinmeyen bir kelime varlığında nasıl çalıştığını göremiyorum . Bu durumlarda çünkü bilinmeyen kelime eğitim seti ile ilgili hiçbir şey devam etmiyor. Benzer şekilde n-gram sayısı .P cw=unknown C(wnPcont(unknown)=0somethingC(wn−1,unknown)=0

Ayrıca, bilinmeyen sözcüklerden oluşan bir diziye (örneğin, OOD kelimelerinin bir terimi sıfır olabilir.∑w′C(wn−1,w′)

Neyi kaçırıyorum?


Ben de KN ile mücadele ediyorum. Bence görünmeyen bigram P (w1w2) olasılığı, son unigram w2'nin devam etme olasılığına geri dönebilir. Görünmeyen bir unigramla bırakıldığında hiçbir şeyin yoktu. Sonra ne yapacağız? Bilmiyorum.
— momobo

Şu anda kendimi KN uygulamaya çalışıyorum ve aynı sorunla sıkışıp kaldım. İkiniz de bir çözüm bulmayı başardınız mı?
— jbaiter

Görünmeyen unigramlar (frekanslara ve frekansların frekanslarına bir güç fonksiyonu uydurma) için Good-Turing yumuşatmaya geri döndüm ... değişen sonuçlarla.
— sunside

Yanıtlar:


6

Dan Jurafsky, N-Gram modelleri hakkında bu sorundan biraz bahseten bir bölüm yayınladı :

Özyinelemenin sona ermesinde, unigramlar düzgün dağılımla enterpolasyon yapılır:

PKN(w)=max(cKN(w)−d,0)∑w′cKN(w′)+λ(ϵ)1|V|

Bilinmeyen bir kelime eklemek istiyorsak <UNK>, sadece sıfır sayımla düzenli bir kelime girişi olarak dahil edilir ve bu nedenle olasılığı şöyle olur:

λ(ϵ)|V|

Ne demek olduğunu öğrenmek için çalıştı, ama değilim ettik emin eğer sadece anlamına . Bu durumda ve sayım sıfıra giderken, belki gider , varsayalım :lim x → 0 x λ ( ϵ ) dϵlimx→0xλ(ϵ)d

λ(wi−1)=dc(wi−1)|{w:c(wi−1,w)>0}|

o zaman bilinmeyen kelimeye indirimin bir kısmı verilir, yani:

λ(ϵ)|V|=d|V|

Bu cevaptan hiç emin değilim, ama daha fazla düşünceye yol açması durumunda oraya çıkarmak istedim.

Güncelleme: Biraz daha kazmak, genellikle boş dizeyi ("") belirtmek için kullanılıyor gibi görünüyor , ancak bunun hesaplamasını nasıl etkilediği hala net değil . hala benim en iyi tahminimϵλd|V|


2
İyi cevap ama senin gibi% 100 kendinden emin değilim. Python'da perl komut dosyası araştırma.microsoft.com /en-us/um/redmond/groups/srg/papers/… 'ın bir sürümünü uyguladım - ancak sadece kapalı bir kelime dağarcığınız varsa olduğu gibi çalıştığını fark ettim (0 prob sorunu ) - yani tüm test unigramları da trendedir. Jan önerdiği gibi lagunita.stanford.edu/c4x/Engineering/CS-224N/asset/slp4.pdf I ön işleme sırasında <UNK> her kelimenin ilk örneği yerini aldı. Ancak, bölümleme yaparken, "goofedup" gibi trende olmayan bazı test unigramları vardır. Bu yüzden d / | V | buraya. Teşekkürler!
— Josh Morel

1

Bir modeli eğitmenin birçok yolu vardır, <UNK>ancak Jurafsky eğitimde çok az kez ortaya çıkan kelimeleri seçmeyi ve bunları sadece değiştirmeyi önerir <UNK>.

O zaman olasılıkları normalde yaptığınız gibi eğitin.

3:40 ile başlayan bu videoyu izleyin -

https://class.coursera.org/nlp/lecture/19

Başka bir yaklaşım, bir kelimeyi <UNK>eğitimde ilk kez görüldüğü gibi düşünmektir , ancak benim deneyimimden bu yaklaşım, olasılık kitlesinin çok fazlasını atar <UNK>.


0

Sadece birkaç düşünce, bu konuda uzman olmaktan çok uzakım, bu yüzden soruya cevap vermek değil, onu analiz etmek niyetindeyim.

λ(ϵ)λ(ϵ)

λ(ϵ)=1−∑wmax(CKN(w)−d,0)∑w′CKN(w)
CKN(w)

Başka bir seçenek, <unk>olasılığı Randy'nin bahsettiği yöntemlerle tahmin etmek ve ona düzenli bir jeton olarak davranmak olacaktır.

Bu adımın formüllerin tutarlı olmasını sağlamak için yapıldığını düşünüyorum. terimininλ(ϵ)|V|


Cevapların gerçek cevaplar için olduğu varsayılmaktadır.
— Michael R. Chernick
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.