Word2vec मॉडल का उपयोग करके किसी शब्द का पूर्वानुमान लगाना


20

एक वाक्य दिया: "जब मैं ?? दरवाजा खोलता हूं तो यह अपने आप गर्म होने लगता है"

मैं संभव शब्दों की सूची प्राप्त करना चाहूँगा ?? एक संभावना के साथ।

शब्द 2vec मॉडल में उपयोग की जाने वाली मूल अवधारणा आस-पास के संदर्भ में दिए गए शब्द का "पूर्वानुमान" करना है।

एक बार मॉडल बन जाने के बाद, नए वाक्यों पर मेरी भविष्यवाणी कार्य करने के लिए सही संदर्भ वैक्टर ऑपरेशन क्या है?

क्या यह केवल एक रेखीय योग है?

model.most_similar(positive=['When','I','open','the','door','it','starts' ,'heating','automatically'])

मैंने उपरोक्त एल्गोरिथ्म को लागू किया और एक सवाल आया: सॉफ्टमैक्स का उपयोग क्यों किया जाता है? मैं आपको दो सामान्यीकरण कार्यों का एक उदाहरण दिखाता हूं: सॉफ्टमैक्स (w, t = 1.0) को परिभाषित करें : # स्रोत: gist.github.com/stober/1946926 e = np.exp (w / t) वापसी e / np .sum ( ई) सामान्यीकरण (डब्ल्यू): रिटर्न w / np.sum (w) a = np.array ([। 0002, .0001, .01, .03]) प्रिंट सामान्यीकरण (ए) प्रिंट सॉफ्टमैक्स (ए, टी = 1) [0.00496278 0.00248139 0.24813896 0.74441687] [0.24752496 0.24750021 0.24996263 0.25501221] हम देख सकते हैं, softmax देता है .03 लगभग एक ही संभावना (0.0001 की तुलना में जो है:) चलो outputs तुलना

जवाबों:


9

Word2vec दो मॉडल CBOW और स्किप-ग्राम में काम करता है। चलो सीबीओओ मॉडल लेते हैं, क्योंकि आपका प्रश्न उसी तरह से जाता है जो लक्ष्य शब्द की भविष्यवाणी करता है, आसपास के शब्दों को देखते हुए।

मूल रूप से, मॉडल इनपुट और आउटपुट वेट मैट्रिसेस विकसित करता है, जो एक छिपी हुई परत की मदद से इनपुट संदर्भ शब्द और आउटपुट लक्ष्य शब्द पर निर्भर करता है। इस प्रकार बैक-प्रोपेगेशन का उपयोग वज़न को अपडेट करने के लिए किया जाता है जब अनुमानित आउटपुट वेक्टर और वर्तमान आउटपुट मैट्रिक्स के बीच त्रुटि अंतर होता है।

मूल रूप से, दिए गए डेटा के लिए इष्टतम भार मैट्रिक्स प्राप्त करने के लिए दिए गए संदर्भ शब्दों से लक्ष्य शब्द की भविष्यवाणी करना समीकरण के रूप में उपयोग किया जाता है।

दूसरे भाग का उत्तर देने के लिए, यह एक रैखिक योग की तुलना में थोड़ा जटिल लगता है।

  1. संदर्भ शब्दों के सभी शब्द वैक्टर प्राप्त करें
  2. hआकार की छिपी हुई परत वेक्टर का पता लगाने के लिए उनका औसतNx1
  3. आउटपुट मैट्रिक्स syn1( word2vec.cया gensim) प्राप्त करें जो आकार का होVxN
  4. गुणा syn1करके h, परिणामी वेक्टर zआकार के साथ होगाVx1
  5. y = softmax(z)आकार के साथ संभाव्यता वेक्टर की गणना करें Vx1, जहां उच्चतम संभावना शब्दावली में लक्ष्य शब्द के एक-गर्म प्रतिनिधित्व को दर्शाती है। Vशब्दावली के आकार को Nदर्शाता है और एम्बेडिंग वेक्टर के आकार को दर्शाता है।

स्रोत: http://cs224d.stanford.edu/lecture_notes/LectureNotes1.pdf

अपडेट: दीर्घकालिक अल्पकालिक स्मृति मॉडल वर्तमान में अगले शब्दों की भविष्यवाणी करने में एक महान काम कर रहे हैं। seq2seq मॉडल को टेंसोफ़्लो ट्यूटोरियल में समझाया गया है । टेक्स्ट जनरेशन के बारे में एक ब्लॉग पोस्ट भी है ।


धन्यवाद ! क्या आप इसे लागू करने के बारे में जानते हैं? (उदाहरण के लिए जेनसिम के भाग के रूप में)। अन्यथा, यह गणना करने के लिए बहुत जटिल नहीं लगता है।
DED

नमस्ते, क्या आप मुझे इस बारे में अधिक जानकारी दे सकते हैं कि प्रशिक्षित w2v एम्बेडिंग मॉडल से आउटपुट मैट्रिक्स (आपके उदाहरण में syn1) कैसे प्राप्त करें? मुझे लगता है कि प्रशिक्षण समाप्त होने पर w2v ने आउटपुट मैट्रिक्स को गिरा दिया।
चार्ल्स चो

मेरी समझ के आधार पर, आपके 2 वें प्रश्न का उत्तर आउटपुट मैट्रिक्स को फिर से बनाना है, क्या यह सही है?
चार्ल्स चॉ

1
मुझे लगता है कि यह ध्यान देने योग्य है कि यह एक अनुक्रम क्लासिफायर की तरह काम नहीं कर रहा है। शब्दों के आदेश की अनदेखी की जाती है।
डिस्प्लेनेम

syn1बस मॉडल को सहेजकर आउटपुट मैट्रिक्स प्राप्त कर सकता है । हां, आदेश की अनदेखी की जाती है, आवेदन के लिए वास्तव में एलएसटीएम आधारित seq2seq मॉडल के साथ जा सकता है।
यज़ीह

4

Word2Vec के नवीनतम संस्करण में कार्यक्षमता के रूप में मिसिंग शब्द भविष्यवाणी को जोड़ा गया है। निश्चित रूप से आपके वाक्य को मॉडल को प्रशिक्षित करने के लिए उपयोग किए जाने वाले Word2Vec मॉडल इनपुट सिंटैक्स से मिलान करने की आवश्यकता है (कम मामले के अक्षर, स्टॉप शब्द, आदि)।

"जब मैं खुला? दरवाजा" के लिए शीर्ष 3 शब्दों की भविष्यवाणी के लिए उपयोग:

print(model.predict_output_word(['When','I','open','door']), topn = 3)

यह कैसे पता चला कि center3 और 4 वें शब्द के बीच था? यह मेरे लिए कोई मतलब नहीं है। मैं कल्पना करूंगा कि केवल संख्या के संदर्भ शब्दों को भी रखा जा सकता है और यह floor(len(n)/2))floor(len(n)/2))+1
बजे के
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.