दस्तावेजों के बीच की दूरी की गणना के कुछ मानक तरीके क्या हैं?


34

जब मैं "दस्तावेज़" कहता हूं, तो मेरे पास विकिपीडिया लेखों और समाचारों जैसे वेब पेज हैं। मैं उत्तरार्द्ध के लिए मजबूत वरीयता के साथ वेनिला लेक्सिकल डिस्टेंस मेट्रिक्स या अत्याधुनिक सिमेंटिक डिस्टेंस मेट्रिक्स देने वाले उत्तर पसंद करता हूं।

जवाबों:


48

इस बारे में जाने के विभिन्न तरीके हैं कि आप कितनी अर्थपूर्ण जानकारी को बनाए रखना चाहते हैं और अपने दस्तावेज़ों को टोकन के लिए कितना आसान बनाना चाहते हैं (html दस्तावेज़ों को संभवतः टोकन लेना बहुत कठिन होगा, लेकिन आप टैग और संदर्भ के साथ कुछ कर सकते हैं। ।)

उनमें से कुछ का उल्लेख फ़्रेचर द्वारा किया गया है, और user1133029 द्वारा पैराग्राफ वैक्टर वास्तव में एक ठोस है, लेकिन मुझे लगा कि मैं विभिन्न दृष्टिकोणों के plusses और minuses के बारे में कुछ और गहराई में जाऊंगा।

  • कोसाइन डिस्टेंस - एक सच्ची कोशिश की गई, कोसाइन डिस्टेंस संभवतः कई डोमेन में सामान्य रूप से उपयोग की जाने वाली सबसे आम दूरी की मीट्रिक है। इसके साथ ही कहा गया है, कि कोसाइन डिस्टेंस में बहुत कम जानकारी है जिसे वास्तव में किसी भी अर्थ में वापस मैप किया जा सकता है, जो इस स्थिति के लिए गैर-आदर्श लगता है।
  • लेवेनशीन दूरी - इसके रूप में भी जाना जाता है edit distance, यह आमतौर पर व्यक्तिगत टोकन स्तर (शब्द, बिग्रेड, आदि ...) पर उपयोग किया जाता है। सामान्य तौर पर मैं इस मीट्रिक की सिफारिश नहीं करूंगा क्योंकि यह न केवल किसी भी शब्दार्थ संबंधी सूचनाओं को खारिज करता है, बल्कि बहुत ही भिन्न रूप से बहुत भिन्न शब्द परिवर्तनों का इलाज करता है, लेकिन यह इस तरह की चीज़ के लिए एक अत्यंत सामान्य मीट्रिक है
  • एलएसए - तकनीक के एक बड़े शस्त्रागार का एक हिस्सा है जब इसे कहा जाता है कि दस्तावेज समानता का मूल्यांकन करने की बात आती है topic modeling। LSA हाल ही में फैशन से बाहर हो गया है, और मेरे अनुभव में, यह काफी मजबूत विषय मॉडलिंग दृष्टिकोण नहीं है, लेकिन इसे लागू करने के लिए अपेक्षाकृत सरल है और कुछ खुले स्रोत कार्यान्वयन हैं
  • एलडीए - क्या एक तकनीक का भी उपयोग किया जाता है topic modeling, लेकिन यह इस बात से अलग LSAहै कि यह वास्तव में आंतरिक अभ्यावेदन सीखता है जो अधिक सहज और सहज होते हैं। सामान्य तौर पर, आपके द्वारा प्राप्त किए जाने वाले परिणाम LDAमॉडलिंग दस्तावेज़ समानता की तुलना में बेहतर होते हैं LSA, लेकिन यह सीखने के लिए बहुत अच्छा नहीं है कि विषयों के साथ दृढ़ता से भेदभाव कैसे करें।
  • पचिंको आवंटन - एलडीए के शीर्ष पर वास्तव में साफ-सुथरा विस्तार है। सामान्य तौर पर, यह केवल एक बेहतर सुधार वाला संस्करण है LDA, केवल नकारात्मक पक्ष यह है कि इसे प्रशिक्षित करने में थोड़ा अधिक समय लगता है और ओपन-सोर्स कार्यान्वयन के लिए थोड़ा मुश्किल होता है
  • word2vec - गूगल समझदारी से इस तरह के रूप तकनीक द्वारा उत्पन्न होने वाले विरल वैक्टर की तुलना में अधिक उचित वैक्टर करने के लिए शब्द और दस्तावेजों को कम करने के लिए तकनीक की एक श्रृंखला पर काम कर रहा है Count Vectorizersऔर TF-IDF। Word2vec महान है क्योंकि इसमें कई खुले स्रोत कार्यान्वयन हैं। एक बार जब आपके पास वेक्टर हो जाता है, तो किसी भी अन्य समानता मीट्रिक (जैसे कोसाइन दूरी) का उपयोग इसके ऊपर काफी अधिक प्रभावकारिता के साथ किया जा सकता है।
  • doc2vec - इसके रूप में भी जाना जाता है paragraph vectors, यह Google द्वारा दस्तावेजों की एक श्रृंखला में नवीनतम और सबसे बड़ा है, दस्तावेजों के घने वेक्टर प्रतिनिधित्व में देख रहा है। gensimअजगर में पुस्तकालय के एक कार्यान्वयन है word2vecकि सरल पर्याप्त है कि यह बहुत यथोचित निर्माण करने के लिए उपयोग किया जा सकता है doc2vec, लेकिन अगर आप इस मार्ग नीचे जाना चाहता हूँ मन में लाइसेंस रखना सुनिश्चित करें

