फीचर वेक्टर पाने के लिए, पूरे दस्तावेज़ में शब्द एम्बेडिंग लागू करें


38

मैं पर्यवेक्षित सीखने के साथ उपयोग के लिए उपयुक्त एक फीचर वेक्टर में दस्तावेज़ को मैप करने के लिए एम्बेडिंग शब्द का उपयोग कैसे करूं?

एक शब्द प्रत्येक शब्द को एक वेक्टर v , R d में मैप करता है , जहां d कुछ नॉट -बहुत-बड़ी संख्या (जैसे, 500) है। लोकप्रिय शब्द embeddings शामिल word2vec और दस्तानेwvRdd

मैं दस्तावेजों को वर्गीकृत करने के लिए पर्यवेक्षित शिक्षण लागू करना चाहता हूं। मैं वर्तमान में बैग-ऑफ-शब्द प्रतिनिधित्व का उपयोग करके एक सुविधा वेक्टर के लिए प्रत्येक दस्तावेज़ को मैप कर रहा हूं, फिर एक ऑफ-द-शेल्फ क्लासिफायरियर लागू कर रहा हूं। मैं एक मौजूदा पूर्व-प्रशिक्षित शब्द एम्बेडिंग पर आधारित कुछ शब्दों के साथ बैग-ऑफ-शब्द फ़ीचर वेक्टर को प्रतिस्थापित करना चाहता हूँ, शब्दार्थ शब्द में निहित अर्थ ज्ञान का लाभ उठाने के लिए। क्या ऐसा करने का कोई मानक तरीका है?

मैं कुछ संभावनाओं की कल्पना कर सकता हूं, लेकिन मुझे नहीं पता कि क्या ऐसा कुछ है जो सबसे अधिक समझ में आता है। उम्मीदवार दृष्टिकोण मैंने माना है:

  • मैं दस्तावेज़ में प्रत्येक शब्द के लिए वेक्टर की गणना कर सकता हूं, और उन सभी को औसत कर सकता हूं। हालाँकि, ऐसा लगता है कि यह बहुत सारी जानकारी खो सकता है। उदाहरण के लिए, बैग-ऑफ-वर्ड्स प्रतिनिधित्व के साथ, अगर कुछ शब्द हैं जो वर्गीकरण कार्य के लिए अत्यधिक प्रासंगिक हैं और अधिकांश शब्द अप्रासंगिक हैं, तो क्लासिफायर आसानी से सीख सकता है; यदि मैं दस्तावेज़ में सभी शब्दों के लिए वैक्टर औसत करता हूं, तो क्लासिफायर के पास कोई मौका नहीं है।

  • सभी शब्दों के लिए वैक्टर को समेटने से काम नहीं चलता है, क्योंकि यह एक निश्चित आकार की सुविधा वेक्टर की ओर नहीं ले जाता है। इसके अलावा यह एक बुरे विचार की तरह लगता है क्योंकि यह किसी शब्द के विशिष्ट स्थान के प्रति अत्यधिक संवेदनशील होगा।

  • मैं सभी शब्दों की शब्दावली को क्लस्टर करने के लिए एम्बेड करने वाले शब्द का उपयोग कर सकता हूं, 1000 क्लस्टर, जहां मैं शब्द समानता के माप के रूप में वैक्टर पर कोसाइन समानता का उपयोग करता हूं। फिर, बैग-ऑफ-वर्ड्स के बजाय, मेरे पास एक बैग-ऑफ-क्लस्टर्स हो सकता है: क्लासफ़ायर को आपूर्ति की जाने वाली सुविधा वेक्टर एक 1000-वेक्टर हो सकती है, जहां वें घटक दस्तावेज़ में शब्दों की संख्या की गणना करता है जो क्लस्टर का हिस्सा हैं मैंii

  • एक शब्द को देखते हुए , इन शब्द embeddings मुझे शीर्ष 20 सबसे मिलते जुलते शब्दों का एक सेट की गणना करते हैं डब्ल्यू 1 , ... , डब्ल्यू 20 और उनकी समानता स्कोर रों 1 , ... , एस 20 । मैं इस का उपयोग करके बैग-जैसे शब्दों की सुविधा वेक्टर को अनुकूलित कर सकता था। जब मैं शब्द को देखने के डब्ल्यू तत्व शब्द के लिए इसी बढ़ाने के लिए, इसके अलावा में डब्ल्यू द्वारा 1 , मैं भी तत्व शब्द के लिए इसी को बढ़ा सकता है डब्ल्यू 1 से रों 1 , तत्व शब्द के लिए इसी को बढ़ा देते डब्ल्यू 2 सेww1,,w20s1,,s20ww1w1s1w2 , और इतने पर।s2

