छोटे पाठ फ़ाइलों पर word2vec लागू करना


11

मैं पूरी तरह से word2vec के लिए नया हूँ इसलिए pls इसे मेरे साथ सहन करें मेरे पास 1000-3000 के बीच, प्रत्येक ट्वीट के सेट के साथ पाठ फ़ाइलों का एक सेट है। मैंने एक सामान्य कीवर्ड ("kw1") चुना है और शब्द 2 kc का उपयोग करके "kw1" के लिए शब्दार्थिक रूप से प्रासंगिक शब्द खोजना चाहता हूं। उदाहरण के लिए यदि कीवर्ड "ऐप्पल" है, तो मैं इनपुट फ़ाइल के आधार पर "आईपैड" "ओएस" "मैक" जैसे संबंधित शब्दों को देखने की उम्मीद करूंगा। तो "kw1" के लिए संबंधित शब्दों का यह सेट प्रत्येक इनपुट फ़ाइल के लिए अलग होगा क्योंकि word2vec को प्रत्येक फ़ाइल पर फ़ाइलों (उदाहरण के लिए, 5 इनपुट फ़ाइलें, रन वर्ड 2vec 5 बार) पर प्रशिक्षित किया जाएगा।

मेरा लक्ष्य सामान्य कीवर्ड ("kw1") दिए गए प्रत्येक इनपुट फ़ाइल के लिए संबंधित शर्तों के सेट को खोजना है, जिसका उपयोग कुछ अन्य उद्देश्यों के लिए किया जाएगा।

मेरे प्रश्न / शंकाएँ हैं:

  • क्या इस तरह से किसी कार्य के लिए word2vec का उपयोग करना समझ में आता है? क्या किसी इनपुट फ़ाइल के छोटे आकार पर विचार करना तकनीकी रूप से सही है?

मैंने code.google.com से कोड डाउनलोड किया है: https://code.google.com/p/word2vec/ और अभी इसे सूखा रन दिया है:

 time ./word2vec -train $file -output vectors.bin -cbow 1 -size 200 -window 10 -negative 25 -hs 1 -sample 1e-3 -threads 12 -binary 1 -iter 50

./distance vectors.bin 
  • अपने परिणामों से मैंने देखा कि जब मैं "k1" से संबंधित शब्द प्राप्त करने के लिए 'दूरी' उपकरण का उपयोग कर रहा हूं तो मुझे कई शोर शब्द (स्टॉपवर्ड्स) मिल रहे हैं। इसलिए मैंने स्टॉपवॉच और अन्य शोर शर्तों को हटा दिया जैसे कि उपयोगकर्ता उल्लेख। लेकिन मैंने कहीं भी नहीं देखा कि word2vec को क्लीन इनपुट डेटा की आवश्यकता है ...?

  • आप सही पैरामीटर कैसे चुनते हैं? मैं परिणाम देखता हूं (दूरी उपकरण चलाने से) बहुत भिन्न होता है जब मैं '-विंडो', '-iter' जैसे मापदंडों को बदलता हूं। मापदंडों के लिए सही मान खोजने के लिए मुझे किस तकनीक का उपयोग करना चाहिए। (मैनुअल परीक्षण और त्रुटि मेरे लिए संभव नहीं है क्योंकि मैं डेटासेट को स्केल कर रहा हूं)।

जवाबों:


9

Word2Vec ऐसे आकार के डेटासेट के लिए एक अच्छा विकल्प नहीं है। यदि मैंने देखे गए शोधों से, यह अपनी शक्ति को प्राप्त कर लेगा यदि आप कम से कम दो मिलियन शब्दों को खिलाते हैं, तो 3k ट्वीट एक संक्षिप्त शब्द समानता के लिए पर्याप्त नहीं होंगे।


क्या हमें डेटा पूर्व प्रसंस्करण चरण के रूप में स्टॉपवॉच को हटाने की आवश्यकता है?
संस्कारम

2
नहीं, word2vec दृष्टिकोण में आपको ऐसा करने की आवश्यकता नहीं है, क्योंकि एल्गोरिथ्म स्वयं शब्दों में समानता खोजने के लिए एक व्यापक संदर्भ पर निर्भर करता है, इसलिए शब्दों को रोकें (जिनमें से अधिकांश प्रस्ताव, सर्वनाम और ऐसे हैं) एल्गोरिथ्म के लिए एक महत्वपूर्ण गधे हैं। ।
17:१६

लेकिन जब मैं किसी दिए गए शब्द के समान शब्द खोजने के लिए दूरी टूल का उपयोग कर रहा था, तो स्टॉपवार्ड हटाए गए संस्करण ने मुझे बिना संस्करण के समझदार शब्द दिए। क्या आप अनुमान लगा सकते हैं कि इसका क्या मतलब है?
संसमारा १५'१६

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

इनपुट के लिए धन्यवाद, अब और अधिक समझ में आता है। इसके अलावा जब से word2vec वाक्य द्वारा इनपुट वाक्य को संसाधित करता है, तो क्या होगा यदि मैं इनपुट दस्तावेज़ में वाक्यों को मिला दूं? यह पूरी तरह से आउटपुट वैक्टर को बदलना चाहिए? यह भी फिर से, यह भेजा द्वारा भेजा गया प्रसंस्करण है, शब्द 2vec doc2vec से कैसे भिन्न होता है? एक बार फिर धन्यवाद।
संसमारा १५'१६ को
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.