2016-06-14 59 views
7

gensim.models.Word2Vec kütüphanesini kullanarak, en benzer kelimelerin listesini bulmak istediğiniz bir model ve bir "kelime" sağlama olanağınız vardır. :En benzer kelimeleri alın, kelimenin sözcüğünü (sözcü değil) belirtin

model = gensim.models.Word2Vec.load_word2vec_format(model_file, binary=True) 
model.most_similar(positive=[WORD], topn=N) 

Ben girdi olarak model ve bir "vektör" bir sistem vermek ve onların vektörler verilen vektör çok yakın olan (üst benzer kelimeleri dönmek için sistemin sormak için bir olasılık olup olmadığını merak). Ben 2 modeller (İngilizce ve Almanca), hem de onların en benzer Alman adayları bulmalıyız sunduğu birçok İngilizce kelimeler sahip olduğu iki dilli bir ortamda, bu işlevselliği gerek

model.most_similar(positive=[VECTOR], topn=N) 

: benzer bir şey.

model_EN = gensim.models.Word2Vec.load_word2vec_format(model_file_EN, binary=True) 
vector_w_en=model_EN[WORD_EN] 

ve daha sonra bu vektörler ile Alman modeli sorgulamak: Yapmak istediğim ne İngiliz modelinden her İngilizce kelimenin vektörü elde etmektir.

model_DE = gensim.models.Word2Vec.load_word2vec_format(model_file_DE, binary=True) 
model_DE.most_similar(positive=[vector_w_en], topn=N) 

Bunu, Word2vec paketindeki orijinal mesafe işlevini kullanarak C'de uygulamıştım. Ama şimdi diğer betiklerimle entegre edebilmek için pythonda olmalıyım.

gensim.models.Word2Vec kitaplığında veya bunu yapan diğer benzer kitaplıklarda zaten bir yöntem olup olmadığını biliyor musunuz? Bunu kendi başıma uygulamaya mı ihtiyacım var?

+0

'most_similar (..) 'size de puanları geri mu? Yazdığınız özel bir işlevin resmini çiziyorum, bu vektördeki her sözcük için 'most_similar' 'sözcüğünü çağırır, sonuçları ALL'dan aynı listeye ekler ve daha sonra skor ve sonuçlara göre sıralar. – nbryans

+0

Teşekkürler nbryans. Bunu yapan mevcut bir yöntem yoksa, bunu aşağıdaki gibi uygulamalıyım: kelime bilgisindeki her kelime için karşılık gelen vektörü modelden al. Giriş vektörünün ve iade edilenin kosinüs benzerliğini hesaplayın. Ve sonra en benzerleri döndürün. Fakat böyle bir yöntemin var olabileceğini düşündüm; ki öyle değil. – amin

cevap

6

vektör tarafından üst-N- en benzer kelimeleri döner similar_by_vector yöntemi:

similar_by_vector(vector, topn=10, restrict_vocab=None)