python使用jieba库对大量文本进行分词并分类
时间: 2024-05-09 15:20:55 浏览: 186
下面给出一个使用jieba库对大量文本进行分词并分类的示例代码:
```python
import jieba
import os
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score
# 定义数据集路径
data_dir = './data'
# 获取所有文件名
filenames = os.listdir(data_dir)
# 定义用于存储数据集的列表
data = []
target = []
# 遍历所有文件,读取内容并进行分词
for filename in filenames:
filepath = os.path.join(data_dir, filename)
with open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
words = jieba.cut(content)
data.append(' '.join(words))
target.append(filename.split('.')[0])
# 构建词向量
count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(data)
# 训练朴素贝叶斯分类器
clf = MultinomialNB().fit(X_train_counts, target)
# 对训练集进行预测并计算准确率
predicted = clf.predict(X_train_counts)
accuracy = accuracy_score(target, predicted)
print('训练集准确率:', accuracy)
# 对新的文本进行分类
new_text = '今天天气真好'
new_words = jieba.cut(new_text)
new_data = ' '.join(new_words)
X_new_counts = count_vect.transform([new_data])
predicted = clf.predict(X_new_counts)
print('新文本分类结果:', predicted[0])
```
在这个示例中,我们首先定义了一个数据集路径`data_dir`,然后遍历该路径下的所有文件,读取文件内容并进行分词,将分词后的结果存储在`data`列表中,将文件名(不包含后缀)存储在`target`列表中。
接着,我们使用`CountVectorizer`类将分词后的文本转换为词向量,然后使用`MultinomialNB`类训练朴素贝叶斯分类器。
在训练完成后,我们对训练集进行预测并计算准确率。最后,我们使用新的文本进行分类,并输出分类结果。
阅读全文