5

का प्रभावी क्लस्टरिंग मेरा विषय समानता और पाठ (समूह) का क्लस्टरिंग है। संक्षेप में: मैं एकत्रित ग्रंथों को एक साथ क्लस्टर करना चाहता हूं और उन्हें अंत में अर्थपूर्ण क्लस्टर में दिखना चाहिए। ऐसा करने के लिए, अब तक मेरा दृष्टिकोण निम्नानुसार है, मेरी समस्या क्लस्टरिंग में है। वर्तमान सॉफ्टवेयर PHP में लिखा है।समानता मैट्रिक्स

1) समानता: मैं प्रत्येक दस्तावेज़ को "बैग के शब्दों" के रूप में मानता हूं और शब्दों को वैक्टर में परिवर्तित करता हूं। मैं का उपयोग

  • फिल्टरिंग (केवल "असली" शब्द)
  • tokenization (शब्दों में विभाजित वाक्य)
  • उत्पन्न (अपने आधार फार्म के लिए शब्द कम करने, पोर्टर के स्टेमर)
  • छंटाई (साथ शब्दों के कटौती बहुत अधिक & कम आवृत्ति)

आयामी कमी के तरीकों के रूप में। । उसके बाद, मैं कोज्या समानता उपयोग कर रहा हूँ (सुझाव/वेब and here पर विभिन्न साइटों पर वर्णित है

तो परिणाम है इस तरह की एक समानता मैट्रिक्स:

 A B C D E 
    A 0 30 51 75 80 
    B X 0 21 55 70 
    C X X 0 25 10 
    D X X X 0 15 
    E X X X X 0 

एक ... ई मेरी ग्रंथों कर रहे हैं और संख्या प्रतिशत में समानता है; उच्च, जितना अधिक ग्रंथ हैं। क्योंकि सिम (ए, बी) == सिम (बी, ए) मैट्रिक्स का केवल आधा भरा हुआ है। इसलिए टेक्स्ट ए के टेक्स्ट की समानता डी 71% है।

मैं अब इस मैट्रिक्स से क्लस्टर को एएफआई अज्ञात (!) उत्पन्न करना चाहता हूं। क्लस्टर को समान वस्तुओं का प्रतिनिधित्व करना चाहिए (एक निश्चित स्टॉप तक पी मानदंड) एक साथ।

मैं एक बुनियादी कार्यान्वयन अपने आप को, जो (एक निश्चित समानता सीमा के रूप में 60%) इस तरह मूल रूप से था

foreach article 
     get similar entries where sim > 60 
       foreach similar entry 
       check if one of the entries already has a cluster number 
       if no: assign new cluster number to all similar entries 
       if yes: use that number 

यह (किसी भी तरह) काम करने की कोशिश की, लेकिन सब अच्छा नहीं था और परिणाम अक्सर थे राक्षस-समूहों। तो, मैं इसे फिर से करना चाहता हूं और पहले से ही सभी प्रकार के क्लस्टरिंग एल्गोरिदम में एक नज़र डालना चाहता हूं, लेकिन मुझे अभी भी यकीन नहीं है कि कौन सा सर्वश्रेष्ठ काम करेगा। मुझे लगता है कि यह एक एग्ग्लोमेमेरेटिव एल्गोरिदम होना चाहिए, क्योंकि ग्रंथों की प्रत्येक जोड़ी शुरुआत में क्लस्टर के रूप में देखी जा सकती है। लेकिन अभी भी प्रश्न हैं कि स्टॉप मानदंड क्या है और यदि एल्गोरिदम को मौजूदा समूहों को विभाजित और/या विलय करना चाहिए।

क्षमा करें अगर कुछ सामान मूल लगता है, लेकिन मैं इस क्षेत्र में अपेक्षाकृत नया हूं। सहायता के लिए धन्यवाद।

+0

क्या आपको कोई अच्छा जवाब मिला? यह मुझे भी स्पष्ट नहीं है कि क्लस्टरिंग में कितने आयाम काम करना चाहिए ... – Jim

उत्तर

1

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

2

चूंकि आप दोनों फ़ील्ड में नए हैं, तो क्लस्टर की अज्ञात संख्या है और पहले से ही कोसाइन दूरी का उपयोग कर रहे हैं, मैं FLAME क्लस्टरिंग एल्गोरिदम की अनुशंसा करता हूं।

यह अंतर्ज्ञानी, कार्यान्वित करने में आसान है, और बड़ी संख्या में भाषाओं में कार्यान्वयन है (हालांकि PHP नहीं, काफी हद तक क्योंकि बहुत कम लोग डेटा विज्ञान के लिए PHP का उपयोग करते हैं)।

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

1

हो सकता है कि आप अपनी समानता मैट्रिक्स को एक असमानता मैट्रिक्स में बदल सकें जैसे कि x से 1/x को बदलना, तो आपकी समस्या एक असमानता मैट्रिक्स को क्लस्टर करना है। मुझे लगता है कि पदानुक्रमित क्लस्टर काम कर सकता है। ये आपकी मदद कर सकते हैं: hierarchical clustering और Clustering a dissimilarity matrix