Apa input yang lebih baik untuk Word2Vec?

22

Ini lebih seperti pertanyaan NLP umum. Apa input yang tepat untuk melatih embedding kata yaitu Word2Vec? Haruskah semua kalimat yang dimiliki artikel menjadi dokumen terpisah dalam korpus? Atau haruskah setiap artikel menjadi dokumen dalam kata corpus? Ini hanya contoh menggunakan python dan gensim.

Corpus dibagi dengan kalimat:

SentenceCorpus = [["first", "sentence", "of", "the", "first", "article."],
                  ["second", "sentence", "of", "the", "first", "article."],
                  ["first", "sentence", "of", "the", "second", "article."],
                  ["second", "sentence", "of", "the", "second", "article."]]

Corpus dibagi berdasarkan artikel:

ArticleCorpus = [["first", "sentence", "of", "the", "first", "article.",
                  "second", "sentence", "of", "the", "first", "article."],
                 ["first", "sentence", "of", "the", "second", "article.",
                  "second", "sentence", "of", "the", "second", "article."]]

Pelatihan Word2Vec dengan Python:

from gensim.models import Word2Vec

wikiWord2Vec = Word2Vec(ArticleCorpus)
wacax
sumber

Jawaban:

14

Jawaban untuk pertanyaan ini adalah tergantung . Pendekatan utama adalah lulus dalam kalimat tokenized (jadi SentenceCorpusdalam contoh Anda), tetapi tergantung pada apa tujuan Anda dan apa yang Anda lihat, Anda mungkin ingin menggunakan keseluruhan artikel untuk mempelajari embeddings. Ini adalah sesuatu yang mungkin belum Anda ketahui sebelumnya - jadi Anda harus memikirkan bagaimana Anda ingin mengevaluasi kualitas embeddings, dan melakukan beberapa percobaan untuk melihat 'jenis' embeddings mana yang lebih berguna untuk tugas Anda ( s).

NBartley
sumber
Tepat di tempat. Saya menggunakan embeddings dalam model dan, seperti yang Anda sebutkan, ada peningkatan besar dalam kinerja prediksi model ketika saya menggunakan seluruh artikel. Jadi dalam hal apa pelatihan kalimat demi kalimat lebih unggul.
wacax
1
Anda harus melihat dan melihat bagaimana kata-kata yang memiliki vektor serupa saling terkait satu sama lain. Ada beberapa pekerjaan yang dilakukan pada ukuran jendela konteks dan jenis konteks yang menunjukkan bahwa jendela yang lebih kecil (dan mungkin ukuran dokumen yang lebih kecil, seperti kalimat), mungkin membuat kata-kata yang secara fungsional serupa (seperti negara bagian AS) daripada mirip secara topikal ( seperti negara bagian AS dan kata-kata yang berhubungan dengan pemerintah) memiliki vektor yang lebih mirip. Saya kebanyakan mengutip Omer Levy dan Yoav Goldberg's Dependency-Based Word Embeddings dari 2014. Namun saya bisa saja salah dan akan senang dikoreksi jika demikian.
NBartley
1

Sebagai tambahan untuk jawaban @ NBartley. Kepada siapa pun menemukan pertanyaan ini. Saya sudah mencoba menggunakan artikel / kalimat sebagai input untuk word2vec di Spark2.2, hasilnya sebagai berikut.

gunakan kalimat sebagai input:

masukkan deskripsi gambar di sini

gunakan artikel sebagai input:

masukkan deskripsi gambar di sini

Zachary
sumber
0

Untuk yang pertama, gensim memiliki kelas Word2Vec. Untuk yang terakhir, Doc2Vec.

http://rare-technologies.com/doc2vec-tutorial/


sumber
3
doc2vec secara substansial berbeda dari melakukan word2vec pada kumpulan artikel daripada kalimat. doc2vec akan belajar representasi dari artikel itu sendiri, bukan hanya kata-katanya.
jamesmf