2016-04-11 32 views
2

n'nin-gram ilgili okuma ediyorum ve tek-gramiki gram (ya da daha yüksek N- gram) üzerinde kullanılması tercih edilir ne zaman pratikte durumda olup olmadığını merak ediyorum. Anlıyorum gibi, daha büyük N, daha büyük karmaşıklık olasılıkları hesaplamak ve vektör alanı kurmak. Fakat bunun dışında, başka nedenler var mı (örneğin, veri türü ile ilgili)? GenellikleTek gramlar, iki gramdan (veya daha yüksek N-gram) daha uygun olduğunda?

+0

Vektör alanı ?! Muhtemel vektörleri, yani multinom dağılımını mı kastediyorsunuz? -% 99 emin olmak için, unigramların asla n-gram dil modelleri olarak kullanılmaması gerektiğini söyleyebilirim. – user3639557

+0

Lior'un aşağıda belirtildiği gibi, örn. TF-IDF.Bu durumda olasılık vektörlerini nasıl kullanırdınız? – Adam

+1

n-gram dil modelleri, bir kelime bağlamında kelimelerle ilgili olasılık vektörlerini tanımlamak, bir bağlamda koşullandırılmış (yani, örnek olmayan durumda, bağlamda null olasılıklar temelde maksimum olabilirlik tahmini olarak tanımlanır: \ frac {# eğitim verisinde belirli bir kelime} {} eğitim verisindeki kelimelerin sayısı} bir olasılık hesaplamanın zayıf bir yolu. – user3639557

cevap

4

Bu data sparsity aşağı kaynar: Bir külliyat varsa, en uç örnekte: senin n -g uzunluğu arttıkça, saat miktarı, verilen herhangi bir n -g azalacak göreceksiniz maksimum belge uzunluğu n belirteçleri olduğunu ve bir m -g arıyoruz nerede m = n 1, olur, bu bir olması sadece mümkün değil, çünkü tabii ki, hiçbir veri noktaları veri kümenizdeki bu uzunluğun dizisi. Veri kümeniz daha seyrek the worse you can model it. Bu nedenle, daha yüksek dereceden buna rağmen n -g modeli, teoride, bir kelimenin Bağlam hakkında daha fazla bilgi içerir, kolayca (overfitting olarak da bilinir), diğer veri kümelerine genelleme olamaz olay sayısı (yani n çünkü o eğitim sırasında gördü -grams) giderek daha az n olarak artar hale gelir. Öte yandan, düşük sipariş modelinde içerik bilgisi yoktur ve bu nedenle verileriniz underfit olabilir.

Bu nedenle, çok fazla miktarda token types (metninizin kelime haznesi çok zengindir) varsa, ancak bu türlerin her birinin çok düşük bir sıklığı varsa, daha düşük bir siparişle daha iyi sonuçlar alabilirsiniz n -gram modeli. eğitim veri seti çok küçük Benzer şekilde, daha düşük bir sipariş n -g modeli ile daha iyi yapabilir. Ancak, aşırı uyumu önlemek için yeterli verilere sahip olduğunuz varsayılarak, then get better separability of your data with a higher-order model.

+1

Sadece küçük bir ek not: eğer jetonlar * bağımsızsa * o zaman 1 gramlık n-gram kadar iyi çalışır. Örneğin, saf koylar, genellikle bağlam/korelasyonları ihmal edebileceğiniz bir örnektir.Ancak cevapladığınız gibi, asıl sorun muhtemelen daha fazla antrenman verisine ihtiyaç duyduğunuzda (üstel olarak) n-gram'larınız ne kadar uzun olursa olsun. –

+0

@ Anony-Mousse: Çok Bağımsızlık hakkında iyi bir açıklama Ancak, en azından NLP'de, çoğu görevde modellemeye çalıştığınız fenomenin gerçek istatistiki bağımsızlığının oldukça nadir olduğunu düşünüyorum, yoksa yanlış mıyım? Gerekli veriler [aslında katlanarak artar] (https://www.cs.utexas.edu/~mooney/cs388/slides/ngrams.ppt). – errantlinguist

+0

Gerçekten ne yapmak istediğinize bağlı. İstenmeyen e-postalar, spam tespitinde 1 gramın iyi bir şekilde oluştuğu ilk örnektir. Ama diğer durumlarda, en az bigram kullanmak istersiniz. –

1

, genel olarak içeriği hakkında daha fazla bilgi taşıdığından daha da 1 'den daha fazla n-gram. Bununla birlikte, bazen gramer ve trigramların yanı sıra unigramlar da hesaplanır ve bunlar için geri dönüş olarak kullanılır. Bu, aynı zamanda, unigrams aramak için hassaslıktan daha yüksek hatırlama istiyorsanız, örneğin, fiil "make" fiilinin tüm olası kullanımlarını arıyoruz.

İstatistiki Makine Çevirisi özelliğini şu şekilde kullanalım: Sezgisel olarak en iyi senaryo, modelinizin tam cümlenin (6 gramlık diyelim) daha önce görülmesi ve çevirisini bir bütün olarak bilmesidir. Eğer durum böyle değilse, çevresi kelimesi hakkında daha fazla bilgi sahibi olmanız göz önüne alındığında, daha küçük olan n-gramları bölmeye çalışın, çeviri daha iyi olur. Örneğin, "Tom Green" i Almanca'ya çevirmek istiyorsanız, bi gramı gördüyseniz, bunun bir kişi adı olduğunu ve olduğu gibi kalması gerektiğini bilmeniz gerekir, ancak modeliniz onu hiç görmediyse, unigrams ve ayrı ayrı "Tom" ve "Yeşil" tercüme. Böylece "Yeşil", "Grün" e benzer bir renk olarak çevrilecektir. Çevredeki Bağlam hakkında daha fazla bilerek arama Ayrıca

, sonuçlar daha doğru hale getirir.

İlgili konular