आशा है कि मदद करता है, मुझे पता है अगर आप किसी भी सवाल है।


6

प्रत्येक नियम और विपक्ष के साथ प्रत्येक शब्दार्थ दूरी के कई उपाय हैं। यहां उनमें से कुछ दिए गए हैं:

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

एक सरल दृष्टिकोण के साथ शुरू करें और फिर अपने विशिष्ट मामले के मुद्दों के आधार पर आगे बढ़ें।


1
ध्यान दें कि एलएसए करते समय, आमतौर पर आप मूल डेटासेट के एलएसए अनुमानों पर कॉशन दूरी का उपयोग करते हैं। केवल स्पष्ट करने हेतु।
साइमन

6

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

यदि आप gensim (एक पायथन लाइब्रेरी) का उपयोग करते हैं, तो इसमें LSA, LDA और word2vec है, इसलिए आप आसानी से तुलना कर सकते हैं 3. doc2vec एक अच्छा विचार है, लेकिन यह बहुत अच्छा नहीं है और आपको इसे अपने आप को लागू करने की संभावना होगी जैसे मैं हूं। किसी भी खुले स्रोत के कार्यान्वयन से अनजान। यह प्रत्येक दस्तावेज़ के लिए अच्छी तरह से स्केल नहीं करता है, एक नया और अलग मॉडल बनाया जा रहा है जिसे एक धीमी मशीन लर्निंग एल्गोरिथ्म का उपयोग करके बनाया गया है। लेकिन यह शायद आपको सबसे सटीक परिणाम देगा। एलएसए और एलडीए भी अच्छी तरह से स्केल नहीं करते हैं (word2vec हालांकि), एलडीए सामान्य रूप से खराब होता है। गेंसिम का क्रियान्वयन हालांकि बहुत तेज है, क्योंकि इसमें पुनरावृत्त SVD का उपयोग किया गया है।

एक अन्य नोट, यदि आप शब्द 2vec का उपयोग करते हैं, तो आपको अभी भी दस्तावेज़ों से वैक्टर बनाने का एक तरीका निर्धारित करना होगा, क्योंकि यह आपको प्रति शब्द एक अलग वेक्टर देता है। ऐसा करने का सबसे सरल तरीका है कि प्रत्येक वेक्टर को सामान्य किया जाए और दस्तावेज़ में सभी शब्द वैक्टरों पर माध्य लिया जाए, या प्रत्येक शब्द के निष्क्रिय भार द्वारा भारित माध्य लिया जाए। तो यह 'word2vec का उपयोग करें' के रूप में सरल नहीं है, आपको दस्तावेज़ समानता की गणना करने के लिए आगे कुछ करने की आवश्यकता होगी।

मैं व्यक्तिगत रूप से एलएसए के साथ जाऊंगा, क्योंकि मैंने इसे अनुभवजन्य रूप से काम करते देखा है, और जेनसिम के पुस्तकालय को बहुत अच्छी तरह से तराशा है। हालांकि, कोई मुफ्त भोजन नहीं है, इसलिए अधिमानतः प्रत्येक विधि का प्रयास करें और देखें कि आपके डेटा के लिए कौन बेहतर है।


आपने वास्तव में LSA का उपयोग कैसे किया है? यह ध्यान देने योग्य है कि एलडीए वास्तव में एलएसए के आसपास एक बहुत पतला आवरण है (यह पहले से एक dirichlet के साथ pLSA है) जो सामान्य रूप से सामान्यीकरण को बढ़ाने के लिए अनुभवजन्य रूप से दिखाया गया है। आप लगभग निश्चित रूप से एलएसए के साथ बेहतर सटीकता देखेंगे, लेकिन यह आम तौर पर ओवरफिटिंग का एक परिणाम है, जो एलएसए के लिए एक बहुत ही उल्लेखनीय समस्या है। इसके अलावा, यहाँ पर स्केलिंग से आपका क्या मतलब है? doc2vec को वास्तव में प्रत्येक दस्तावेज़ के लिए एक नए मॉडल की आवश्यकता नहीं है, और गणना के लिए एलएसए और एलडीए के बीच कोई उल्लेखनीय अंतर नहीं है, दोनों बहुत ही स्केलेबल हैं।
स्लेटर विक्टरऑफ

