पाठ क्लस्टरिंग के लिए एल्गोरिदम


17

मुझे समूहों में उनके अर्थों द्वारा भारी मात्रा में वाक्यों के क्लस्टरिंग की समस्या है। यह एक समस्या के समान है जब आपके पास बहुत सारे वाक्य हैं और उन्हें उनके अर्थों के साथ समूहित करना चाहते हैं।

ऐसा करने के लिए क्या एल्गोरिदम सुझाए गए हैं? मुझे पहले से पता नहीं है कि क्लस्टर्स की संख्या कितनी है (और जितना अधिक डेटा आ रहा है क्लस्टर्स उतना ही बदल सकता है), आमतौर पर कौन-सी सुविधाओं का इस्तेमाल उसकी सजा को दर्शाने के लिए किया जाता है?

मैं अब शब्दों की सूची और परिभाषित वाक्यों के बीच की दूरी के साथ सबसे सरल सुविधाओं की कोशिश कर रहा हूं:

यहां छवि विवरण दर्ज करें

(ए और बी वाक्य ए और बी में शब्दों के संगत सेट हैं)

क्या यह बिल्कुल समझ में आता है?

मैं scitit पुस्तकालय से मीन-शिफ्ट एल्गोरिथ्म को इस दूरी पर लागू करने की कोशिश कर रहा हूं , क्योंकि इसके लिए अग्रिम में क्लस्टर की संख्या की आवश्यकता नहीं है।

यदि कोई समस्या के लिए बेहतर तरीकों / दृष्टिकोणों की सलाह देगा - यह बहुत सराहना की जाएगी क्योंकि मैं अभी भी विषय के लिए नया हूं।

जवाबों:


13

चेक स्टैनफोर्ड NLP समूह के ओपन सोर्स सॉफ्टवेयर ( http://www-nlp.stanford.edu/software ,) विशेष रूप से, स्टैनफोर्ड वर्गीकरणकर्ता ( http://www-nlp.stanford.edu/software/classifier.shtml ) । सॉफ्टवेयर में लिखा गया है Java, जो आपको प्रसन्न कर देगा, लेकिन कुछ अन्य भाषाओं के लिए बाइंडिंग भी है। ध्यान दें, लाइसेंसिंग - यदि आप वाणिज्यिक उत्पादों में उनके कोड का उपयोग करने की योजना बनाते हैं, तो आपको वाणिज्यिक लाइसेंस प्राप्त करना होगा।

ओपन सोर्स लाइब्रेरीज़ का एक और दिलचस्प सेट, इस कार्य के लिए उपयुक्त IMHO और बहुत कुछ है, मशीन लर्निंग ग्राफलैब ( http://select.cs.cmu.edu/code/graphlab ) के समानांतर संरचना , जिसमें क्लस्टरिंग लाइब्रेरी शामिल है, जो विभिन्न क्लस्टरिंग को लागू करती है। एल्गोरिदम ( http://select.cs.cmu.edu/code/graphlab/clustering.html )। यह डेटा की बहुत बड़ी मात्रा (जैसे आपके पास) के लिए विशेष रूप से उपयुक्त है , क्योंकि यह MapReduceमॉडल को लागू करता है और इस प्रकार, मल्टीकोर और मल्टीप्रोसेसर समानांतर प्रसंस्करण का समर्थन करता है ।

आप सबसे अधिक संभावना निम्नलिखित के बारे में जानते हैं, लेकिन मैं सिर्फ मामले में इसका उल्लेख करूंगा। प्राकृतिक भाषा टूलकिट (NLTK) के लिए Python( http://www.nltk.org ) क्लस्टरिंग / वर्गीकृत / श्रेणीबद्ध पाठ के लिए मॉड्यूल शामिल हैं। में प्रासंगिक अध्याय की जाँच करें NLTK Book: http://www.nltk.org/book/ch06.html

अपडेट करें:

एल्गोरिदम की बात करें , तो ऐसा लगता है कि आपने अधिकतर लोगों से scikit-learnइस विषय के निष्कर्षण उदाहरण में सचित्र उदाहरण लिए हैं: http://scikit-learn.org/stable/auto_examples/applications/topics_extraction_ith_nmf.html । हालाँकि, आपको उपयोगी अन्य लाइब्रेरी मिल सकती हैं, जो कि कई प्रकार के क्लस्टरिंग एल्गोरिदम को लागू करती हैं , जिनमें नॉन-निगेटिव मैट्रिक्स फैक्टराइजेशन (NMF) शामिल है । इस तरह के पुस्तकालयों में से एक है अजगर मैट्रिक्स Factorization (PyMF) में घर पृष्ठ के साथ https://code.google.com/p/pymf पर और स्रोत कोड https://github.com/nils-werner/pymf । एक और, और भी दिलचस्प, पुस्तकालय, पायथन-आधारित, NIMFA है, जो विभिन्न NMF एल्गोरिदम को लागू करता है : http://nimfa.biolab.si । यहाँ एक शोध पत्र है, जिसका वर्णन है NIMFA: http://jmlr.org/papers/volume13/zitnik12a/zitnik12a.pdf । इसके दस्तावेज़ीकरण से एक उदाहरण यहां दिया गया है, जो विषय की क्लस्टरिंग की बहुत समान पाठ प्रसंस्करण समस्या का समाधान प्रस्तुत करता है : http://nimfa.biolab.si/nimfa.examples.documents.html


1
इस तरह की विस्तृत प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। मैं आपके सभी सुझावों, कोशिश करने और परीक्षण करने के लिए बहुत काम करूँगा! इसके अलावा, मैंने पाया है कि carrot2 टूल वास्तव में टेक्स्ट डेटा के अनचाहे क्लस्टरों पर बहुत अच्छा काम कर रहा है। भविष्य के संदर्भ के लिए लिंक पोस्ट करना http://project.carrot2.org/
मैक्सिम गालुश्का

@MaximGalushka: आपका बहुत बहुत स्वागत है! मैं आपके निष्कर्षों और उस प्रगति के बारे में जानने के लिए उत्सुक हूं जो आप अंततः प्राप्त करेंगे। बेझिझक यहां पोस्ट करें या सीधे मेरे साथ जुड़ें।
विलेना बेलेख
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.