Word2vec modelini kullanarak bir kelimeyi tahmin etme


20

"Ben açtığınızda: bir cümle Verilen ?? kapıyı otomatik ısıtma başlar"

Olası kelimelerin listesini almak istiyorum ?? bir olasılıkla.

Word2vec modelinde kullanılan temel kavram, çevreleyen bağlamda verilen bir kelimeyi "tahmin etmektir".

Model oluşturulduktan sonra, tahmin görevimi yeni cümleler üzerinde gerçekleştirmek için doğru bağlam vektörleri işlemi nedir?

Basitçe doğrusal bir toplam mıdır?

model.most_similar(positive=['When','I','open','the','door','it','starts' ,'heating','automatically'])

Yukarıdaki algoritmayı uyguladım ve bir soru ile karşılaştım: Softmax neden kullanılıyor? Size iki normalleştirme fonksiyonunun bir örneğini göstereyim: def softmax (w, t = 1.0): # Kaynak: gist.github.com/stober/1946926 e = np.exp (w / t) return e / np.sum ( e) def normalizasyonu (w): dönüş w / np.sum (w) a = np.array ([. 0002, .0001, .01, .03]) baskı normalizasyonu (a) softmax yazdır (a, t = 1 [0.00496278 0.00248139 0.24813896 0.74441687] [0.24752496 0.24750021 0.24996263 0.25501221] Görüldüğü gibi, hangi (.0001 ile karşılaştırıldığında, 03 aşağı yukarı aynı olasılığı SoftMax verir:) olsun çıktılarını karşılaştırma

Yanıtlar:


9

Word2vec iki model CBOW ve skip-gram olarak çalışır. Çevrenizdeki kelimeler göz önüne alındığında, sorunuz hedef kelimeyi öngördüğü gibi gittiğinden CBOW modelini alalım.

Temel olarak, model, giriş bağlamı kelimelerine ve çıkış hedefi kelimesine gizli bir katmanın yardımıyla bağlı olan girdi ve çıktı ağırlık matrislerini geliştirir. Dolayısıyla, geri yayılım, tahmin edilen çıkış vektörü ile mevcut çıkış matrisi arasındaki hata farkı olduğunda ağırlıkları güncellemek için kullanılır.

Temel olarak, verilen bağlam kelimelerinden hedef kelimeyi tahmin etmek, verilen veriler için optimal ağırlık matrisini elde etmek için bir denklem olarak kullanılır.

İkinci kısmı cevaplamak için, sadece doğrusal bir toplamdan biraz karmaşık görünüyor.

  1. Bağlam kelimelerinin tüm kelime vektörlerini elde etme
  2. hBoyutu gizli katman vektörü bulmak için ortalamaNx1
  3. Boyutlu çıkış matrisini syn1( word2vec.cveya gensim) edininVxN
  4. Çarpın syn1göre h, elde edilen vektör olacak zboyuttaVx1
  5. Olasılık vektörünü , en yüksek olasılığın kelime dağarcığındaki hedef kelimenin tek sıcak temsilini y = softmax(z)gösterdiği boyutla hesaplayın Vx1. Vkelime Nboyutunu ve gömme vektörünün boyutunu belirtir.

Kaynak: http://cs224d.stanford.edu/lecture_notes/LectureNotes1.pdf

Güncelleme: Uzun kısa süreli bellek modelleri şu anda bir sonraki kelimeleri tahmin etmek için harika bir iş çıkarıyor. seq2seq modelleri tensorflow eğitiminde açıklanmıştır . Metin üretimi hakkında bir blog yazısı da var.


Teşekkür ederim ! Bunun herhangi bir uygulamasının farkında mısınız? (örneğin gensim'in bir parçası olarak). Aksi takdirde, hesaplamak çok karmaşık görünmüyor.
DED

Merhaba, eğitimli w2v gömme modelinden çıkış matrisini (örneğinizdeki syn1) nasıl alacağınız hakkında daha fazla bilgi verebilir misiniz? Bence w2v bitirme eğitiminde çıkış matrisini düşürdü.
Charles Chow

benim anlayışım temelinde, 2. sorunun cevabı çıktı matrisini yeniden yapılandırmak, doğru mu?
Charles Chow

1
Bunun bir dizi sınıflandırıcısı gibi çalışmadığını belirtmek gerekir. Kelimelerin sıralaması dikkate alınmaz.
görünen ad

syn1Sadece model kaydedilerek çıktı matrisi elde edilebilir . evet, sipariş göz ardı edilir, uygulama için aslında LSTM tabanlı seq2seq modeli ile gidebilir.
yazhi

4

Word2Vec'in en son sürümünde eksik kelime tahmini bir işlev olarak eklenmiştir. Elbette cümlenizin, modeli eğitmek için kullanılan Word2Vec modeli giriş sözdizimiyle eşleşmesi gerekir (küçük harfler, durma sözcükleri, vb.)

"Ne zaman açarım? Kapı" için ilk 3 kelimeyi tahmin etmek için kullanım:

print(model.predict_output_word(['When','I','open','door']), topn = 3)

Bunun center3. ve 4. kelime arasında olduğunu nasıl bilebilirdi ? Bu benim için anlamlı değil. Sadece sayı bağlamı kelimelerin bile floor(len(n)/2))floor(len(n)/2))+1
konabileceğini
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.