word2vec จะมีผลอย่างไรหากนำไปใช้กับภาษาอื่นและไวยากรณ์ต่างกัน ฉันหมายถึงว่า word2vec ถูกนำไปใช้กับคลังข้อมูลภาษาอังกฤษเป็นครั้งแรก จะมีผลกระทบใดๆ หรือไม่หากเราใช้คลังข้อมูลภาษาอื่น
word2vec ด้วยไวยากรณ์ที่แตกต่างกัน
คำตอบ (2)
Word2vec ถูกนำไปใช้กับหลายภาษา และยังเป็นส่วนหนึ่งของกลยุทธ์การแปลภาษาเป็นภาษา โดยที่โมเดล word2vec จะได้เรียนรู้ในแต่ละภาษาแยกกัน
Word2vec ไม่ได้ขึ้นอยู่กับลักษณะเฉพาะของไวยากรณ์ภาษาอังกฤษ แต่เพียงต้องการเพียงลำดับการป้อนข้อมูลของคำในการเรียงลำดับตามธรรมชาติ
(ภาษาที่คำไม่ได้ระบุอย่างชัดเจนด้วยช่องว่าง/เครื่องหมายวรรคตอนแทรกแซงอาจต้องใช้โทเค็นที่ซับซ้อนมากขึ้นก่อนที่จะส่งลำดับคำไปยังการฝึกอบรม word2vec แต่นั่นอยู่นอกอัลกอริธึม word2vec เอง และเมื่อได้รับโทเค็นคำที่เหมาะสม word2vec ควรจะยังคงสามารถ เพื่อเรียนรู้คำเวกเตอร์ที่มีการจัดเรียงตามปกติที่ต้องการ)
คุณไม่สามารถเปรียบเทียบการฝังคำจากแบบจำลองที่ได้รับการฝึกในองค์กรที่แตกต่างกันได้ คุณจะได้ผลลัพธ์ที่ไร้สาระเนื่องจากโมเดล A ไม่มีความรู้เกี่ยวกับบริบทที่มีการเห็นคำจากโมเดล B
เป็นไปได้ที่จะแปลงคำที่ฝังจากโมเดล A ให้เป็นเวกเตอร์ใหม่ที่มีอยู่ในปริภูมิเวกเตอร์ของโมเดล B ซึ่งคล้ายกับการแปล และเวกเตอร์คำใหม่ควรใกล้กับคำในคลังข้อมูลของโมเดลอื่นที่คล้ายคลึงกัน มีความหมายตามคำเดิมของคุณ (สมมติว่าทั้งสองโมเดลได้รับการฝึกอบรมเกี่ยวกับข้อมูลที่ครอบคลุมช่วงบริบทที่คล้ายคลึงกัน)
ฉันได้เขียนแพ็คเกจขนาดเล็ก: transvec ซึ่งจะทำสิ่งนี้ให้คุณใน Python ช่วยให้คุณสามารถนำคำเวกเตอร์จากแบบจำลองที่ผ่านการฝึกอบรมมาล่วงหน้าสำหรับภาษาหนึ่งและแปลเป็นเวกเตอร์คำในภาษาที่แตกต่างไปจากเดิมอย่างสิ้นเชิง ต่อไปนี้คือตัวอย่างที่มีการแปลงคำระหว่างภาษาอังกฤษและรัสเซีย โดยใช้โมเดล Word2Vec ที่ผ่านการฝึกอบรมมาแล้ว:
import gensim.downloader
from transvec.transformers import TranslationWordVectorizer
# Pretrained models in two different languages.
ru_model = gensim.downloader.load("word2vec-ruscorpora-300")
en_model = gensim.downloader.load("glove-wiki-gigaword-300")
# Training data: pairs of English words with their Russian translations.
# The more you can provide, the better.
train = [
("king", "царь_NOUN"), ("tsar", "царь_NOUN"),
("man", "мужчина_NOUN"), ("woman", "женщина_NOUN")
]
bilingual_model = TranslationWordVectorizer(en_model, ru_model).fit(train)
# Find words with similar meanings across both languages.
bilingual_model.similar_by_word("царица_NOUN", 1) # "queen"
# [('king', 0.7763221263885498)]