डॉक्यूमेंट क्लस्टरिंग

Python में क्लस्टर विश्लेषण

Shaumik Daityari

Business Analyst

डॉक्यूमेंट क्लस्टरिंग: कॉन्सेप्ट्स

  1. प्रोसेस करने से पहले डेटा साफ करें
  2. डॉक्यूमेंट में terms की महत्ता निकालें (TF-IDF मैट्रिक्स)
  3. TF-IDF मैट्रिक्स को क्लस्टर करें
  4. हर क्लस्टर के टॉप terms और डॉक्यूमेंट्स पाएँ
Python में क्लस्टर विश्लेषण

डेटा साफ करें और टोकनाइज़ करें

  • टेक्स्ट को छोटे हिस्सों (tokens) में बदलें, प्रोसेसिंग हेतु डेटा साफ करें
from nltk.tokenize import word_tokenize
import re

def remove_noise(text, stop_words = []):
    tokens = word_tokenize(text)

cleaned_tokens = [] for token in tokens: token = re.sub('[^A-Za-z0-9]+', '', token)
if len(token) > 1 and token.lower() not in stop_words: # Get lowercase cleaned_tokens.append(token.lower()) return cleaned_tokens
remove_noise("It is lovely weather we are having. I hope the weather continues.")
['lovely', 'weather', 'hope', 'weather', 'continues']
Python में क्लस्टर विश्लेषण

डॉक्यूमेंट-टर्म मैट्रिक्स और sparse मैट्रिक्स

  • डॉक्यूमेंट-टर्म मैट्रिक्स तैयार हुई
  • मैट्रिक्स के अधिकांश एलिमेंट्स जीरो हैं

Source

  • एक sparse मैट्रिक्स बनती है

Source

Python में क्लस्टर विश्लेषण

TF-IDF (Term Frequency - Inverse Document Frequency)

  • एक weighted माप: किसी कलेक्शन में, किसी डॉक्यूमेंट के लिए शब्द की अहमियत आँके
from sklearn.feature_extraction.text import TfidfVectorizer

tfidf_vectorizer = TfidfVectorizer(max_df=0.8, max_features=50, min_df=0.2, tokenizer=remove_noise)
tfidf_matrix = tfidf_vectorizer.fit_transform(data)
Python में क्लस्टर विश्लेषण

Sparse मैट्रिक्स के साथ क्लस्टरिंग

  • SciPy में kmeans() sparse मैट्रिक्स सपोर्ट नहीं करता
  • .todense() से मैट्रिक्स में कन्वर्ट करें
cluster_centers, distortion = kmeans(tfidf_matrix.todense(), num_clusters)
Python में क्लस्टर विश्लेषण

हर क्लस्टर के टॉप terms

  • क्लस्टर सेंटर्स: लिस्ट्स जिनका साइज terms की संख्या के बराबर है
  • क्लस्टर सेंटर का हर मान उसकी महत्ता दर्शाता है
  • एक डिक्शनरी बनाएँ और टॉप terms प्रिंट करें
terms = tfidf_vectorizer.get_feature_names_out()

for i in range(num_clusters):
    center_terms = dict(zip(terms, list(cluster_centers[i])))

sorted_terms = sorted(center_terms, key=center_terms.get, reverse=True)
print(sorted_terms[:3])
['room', 'hotel', 'staff']

['bad', 'location', 'breakfast']
Python में क्लस्टर विश्लेषण

और बातें ध्यान रखें

  • हाइपरलिंक्स, इमोटिकॉन्स आदि संभालें
  • शब्द normalize करें (run, ran, running -> run)
  • बड़े डेटासेट्स पर .todense() काम न कर सके
Python में क्लस्टर विश्लेषण

अब आगे: अभ्यास!

Python में क्लस्टर विश्लेषण

Preparing Video For Download...