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等)进行处理。

代码说明

  1. 导入必要的库:jieba 用于分词,numpy 用于矩阵操作,sklearn.feature_extraction.text 中的 TfidfVectorizer 用于计算 TF-IDF,sklearn.cluster 中的 KMeans 用于聚类,csv 用于读写 CSV 文件。
  2. 读取文本文件:从 es.csv 文件中读取文本数据,每行为一个文本数据。
  3. 分词和去除停用词:使用 jieba 分词库对每个文本进行分词,并使用 stopwords.txt 文件中的停用词列表去除停用词。
  4. 保存分词结果:将分词后的文本数据保存到 F.csv 文件中。
  5. 计算 TF-IDF:使用 TfidfVectorizer 计算文本数据的 TF-IDF 值。
  6. 保存去停用词结果:将 TF-IDF 矩阵保存到 T.csv 文件中。
  7. 使用 KMeans 进行聚类:使用 KMeans 对 TF-IDF 矩阵进行聚类,将文本数据划分为 5 个簇。
  8. 输出结果:输出每个文本所属的簇标签和特征矩阵。
  9. 保存聚类结果:将聚类结果保存到 result.txt 文件中。

可视化

由于本代码并没有进行可视化处理,建议使用第三方可视化工具(如 matplotlib、seaborn 等)进行处理。

总结

本代码展示了如何使用 Python 的 jieba、Scikit-learn 库中的 TF-IDF 和 KMeans 进行文本聚类,并保存聚类结果到文件中。通过本代码示例,您可以了解如何使用 Python 进行文本聚类分析。

Python 文本聚类:使用 TF-IDF 和 KMeans 进行文本分类

原文地址: https://www.cveoy.top/t/topic/noTq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录