word2vec ด้วยไวยากรณ์ที่แตกต่างกัน

word2vec จะมีผลอย่างไรหากนำไปใช้กับภาษาอื่นและไวยากรณ์ต่างกัน ฉันหมายถึงว่า word2vec ถูกนำไปใช้กับคลังข้อมูลภาษาอังกฤษเป็นครั้งแรก จะมีผลกระทบใดๆ หรือไม่หากเราใช้คลังข้อมูลภาษาอื่น


person Meru Run    schedule 28.07.2019    source แหล่งที่มา


คำตอบ (2)


Word2vec ถูกนำไปใช้กับหลายภาษา และยังเป็นส่วนหนึ่งของกลยุทธ์การแปลภาษาเป็นภาษา โดยที่โมเดล word2vec จะได้เรียนรู้ในแต่ละภาษาแยกกัน

Word2vec ไม่ได้ขึ้นอยู่กับลักษณะเฉพาะของไวยากรณ์ภาษาอังกฤษ แต่เพียงต้องการเพียงลำดับการป้อนข้อมูลของคำในการเรียงลำดับตามธรรมชาติ

(ภาษาที่คำไม่ได้ระบุอย่างชัดเจนด้วยช่องว่าง/เครื่องหมายวรรคตอนแทรกแซงอาจต้องใช้โทเค็นที่ซับซ้อนมากขึ้นก่อนที่จะส่งลำดับคำไปยังการฝึกอบรม word2vec แต่นั่นอยู่นอกอัลกอริธึม word2vec เอง และเมื่อได้รับโทเค็นคำที่เหมาะสม word2vec ควรจะยังคงสามารถ เพื่อเรียนรู้คำเวกเตอร์ที่มีการจัดเรียงตามปกติที่ต้องการ)

person gojomo    schedule 28.07.2019

คุณไม่สามารถเปรียบเทียบการฝังคำจากแบบจำลองที่ได้รับการฝึกในองค์กรที่แตกต่างกันได้ คุณจะได้ผลลัพธ์ที่ไร้สาระเนื่องจากโมเดล 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)]
person big-o    schedule 16.05.2020