发布时间:2024-11-16 15:29:02

电影评论情感分析#朴素贝叶斯文本分类#情感分析数据集#好评差评分类模型#TF-IDF特征提取#自然语言处理NLP#文本分类算法#机器学习情感分析#电影数据集分析#Python文本分类教程






数据集:电影好评与差评内容分析数据集 670 69
本内容由, 集智官方收集发布,仅供参考学习,不代表集智官方赞同其观点或证实其内容的真实性准确性,请勿用于商业用途。

以下是一个详细的、通俗易懂的代码案例,展示如何使用朴素贝叶斯算法对电影好评和差评数据集进行分类。我们将使用Python和scikit-learn库来实现。

环境准备

确保安装了必要的库:

pip install pandas scikit-learn
步骤解析
  1. 加载数据:读取Excel文件中的好评和差评数据。
  2. 数据预处理:合并数据集,提取必要字段,清理和转换数据。
  3. 文本特征提取:使用TfidfVectorizer将文本转化为特征向量。
  4. 模型训练:使用朴素贝叶斯算法进行训练。
  5. 模型评估:评估模型的准确性和性能。


代码实现
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")


代码解析
  1. 加载数据:通过pandas加载好评和差评的Excel数据。为每条数据添加label字段,标记好评为1,差评为0。合并两个数据集形成完整数据集。
  2. 数据预处理:提取评论内容和情感标签。清理空值,保证数据完整性。
  3. 文本特征提取:使用TfidfVectorizer将评论文本转换为TF-IDF特征向量,捕捉重要的词汇信息。
  4. 模型训练:使用MultinomialNB训练朴素贝叶斯分类器,这是朴素贝叶斯的一种实现,适合文本分类。
  5. 模型评估:在测试集上评估模型的准确性,输出分类报告,包括精确率、召回率和F1分数。
  6. 模型使用:输入新的评论进行情感预测,输出分类结果。


示例输出

假设新评论的输入为:

"这部电影情节非常精彩,演员表现力十足,值得一看!"
"电影剧情平淡无奇,演员表演不够自然,比较失望。"

输出结果:

评论: 这部电影情节非常精彩,演员表现力十足,值得一看!
预测情感: 好评

评论: 电影剧情平淡无奇,演员表演不够自然,比较失望。
预测情感: 差评


技术细节
  1. TF-IDF特征提取:TF-IDF(Term Frequency-Inverse Document Frequency)捕捉文本中的重要词汇,减轻常见词的影响。
  2. 朴素贝叶斯算法:假设特征之间相互独立,通过计算词语的条件概率预测评论情感。优势是速度快,效果好,尤其适合中小规模文本分类任务。
  3. 分类报告:使用classification_report提供的精确率、召回率和F1分数评估模型性能。
  4. 代码复现:代码易于复现,适合小规模数据集,推荐在实际应用中根据数据规模调整TfidfVectorizer参数。

通过这段代码,您可以快速实现一个电影评论的情感分类模型,并应用于类似的情感分析任务。


语义抽取数据集

       这种数据集通常包含带有标记的文本,其中标记了特定的信息实体或概念,如人物名称、组织机构、日期等。这些数据集用于训练模型从自由文本中提取关键信息。帮助模型理解文本的深层含义,并从中抽取有用的信息。

| 友情链接: | 网站地图 | 更新日志 |


Copyright ©2024 集智软件工作室. 本站数据文章仅供研究、学习用途,禁止商用,使用时请注明数据集作者出处;本站数据均来自于互联网,如有侵权请联系本站删除。