Python 文本聚类:使用 TF-IDF 和 KMeans 进行文本分类
Python 文本聚类:使用 TF-IDF 和 KMeans 进行文本分类
本代码使用 Python 的 jieba 分词库、Scikit-learn 库中的 TF-IDF 和 KMeans 进行文本聚类,并保存聚类结果到文件中。
代码实现
import jieba
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import KMeans
import csv
# 读取文本文件,每行为一个文本数据
with open('es.csv', 'r', encoding='gbk') as f:
texts = f.readlines()
# 对每个文本进行分词,保存为字符串列表
text_list = []
stopwords = set(open('stopwords.txt', 'r', encoding='utf-8').read().split('
'))
for text in texts:
words = jieba.cut(text.strip())
words = [word for word in words if word not in stopwords]
text_list.append(' '.join(words))
# 保存分词结果
with open('F.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
for text in text_list:
writer.writerow([text])
# 对文本数据进行tf-idf处理
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(text_list)
# 保存去停用词结果
with open('T.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
for row in X.toarray():
writer.writerow(row)
# 使用KMeans聚类
kmeans = KMeans(n_clusters=5, random_state=0)
kmeans.fit(X)
# 输出每个文本所属的簇标签和特征矩阵
#labels = kmeans.labels_
#print('每个文本所属的簇标签:', labels)
# 输出每个文本所属的簇标签和特征矩阵
labels = kmeans.labels_
for i, text in enumerate(texts):
print('第'+str(labels[i])+'类'+ ':' +text.strip())
print('特征矩阵:
', X.toarray())
print(X)
np.savetxt('jz.txt', X.toarray(),fmt='%.8f')
#保存聚类结果
with open('result.txt', 'w', encoding='utf-8') as f:
for i, text in enumerate(texts):
f.write('第'+str(labels[i])+'类' + ':' + text.strip() + '
')
# 可视化聚类结果内容:由于本代码并没有进行可视化处理,故无法提供可视化聚类结果的代码。建议使用第三方可视化工具(如matplotlib、seaborn等)进行处理。
代码说明
- 导入必要的库:jieba 用于分词,numpy 用于矩阵操作,sklearn.feature_extraction.text 中的 TfidfVectorizer 用于计算 TF-IDF,sklearn.cluster 中的 KMeans 用于聚类,csv 用于读写 CSV 文件。
- 读取文本文件:从
es.csv文件中读取文本数据,每行为一个文本数据。 - 分词和去除停用词:使用 jieba 分词库对每个文本进行分词,并使用
stopwords.txt文件中的停用词列表去除停用词。 - 保存分词结果:将分词后的文本数据保存到
F.csv文件中。 - 计算 TF-IDF:使用 TfidfVectorizer 计算文本数据的 TF-IDF 值。
- 保存去停用词结果:将 TF-IDF 矩阵保存到
T.csv文件中。 - 使用 KMeans 进行聚类:使用 KMeans 对 TF-IDF 矩阵进行聚类,将文本数据划分为 5 个簇。
- 输出结果:输出每个文本所属的簇标签和特征矩阵。
- 保存聚类结果:将聚类结果保存到
result.txt文件中。
可视化
由于本代码并没有进行可视化处理,建议使用第三方可视化工具(如 matplotlib、seaborn 等)进行处理。
总结
本代码展示了如何使用 Python 的 jieba、Scikit-learn 库中的 TF-IDF 和 KMeans 进行文本聚类,并保存聚类结果到文件中。通过本代码示例,您可以了解如何使用 Python 进行文本聚类分析。
原文地址: https://www.cveoy.top/t/topic/noTq 著作权归作者所有。请勿转载和采集!