现有好评和差评两个文本文件,我需要对这两个文本文件作为训练集,使用sklearn实现贝叶斯分类,区分好评和差评,给出示例代码
时间: 2023-10-09 07:08:52 浏览: 75
好的,以下是一个简单的示例代码,用于训练朴素贝叶斯分类器以区分好评和差评:
```python
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
# 读取好评和差评文件
with open('positive.txt', 'r') as f:
positive_reviews = f.readlines()
with open('negative.txt', 'r') as f:
negative_reviews = f.readlines()
# 创建标签数组,1 表示好评,0 表示差评
labels = [1] * len(positive_reviews) + [0] * len(negative_reviews)
# 创建文本向量化器,将文本转换为向量表示
vectorizer = CountVectorizer(stop_words='english')
# 将文本向量化
reviews = positive_reviews + negative_reviews
vectors = vectorizer.fit_transform(reviews)
# 将数据划分为训练集和测试集
train_vectors = vectors[:1000]
train_labels = labels[:1000]
test_vectors = vectors[1000:]
test_labels = labels[1000:]
# 创建朴素贝叶斯分类器
clf = MultinomialNB()
# 在训练集上训练分类器
clf.fit(train_vectors, train_labels)
# 在测试集上评估分类器
accuracy = clf.score(test_vectors, test_labels)
print('Accuracy:', accuracy)
```
在这个示例中,我们首先读取好评和差评文本文件,并将它们存储在 `positive_reviews` 和 `negative_reviews` 列表中。然后,我们创建一个标签数组,其中 1 表示好评,0 表示差评。
接下来,我们使用 `CountVectorizer` 类将文本向量化,将每个文本转换为一个向量。我们还将文本中的停用词删除,以便更好地捕获文本的含义。
然后,我们将数据划分为训练集和测试集,并创建一个 `MultinomialNB` 分类器。我们在训练集上训练分类器,并在测试集上评估其准确性。最后,我们打印出分类器的准确性。
请注意,这只是一个简单的示例,您需要根据自己的数据和需求进行调整和优化。
阅读全文