Belge kümeleme

Python ile Kümeleme Analizi

Shaumik Daityari

Business Analyst

Belge kümeleme: kavramlar

  1. İşlemden önce veriyi temizleyin
  2. Bir belgedeki terimlerin önemini belirleyin (TF-IDF matrisi)
  3. TF-IDF matrisini kümeleyin
  4. Her kümedeki en üst terimleri ve belgeleri bulun
Python ile Kümeleme Analizi

Veriyi temizleyin ve belirteçlere ayırın

  • Metni belirteçlere (token) ayırın, işlem için veriyi temizleyin
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 ile Kümeleme Analizi

Belge-terim matrisi ve seyrek matrisler

  • Belge-terim matrisi oluşturulur
  • Matrisin çoğu elemanı sıfırdır

Kaynak

  • Seyrek matris oluşturulur

Kaynak

Python ile Kümeleme Analizi

TF-IDF (Terim Frekansı - Ters Belge Frekansı)

  • Ağırlıklı bir ölçüm: bir koleksiyondaki belgede bir sözcüğün önemini değerlendirir
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 ile Kümeleme Analizi

Seyrek matrisle kümeleme

  • SciPy'deki kmeans() seyrek matrisleri desteklemez
  • Matrisi dönüştürmek için .todense() kullanın
cluster_centers, distortion = kmeans(tfidf_matrix.todense(), num_clusters)
Python ile Kümeleme Analizi

Kümeye göre en üst terimler

  • Küme merkezleri: terim sayısı kadar uzunlukta listeler
  • Merkezdeki her değer, o terimin önemini gösterir
  • Sözlük oluşturup en üst terimleri yazdırın
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 ile Kümeleme Analizi

Ek hususlar

  • Köprüler, emojiler vb. ile çalışın
  • Sözcükleri normalize edin (run, ran, running -> run)
  • .todense() büyük veri kümelerinde çalışmayabilir
Python ile Kümeleme Analizi

Sırada alıştırmalar var!

Python ile Kümeleme Analizi

Preparing Video For Download...