File size: 1,179 Bytes
c45bf71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from sklearn.feature_extraction.text import TfidfVectorizer
import numpy as np
import jieba.analyse

def extract_keywords_per_cluster(sentences, labels, top_k=5):
    cluster_keywords = {}
    clusters = set(labels)
    for c in clusters:
        if c == -1:
            continue
        cluster_sents = [s for s, l in zip(sentences, labels) if l == c]
        vectorizer = TfidfVectorizer(max_features=1000)
        tfidf_matrix = vectorizer.fit_transform(cluster_sents)
        scores = np.asarray(tfidf_matrix.mean(axis=0)).ravel()
        keywords = np.array(vectorizer.get_feature_names_out())[np.argsort(scores)[::-1]]
        cluster_keywords[c] = keywords[:top_k].tolist()
    return cluster_keywords

def summarize_per_cluster(sentences, labels, top_k=3):
    cluster_summaries = {}
    clusters = set(labels)
    for c in clusters:
        if c == -1:
            continue
        cluster_sents = [s for s, l in zip(sentences, labels) if l == c]
        text = "。".join(cluster_sents)
        keywords = jieba.analyse.textrank(text, topK=top_k, withWeight=False)
        cluster_summaries[c] = list(keywords)
    return cluster_summaries