क्या कोई विशिष्ट दृष्टिकोण है जो दस्तावेज़ वर्गीकरण के लिए अच्छी तरह से काम करने की संभावना है?


मैं पैरा 2vec या doc2vec की तलाश नहीं कर रहा हूँ; उन लोगों को एक बड़े डेटा कॉर्पस पर प्रशिक्षण की आवश्यकता होती है, और मेरे पास एक बड़ा डेटा कॉर्पस नहीं है। इसके बजाय, मैं एक मौजूदा शब्द एम्बेडिंग का उपयोग करना चाहता हूं।


1
क्या आपने पूर्व-प्रशिक्षित एम्बेडिंग का उपयोग करते हुए दस्तावेजों का प्रतिनिधित्व करने के लिए एक विशिष्ट विधि पर निर्णय लिया है? शायद यह थोड़ा मदद कर सकता है?
turdus-merula

1
@ user115202, स्वच्छ! यह मेरे द्वारा की गई समस्या को काफी हल नहीं करता है, लेकिन यह एक चतुर विचार है जो जानने लायक है - इसे इंगित करने के लिए धन्यवाद! मुझे कभी भी इस समस्या का बहुत अच्छा समाधान नहीं मिला जो कि केवल बैग-ऑफ-वर्ड्स का उपयोग करने से बेहतर था। हो सकता है कि यह सिर्फ शब्द एम्बेडिंग अच्छा न हो। धन्यवाद!
डीडब्ल्यू

यह भी आपकी समस्या से संबंधित है, शायद पहले की तुलना में थोड़ा अधिक है: भारित शब्द एम्बेडिंग एकत्रीकरण का उपयोग करते हुए बहुत ही कम ग्रंथों के लिए प्रतिनिधित्व सीखना
तेरस-मेरुला


1
RNN का उपयोग क्यों नहीं किया जाता है? चर लंबाई के दस्तावेज़ RNN के लिए कोई समस्या नहीं हैं। Wildml.com/2015/09/…
kalu

जवाबों:


23

एक सरल तकनीक जो छोटे ग्रंथों (जैसे, एक वाक्य या एक ट्वीट) के लिए यथोचित काम करने के लिए प्रतीत होती है, दस्तावेज़ में प्रत्येक शब्द के लिए सदिश की गणना करना है, और फिर समन्वय-वार माध्य, न्यूनतम या अधिकतम का उपयोग करके उन्हें एकत्र करना है।

nv1,v2,,vnRdmin(v1,,vn)max(v1,,vn)uui=min(vi1,,vin), और इसी तरह अधिकतम के लिए। फ़ीचर वेक्टर इन दो वैक्टरों का संघटन है, इसलिए हम में एक फ़ीचर वेक्टर प्राप्त करते हैं । मुझे नहीं पता कि यह बैग-ऑफ-वर्ड्स प्रतिनिधित्व से बेहतर या बुरा है, लेकिन छोटे दस्तावेजों के लिए मुझे संदेह है कि यह बैग-ऑफ-वर्ड्स से बेहतर प्रदर्शन कर सकता है, और यह पूर्व-प्रशिक्षित शब्द एम्बेडिंग का उपयोग करने की अनुमति देता है।R2d

TL; DR: हैरानी की बात है, न्यूनतम और अधिकतम काम करता है यथोचित रूप से अच्छी तरह से।

संदर्भ:

भारित शब्द एम्बेडिंग एकत्रीकरण का उपयोग करके बहुत छोटे ग्रंथों के लिए प्रतिनिधित्व सीखना। सेड्रिक डी बूम, स्टीवन वैन कैनीट, थॉमस डेमेस्टर, बार्ट धोद। पैटर्न मान्यता पत्र; arXiv: १,६०७.००,५७०। सार , पीडीएफ । विशेष रूप से टेबल्स 1 और 2 देखें।

श्रेय: मेरे ध्यान में इस पेपर को लाने के लिए @ user115202 को धन्यवाद।


4
लघु पाठ के लिए, एवीजी / मिनट / अधिकतम अच्छी तरह से काम कर सकता है, लेकिन क्या होगा यदि लंबे पाठ, जैसे समाचार लेख?
एवोकैडो

1
जो कोई भी उस कागज के माध्यम से पढ़ता है और मेरे रूप में भ्रमित हो जाता है: कागज @DW द्वारा उल्लिखित दृष्टिकोण पर ध्यान केंद्रित नहीं करता है, वे केवल "5.1। आधारभूत" के तहत आधारभूत दृष्टिकोण के रूप में इसका उल्लेख करते हैं। कागज का शरीर अपनी स्वयं की तकनीक पर ध्यान केंद्रित करता है, जिसमें एम्बेडिंग का उपयोग करके एक क्लासिफायरियर प्रशिक्षण शामिल होता है, जो यहां दिए गए दृष्टिकोण से बहुत अधिक जटिल है!
मिगवेल

