जवाबों:
इस बारे में जाने के विभिन्न तरीके हैं कि आप कितनी अर्थपूर्ण जानकारी को बनाए रखना चाहते हैं और अपने दस्तावेज़ों को टोकन के लिए कितना आसान बनाना चाहते हैं (html दस्तावेज़ों को संभवतः टोकन लेना बहुत कठिन होगा, लेकिन आप टैग और संदर्भ के साथ कुछ कर सकते हैं। ।)
उनमें से कुछ का उल्लेख फ़्रेचर द्वारा किया गया है, और user1133029 द्वारा पैराग्राफ वैक्टर वास्तव में एक ठोस है, लेकिन मुझे लगा कि मैं विभिन्न दृष्टिकोणों के plusses और minuses के बारे में कुछ और गहराई में जाऊंगा।
edit distance
, यह आमतौर पर व्यक्तिगत टोकन स्तर (शब्द, बिग्रेड, आदि ...) पर उपयोग किया जाता है। सामान्य तौर पर मैं इस मीट्रिक की सिफारिश नहीं करूंगा क्योंकि यह न केवल किसी भी शब्दार्थ संबंधी सूचनाओं को खारिज करता है, बल्कि बहुत ही भिन्न रूप से बहुत भिन्न शब्द परिवर्तनों का इलाज करता है, लेकिन यह इस तरह की चीज़ के लिए एक अत्यंत सामान्य मीट्रिक हैtopic modeling
। LSA हाल ही में फैशन से बाहर हो गया है, और मेरे अनुभव में, यह काफी मजबूत विषय मॉडलिंग दृष्टिकोण नहीं है, लेकिन इसे लागू करने के लिए अपेक्षाकृत सरल है और कुछ खुले स्रोत कार्यान्वयन हैंtopic modeling
, लेकिन यह इस बात से अलग LSA
है कि यह वास्तव में आंतरिक अभ्यावेदन सीखता है जो अधिक सहज और सहज होते हैं। सामान्य तौर पर, आपके द्वारा प्राप्त किए जाने वाले परिणाम LDA
मॉडलिंग दस्तावेज़ समानता की तुलना में बेहतर होते हैं LSA
, लेकिन यह सीखने के लिए बहुत अच्छा नहीं है कि विषयों के साथ दृढ़ता से भेदभाव कैसे करें।LDA
, केवल नकारात्मक पक्ष यह है कि इसे प्रशिक्षित करने में थोड़ा अधिक समय लगता है और ओपन-सोर्स कार्यान्वयन के लिए थोड़ा मुश्किल होता हैCount Vectorizers
और TF-IDF
। Word2vec महान है क्योंकि इसमें कई खुले स्रोत कार्यान्वयन हैं। एक बार जब आपके पास वेक्टर हो जाता है, तो किसी भी अन्य समानता मीट्रिक (जैसे कोसाइन दूरी) का उपयोग इसके ऊपर काफी अधिक प्रभावकारिता के साथ किया जा सकता है।paragraph vectors
, यह Google द्वारा दस्तावेजों की एक श्रृंखला में नवीनतम और सबसे बड़ा है, दस्तावेजों के घने वेक्टर प्रतिनिधित्व में देख रहा है। gensim
अजगर में पुस्तकालय के एक कार्यान्वयन है word2vec
कि सरल पर्याप्त है कि यह बहुत यथोचित निर्माण करने के लिए उपयोग किया जा सकता है doc2vec
, लेकिन अगर आप इस मार्ग नीचे जाना चाहता हूँ मन में लाइसेंस रखना सुनिश्चित करेंआशा है कि मदद करता है, मुझे पता है अगर आप किसी भी सवाल है।
प्रत्येक नियम और विपक्ष के साथ प्रत्येक शब्दार्थ दूरी के कई उपाय हैं। यहां उनमें से कुछ दिए गए हैं:
एक सरल दृष्टिकोण के साथ शुरू करें और फिर अपने विशिष्ट मामले के मुद्दों के आधार पर आगे बढ़ें।
व्यक्तिगत रूप से मैंने एलएसए को हर बार एलडीए से बेहतर पाया है और हर डेटासेट पर मैंने इसे आजमाया है। मैंने अन्य लोगों से बात की है जिन्होंने एक ही बात कही है। इसका उपयोग दस्तावेजों के बीच अर्थ समानता को मापने के लिए कई सेमेवल प्रतियोगिताओं को जीतने के लिए भी किया जाता है, अक्सर एक वर्डनेट आधारित माप के साथ संयोजन में, इसलिए मैं यह नहीं कहूंगा कि यह फैशन से बाहर जा रहा है, या निश्चित रूप से एलडीए से नीच है, जो बेहतर है विषय मॉडलिंग के लिए और मेरे अनुभव में शब्दार्थ समानता नहीं, इसके विपरीत जो कुछ उत्तरदाताओं ने कहा है।
यदि आप gensim (एक पायथन लाइब्रेरी) का उपयोग करते हैं, तो इसमें LSA, LDA और word2vec है, इसलिए आप आसानी से तुलना कर सकते हैं 3. doc2vec एक अच्छा विचार है, लेकिन यह बहुत अच्छा नहीं है और आपको इसे अपने आप को लागू करने की संभावना होगी जैसे मैं हूं। किसी भी खुले स्रोत के कार्यान्वयन से अनजान। यह प्रत्येक दस्तावेज़ के लिए अच्छी तरह से स्केल नहीं करता है, एक नया और अलग मॉडल बनाया जा रहा है जिसे एक धीमी मशीन लर्निंग एल्गोरिथ्म का उपयोग करके बनाया गया है। लेकिन यह शायद आपको सबसे सटीक परिणाम देगा। एलएसए और एलडीए भी अच्छी तरह से स्केल नहीं करते हैं (word2vec हालांकि), एलडीए सामान्य रूप से खराब होता है। गेंसिम का क्रियान्वयन हालांकि बहुत तेज है, क्योंकि इसमें पुनरावृत्त SVD का उपयोग किया गया है।
एक अन्य नोट, यदि आप शब्द 2vec का उपयोग करते हैं, तो आपको अभी भी दस्तावेज़ों से वैक्टर बनाने का एक तरीका निर्धारित करना होगा, क्योंकि यह आपको प्रति शब्द एक अलग वेक्टर देता है। ऐसा करने का सबसे सरल तरीका है कि प्रत्येक वेक्टर को सामान्य किया जाए और दस्तावेज़ में सभी शब्द वैक्टरों पर माध्य लिया जाए, या प्रत्येक शब्द के निष्क्रिय भार द्वारा भारित माध्य लिया जाए। तो यह 'word2vec का उपयोग करें' के रूप में सरल नहीं है, आपको दस्तावेज़ समानता की गणना करने के लिए आगे कुछ करने की आवश्यकता होगी।
मैं व्यक्तिगत रूप से एलएसए के साथ जाऊंगा, क्योंकि मैंने इसे अनुभवजन्य रूप से काम करते देखा है, और जेनसिम के पुस्तकालय को बहुत अच्छी तरह से तराशा है। हालांकि, कोई मुफ्त भोजन नहीं है, इसलिए अधिमानतः प्रत्येक विधि का प्रयास करें और देखें कि आपके डेटा के लिए कौन बेहतर है।
कला की स्थिति "पैरा वैक्टर" एक हालिया पेपर में पेश की गई प्रतीत होती है: http://cs.stanford.edu/~quocle/paragraph_vector.pdf । पैरा वैक्टर के बीच कोसाइन / यूक्लिडियन दूरी किसी भी अन्य दृष्टिकोण की तुलना में बेहतर काम करेगी। खुले स्रोत के कार्यान्वयन की कमी के कारण यह संभव नहीं है।
अगली सबसे अच्छी बात एलएसए वैक्टर के बीच कोसाइन दूरी या कच्चे बीओवी वैक्टर के बीच कोसाइन दूरी है। कभी-कभी यह अलग-अलग भार योजनाओं को चुनने के लिए बेहतर काम करता है, जैसे कि TF-IDF।
यह आपके लिए उपयोगी उपकरणों के बैग में स्थानीय संवेदनशील हैशिंग एल्गोरिदम के परिवार के लिए उपयोगी है । यह परिवार शब्दार्थ नहीं है। वास्तव में पाठ को बिट्स के अनुक्रम के रूप में माना जाता है। मुझे यह गंदे डेटा सेट में उपयोगी लगता है जब एक ही पाठ कई बार मामूली अंतर के साथ दिखाई देता है।
इस तरह के दस्तावेजों की पहचान के लिए आप ssdeep (जो कि Nilsimsa हैश पर आधारित है ) का उपयोग कर सकते हैं । Ssdeep मूल रूप से स्पैम के डोमेन के लिए योजना बनाई गई थी। स्पैमर्स अक्सर सटीक हस्ताक्षर (जैसे, md5 ) द्वारा पता लगाने को रोकने के लिए संदेश में छोटे बदलाव (एक स्थान जोड़ते हैं) करते हैं ) ) करते हैं।
चूंकि एक ही डेटा सेट में लगभग एक ही दस्तावेज़ के कई संस्करण सांख्यिकीय तरीकों के लिए कहर का कारण बनेंगे जो इस पर लागू होंगे, इस तरह के सफाई करना बहुत फायदेमंद हो सकता है।