Doc2vec (gensim) - Görünmeyen cümlelerin etiketini nasıl çıkarabilirim?


14

https://radimrehurek.com/gensim/models/doc2vec.html

Örneğin, doc2vec ile

"aaaaaAAAAAaaaaaa" - "etiket 1"

"BbbbbbBBBBBbbbb" - "etiket 2"

"aaaaAAAAaaaaAA" ​​etiketini Doc2vec kullanarak 1 olarak belirleyebilir miyiz?

Doc2vec'in kelime vektörlerini ve etiket vektörlerini eğitebileceğini biliyorum. Bu vektörleri kullanarak, hangi etikette görünmeyen cümleler (eğitilmiş kelimelerin kombinasyonu) çıkarabiliriz?

Yanıtlar:


11

Bu sorunun başlığı metnine ayrı bir sorudur, bu yüzden ikisini de ayrı ayrı cevaplayacağım (birinin diğerine yol açtığı göz önüne alındığında).

  1. Görünmeyen cümleleri nasıl çıkarabilirim:
# ... trained model stored in var model
list_of_words = ["this", "is", "a", "new","unseen", "sentence"]
inferred_embedding = model.infer_vector(list_of_words)

WRN×PDRM×Rk

1Mi=1M1|Di|t=k|Di1|klog(p(wti|wtki,...,wt+ki,Di))

Diith|Di|wtitthithD

WD

  1. Muhtemelen görünmeyen bir cümlenin eğitim setindeki bir cümleyle tam olarak eşleştiğini çıkarabilir miyiz?

D

Rastgele tohumun düzeltilmesi bile işe yaramayabilir, yakınsamasını etkileyebilecek diğer birçok değişken vardır, lütfen ilk cevaba bakınız: https://github.com/RaRe-Technologies/gensim/issues/374 .

Her durumda, veri setinizdeki en benzer etiketi, sadece eğitim setiniz üzerinde tekrarlayarak ve benzerliği çıkarılan vektörle karşılaştırarak çıkarılmış bir cümleye bulabilirsiniz. Ama neden eğitim setindeki bir şeyle tam olarak eşleşmek istesin ki? bu belge yerleştirme amaçları için düzenli ifadeler denetimli veya denetimsiz öğrenme görevleri (sınıflandırma ve kümeleme) içindir.


0

Ben bugün bu sorunu çözmeye çalışıyordu ve coudnt eğitimli modelde değil eğitimli modelde değil çıkarılan belge vektör arasındaki benzerliği hesaplayan gensim.Doc2Vec tarafından verilen herhangi bir modül bulmak. Temel olarak bunu yaptım.

from scipy import spatial
inferred_vector=model.infer_vector(sentence.split())
for labels in labelled_documents:
    print (1-  spatial.distance.cosine(inferred_vector,model.docvecs[labels]))

0

Gensim Doc2Vec öğreticisine dayanarak, böyle bir şey yapabilirsiniz.

inferred_vector = model_dmm.infer_vector(sentence.split())
sims = model.docvecs.most_similar([inferred_vector], topn=len(model.docvecs))

Bu size tüm etiketleri içeren bir başlık listesi ve her bir etikete ait yeni belgenizle ilişkili olasılığı verecektir. etiketiniz olarak en büyük değeri alabilirsiniz.

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.