16

आप शब्द 2vec के समान doc2vec का उपयोग कर सकते हैं और बड़े कॉर्पस से पूर्व प्रशिक्षित मॉडल का उपयोग कर सकते हैं। फिर .infer_vector()डॉक्यूमेंट वेक्टर बनाने के लिए gensim जैसी किसी चीज़ का उपयोग करें । Doc2vec प्रशिक्षण के लिए प्रशिक्षण सेट से आने की आवश्यकता नहीं है।

एक अन्य विधि एक आरएनएन, सीएनएन का उपयोग करना है या वर्गीकृत करने के लिए आगे के नेटवर्क को खिलाना है। यह प्रभावी रूप से वैक्टर शब्द को एक दस्तावेज़ वेक्टर में जोड़ता है।

आप एक दूसरे के पूरक के लिए घने (शब्द वेक्टर) सुविधाओं के साथ विरल सुविधाओं (शब्दों) को भी जोड़ सकते हैं। तो आपका फ़ीचर मैट्रिक्स शब्द वैक्टर के औसत के साथ शब्द मैट्रिक्स के विरल बैग का एक संयोजन होगा। https://research.googleblog.com/2016/06/wide-deep-learning-better-together-with.html

एक और दिलचस्प तरीका यह है कि एक समान एल्गोरिथ्म का उपयोग word2vec के लिए किया जाए लेकिन लक्ष्य शब्द की भविष्यवाणी करने के बजाय, आप लक्ष्य लेबल की भविष्यवाणी कर सकते हैं। यह सीधे वर्गीकरण कार्य के लिए वैक्टर शब्द को ट्यून करता है। http://arxiv.org/pdf/1607.01759v2.pdf

अधिक तदर्थ विधियों के लिए, आप वाक्यविन्यास के आधार पर अलग-अलग शब्दों को तौलने का प्रयास कर सकते हैं। उदाहरण के लिए, आप निर्धारकों की तुलना में अधिक दृढ़ता से क्रियाओं का वजन कर सकते हैं।


6

यदि आप अंग्रेजी पाठ के साथ काम कर रहे हैं और पहले से प्रशिक्षित शब्द एम्बेडिंग शुरू करना चाहते हैं, तो कृपया इसे देखें: https://code.google.com/archive/p/word2vec/

यह word2vec का मूल C संस्करण है। इस रिलीज़ के साथ, उन्होंने Google समाचार लेखों से लिए गए 100 बिलियन शब्दों पर प्रशिक्षित एक मॉडल भी जारी किया (देखें शीर्षक: "पूर्व-प्रशिक्षित शब्द और वाक्यांश वैक्टर")।

दस्तावेज़ वर्गीकरण के लिए शब्द एम्बेडिंग पर काम करने की मेरी राय और अनुभव में, doc2vec (CBOW के साथ) जैसे मॉडल शब्दों के बैग की तुलना में बहुत बेहतर काम करता है।

चूंकि, आपके पास एक छोटा सा कोष है, मेरा सुझाव है, आप ऊपर उल्लिखित पूर्व-प्रशिक्षित एम्बेडिंग द्वारा अपने शब्द एम्बेडिंग मैट्रिक्स को इनिशियलाइज़ करते हैं। फिर doc2vec कोड में पैराग्राफ वेक्टर के लिए प्रशिक्षित करें। यदि आप अजगर के साथ सहज हैं, तो आप इसके gensim संस्करण की जांच कर सकते हैं, जिसे संशोधित करना बहुत आसान है।

इस पेपर को भी देखें जो शब्द 2vec / doc2vec के आंतरिक कामकाज का विवरण देता है: http://arxiv.org/abs/1411.2738 । इससे gensim कोड को समझना बहुत आसान हो जाएगा।


1
सुझाव के लिए धन्यवाद। मैं एक शब्द एम्बेडिंग के लिए नहीं कह रहा हूँ; मुझे पहले से ही पता है कि एक पूर्व-प्रशिक्षित शब्द एम्बेडिंग कैसे प्राप्त की जाती है (मैंने अपने प्रश्न में word2vec का उल्लेख किया है)। मेरा सवाल यह है कि प्री-प्रशिक्षित शब्द एम्बेडिंग से फीचर वैक्टर का निर्माण कैसे किया जाए। मैं doc2vec के संदर्भ की सराहना करता हूं, लेकिन मेरा कॉरपस काफी छोटा है और इसलिए मुझे संदेह है / डर है कि doc2vec कोड को प्रशिक्षित करने की कोशिश करने से ओवरफिट होगा और खराब प्रदर्शन होगा (भले ही मैं मैट्रिक्स को पूर्व प्रशिक्षित एंबेडेड के साथ आरंभीकृत करता हूं)।
DW
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.