मैंने एलएसए के साथ फिटिंग पर अधिक ध्यान नहीं दिया है, और जैसा मैंने कहा, मैंने कई अन्य लोगों से मुलाकात की है जिन्होंने एलडीए पर बेहतर प्रदर्शन देखा है। इसके अलावा, मैंने सेमेस्टर प्रतियोगिताओं में कई विजेता प्रविष्टियों में एलएसए का उपयोग किया है, मैंने एलडीए को एक विजेता प्रविष्टि में कभी नहीं देखा है। यह दस्तावेजों के बीच अर्थ समानता की तुलना करने के लिए शैक्षिक सम्मेलन है, इसलिए मुझे लगता है कि वे जानते हैं कि वे क्या कर रहे हैं। Doc2vec, यदि आप मिकोलोव के पैराग्राफ वेक्टर कार्यान्वयन की बात कर रहे हैं, तो प्रत्येक दस्तावेज़ पर अलग से SGD है। तो यह बहुत धीमी है।
साइमन

@SlaterVictoroff मुझे लगता है कि यह कहना है कि यह ओवरफिटिंग है। LDA को खोज / सूचना पुनर्प्राप्ति और सिफारिश के मामलों के लिए खराब माना जाता है, अनुभवजन्य रूप से एलएसए को बेहतर ढंग से काम करने के लिए दिखाया गया है और यह मेरे अपने अनुभव से भी मेल खाता है क्योंकि मैं अपने स्वयं के डेटा के खिलाफ इन निष्कर्षों को मान्य करना पसंद करता हूं। Doc2Vec के संस्करण प्रति दस्तावेज़ एक क्रमिक वंश करते हैं, यह Doc2Vec में उपयोग किए गए एल्गोरिथ्म पर निर्भर करता है, क्योंकि यह आमतौर पर बहुत सारे एल्गोरिदम को संदर्भित करता है।
शमौन

3

कला की स्थिति "पैरा वैक्टर" एक हालिया पेपर में पेश की गई प्रतीत होती है: http://cs.stanford.edu/~quocle/paragraph_vector.pdf । पैरा वैक्टर के बीच कोसाइन / यूक्लिडियन दूरी किसी भी अन्य दृष्टिकोण की तुलना में बेहतर काम करेगी। खुले स्रोत के कार्यान्वयन की कमी के कारण यह संभव नहीं है।

अगली सबसे अच्छी बात एलएसए वैक्टर के बीच कोसाइन दूरी या कच्चे बीओवी वैक्टर के बीच कोसाइन दूरी है। कभी-कभी यह अलग-अलग भार योजनाओं को चुनने के लिए बेहतर काम करता है, जैसे कि TF-IDF।


पैराग्राफ वेक्टर स्केलेबिलिटी के बारे में नीचे मेरी टिप्पणी पर ध्यान दें। यह तकनीक बहुत ही आशाजनक लग रही है, लेकिन इसे लागू करना कठिन है, और यह बिल्कुल भी अच्छा नहीं है, क्योंकि आप प्रत्येक दस्तावेज़ के लिए एक अलग सेवारत कर रहे हैं, जो बहुत महंगा है, अगर मुझे पेपर ठीक से याद है
साइमन

1

यह आपके लिए उपयोगी उपकरणों के बैग में स्थानीय संवेदनशील हैशिंग एल्गोरिदम के परिवार के लिए उपयोगी है । यह परिवार शब्दार्थ नहीं है। वास्तव में पाठ को बिट्स के अनुक्रम के रूप में माना जाता है। मुझे यह गंदे डेटा सेट में उपयोगी लगता है जब एक ही पाठ कई बार मामूली अंतर के साथ दिखाई देता है।

इस तरह के दस्तावेजों की पहचान के लिए आप ssdeep (जो कि Nilsimsa हैश पर आधारित है ) का उपयोग कर सकते हैं । Ssdeep मूल रूप से स्पैम के डोमेन के लिए योजना बनाई गई थी। स्पैमर्स अक्सर सटीक हस्ताक्षर (जैसे, md5 ) द्वारा पता लगाने को रोकने के लिए संदेश में छोटे बदलाव (एक स्थान जोड़ते हैं) करते हैं ) ) करते हैं।

चूंकि एक ही डेटा सेट में लगभग एक ही दस्तावेज़ के कई संस्करण सांख्यिकीय तरीकों के लिए कहर का कारण बनेंगे जो इस पर लागू होंगे, इस तरह के सफाई करना बहुत फायदेमंद हो सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.