我在我的 Amazon Alexa 评论数据集上应用了 k-means 聚类。
model = KMeans(n_clusters=2, max_iter=1000, random_state=True, n_init=50).fit(X=word_vectors.vectors.astype('double'))
现在我想检查哪个集群是正面的,哪个是负面的,有人可以建议我这样做吗?
另外,有没有办法检查一个特定的词属于哪个集群。例如,单词 'bad' 属于哪个簇 - 0 或 1
我在我的 Amazon Alexa 评论数据集上应用了 k-means 聚类。
model = KMeans(n_clusters=2, max_iter=1000, random_state=True, n_init=50).fit(X=word_vectors.vectors.astype('double'))
现在我想检查哪个集群是正面的,哪个是负面的,有人可以建议我这样做吗?
另外,有没有办法检查一个特定的词属于哪个集群。例如,单词 'bad' 属于哪个簇 - 0 或 1
也许你没有正面和负面的班级。您的输入是词向量。除非您之前使用明确的正面和负面标签训练您的词向量,否则您的 KMeans 不太可能了解这种差异。
如果您使用预训练的词向量,您的 KMeans 可能会学习集群 0 和集群 1 之间的任意差异。也许它知道哪些评论来自男性,哪些来自女性,可能哪些有“降落伞”这个词,哪些没有有了“降落伞”这个词,选择就无穷无尽。
您可以做的是访问您的 KMeans 学习的标签 ( model.labels_
) 并过滤X
每个集群的输入。然后,计算每个集群中每个单词的出现次数,并排序每个单词中出现次数最多的单词。这可能有助于您了解集群 0 和集群 1 之间的区别。
注意:如果您得到的最常见的词是:a、the、of、if 等。请使用停用词列表,或使用最大文档频率阈值过滤这些词。
NLTK 有一个情感模块。您可以尝试检查集群中每个文本的正负统计。