word2vec'i küçük metin dosyalarına uygulama


11

Word2vec için tamamen yeniyim, bu yüzden lütfen benimle taşıyın. Ben 1000-3000 arasında, tweets bir dizi içeren metin dosyaları bir dizi var. Ben ortak bir anahtar kelime ("kw1") seçtim ve word2vec kullanarak "kw1" için anlamsal olarak alakalı terimler bulmak istiyor. Örneğin, anahtar kelime "elma" ise, girdi dosyasına dayalı olarak "ipad" "os" "mac" gibi ilgili terimleri görmeyi beklerim. Bu nedenle, "kw1" ile ilgili bu terim kümesi, her girdi dosyası için farklı olacaktır, çünkü word2vec tek tek dosyalar üzerinde eğitilecektir (örn., 5 girdi dosyası, her dosyada 5 kez word2vec çalıştırın).

Amacım, diğer bazı amaçlar için kullanılacak ortak anahtar kelime ("kw1") verildiğinde, her bir giriş dosyası için ilgili terim kümelerini bulmaktır.

Sorularım / şüphelerim:

  • Böyle bir görev için word2vec kullanmak mantıklı mı? bir girdi dosyasının küçük boyutu göz önünde bulundurulduğunda teknik olarak doğru mu?

Kodu code.google.com: https://code.google.com/p/word2vec/ adresinden indirdim ve aşağıdaki gibi kuru bir çalışma verdim :

 time ./word2vec -train $file -output vectors.bin -cbow 1 -size 200 -window 10 -negative 25 -hs 1 -sample 1e-3 -threads 12 -binary 1 -iter 50

./distance vectors.bin 
  • Benim sonuçlardan "kw1" ile ilgili terimleri almak için 'distance' aracını kullanırken birçok gürültülü terimler (stopwords) alıyorum gördüm. Bu yüzden stopwords ve kullanıcı söz gibi diğer gürültülü terimleri kaldırdım. Ama word2vec temiz girdi verileri gerektiren bir yerde görmedim ...?

  • Doğru parametreleri nasıl seçersiniz? '-Window', '-iter' gibi parametreleri değiştirdiğimde sonuçların mesafe aracını çalıştırdığından çok değiştiğini görüyorum. Parametreler için doğru değerleri bulmak için hangi tekniği kullanmalıyım. (veri kümesini ölçeklendireceğim için manuel deneme ve hata benim için mümkün değil).

Yanıtlar:


9

Word2Vec, bu boyuttaki bir veri kümesi için iyi bir seçim değildir. Gördüğüm araştırmalardan, en az birkaç milyon kelimeyi beslerseniz, gücünü açığa çıkaracak, 3k tweet'ler özlü bir kelime benzerliği için yeterli olmayacaktır.


veri ön işleme adımı olarak stopwords kaldırmamız gerekir mi?
samsamara

2
Hayır, word2vec yaklaşımında bunu yapmanıza gerek yoktur, çünkü algoritmanın kendisi kelimelerde benzerlikler bulmak için geniş bir bağlama dayanır, bu nedenle durdurma kelimeleri (çoğu edat, zamir ve benzeri) algoritma için önemli bir noktadır. .
chewpakabra

ancak belirli bir kelimeye en çok benzeyen kelimeyi bulmak için mesafe aracını kullanırken, durdurulan sözcüklerin bulunduğu sürüm bana sürümden daha anlamlı kelimeler verdi. bunun ne anlama geldiğini tahmin edebilir misin?
samsamara

Muhtemelen, çok dar bir bağlam kullanıyorsunuz: eğer modeliniz iki ileri ve geri kelimeye bakarsa, bağlamda en fazla 2 durdurma kelimesine sahip olacaksınız ve bu daha kötü sonuçlar verebilir. Bağlamı genişletirseniz (modeli daha büyük ve eğitim süresini daha uzun hale getirir), stopwords modeli ile size daha iyi sonuçlar verecektir.
chewpakabra

giriş için teşekkürler, şimdi daha mantıklı. Ayrıca word2vec giriş cümlesini cümle ile işlediğinden, giriş belgesindeki cümleleri karıştırırsam ne olur? çıktı vektörlerini tamamen değiştirmesi doğru mu? Ayrıca yine, gönderilen tarafından gönderilen işlem göz önüne alındığında, word2vec ile doc2vec arasındaki fark nedir? Tekrar teşekkürler.
samsamara
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.