发布时间:2024-11-16 15:29:02
本内容由, 集智官方收集发布,仅供参考学习,不代表集智官方赞同其观点或证实其内容的真实性准确性,请勿用于商业用途。
以下是一个详细的、通俗易懂的代码案例,展示如何使用朴素贝叶斯算法对电影好评和差评数据集进行分类。我们将使用Python和scikit-learn
库来实现。
确保安装了必要的库:
pip install pandas scikit-learn
TfidfVectorizer
将文本转化为特征向量。import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, classification_report
# 1. 加载数据集
# 加载好评和差评Excel表格
positive_reviews = pd.read_excel("电影好评内容数据集.xlsx")
negative_reviews = pd.read_excel("电影差评内容数据集.xlsx")
# 为数据集添加标签(好评: 1, 差评: 0)
positive_reviews['label'] = 1
negative_reviews['label'] = 0
# 合并两个数据集
data = pd.concat([positive_reviews, negative_reviews], ignore_index=True)
# 查看数据结构
print(data.head())
# 2. 数据预处理
# 提取评论内容和标签
texts = data['电影好评(差评)内容'] # 替换为适合的字段名
labels = data['label']
# 检查数据是否存在空值,并进行清理
print(f"缺失值数量: {data.isnull().sum().sum()}")
data = data.dropna()
# 3. 文本特征提取
# 使用TF-IDF将文本转化为特征向量
tfidf = TfidfVectorizer(max_features=5000) # 限制特征数量为5000个
X = tfidf.fit_transform(texts).toarray() # 转化为稀疏矩阵
y = labels.values
# 4. 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 5. 训练朴素贝叶斯模型
model = MultinomialNB()
model.fit(X_train, y_train)
# 6. 模型评估
# 预测测试集
y_pred = model.predict(X_test)
# 输出准确率和分类报告
print(f"模型准确率: {accuracy_score(y_test, y_pred):.4f}")
print("分类报告:\n", classification_report(y_test, y_pred))
# 7. 模型使用
# 测试新评论的分类
new_reviews = [
"这部电影情节非常精彩,演员表现力十足,值得一看!",
"电影剧情平淡无奇,演员表演不够自然,比较失望。"
]
new_reviews_tfidf = tfidf.transform(new_reviews)
predictions = model.predict(new_reviews_tfidf)
# 输出预测结果
for review, label in zip(new_reviews, predictions):
sentiment = "好评" if label == 1 else "差评"
print(f"评论: {review}\n预测情感: {sentiment}\n")
假设新评论的输入为:
"这部电影情节非常精彩,演员表现力十足,值得一看!"
"电影剧情平淡无奇,演员表演不够自然,比较失望。"
输出结果:
评论: 这部电影情节非常精彩,演员表现力十足,值得一看!
预测情感: 好评
评论: 电影剧情平淡无奇,演员表演不够自然,比较失望。
预测情感: 差评
通过这段代码,您可以快速实现一个电影评论的情感分类模型,并应用于类似的情感分析任务。
这种数据集通常包含带有标记的文本,其中标记了特定的信息实体或概念,如人物名称、组织机构、日期等。这些数据集用于训练模型从自由文本中提取关键信息。帮助模型理解文本的深层含义,并从中抽取有用的信息。