Getting-Things-Done-with-Pytorch情感分析:从数据采集到BERT模型部署完整流程

【免费下载链接】Getting-Things-Done-with-Pytorch Jupyter Notebook tutorials on solving real-world problems with Machine Learning & Deep Learning using PyTorch. Topics: Face detection with Detectron 2, Time Series anomaly detection with LSTM Autoencoders, Object Detection with YOLO v5, Build your first Neural Network, Time Series forecasting for Coronavirus daily cases, Sentiment Analysis with BER 【免费下载链接】Getting-Things-Done-with-Pytorch 项目地址: https://gitcode.com/gh_mirrors/ge/Getting-Things-Done-with-Pytorch

Getting-Things-Done-with-Pytorch是一个基于PyTorch的机器学习与深度学习实战项目,提供了从数据采集到模型部署的完整解决方案,尤其在情感分析领域,通过BERT模型实现了高效准确的情感分类。本指南将带你一步步掌握使用该项目进行情感分析的全过程,从数据采集到BERT模型部署,让你轻松上手NLP任务。

一、情感分析数据集构建:从Google Play商店获取真实用户评论

情感分析的第一步是获取高质量的标注数据。项目提供了从Google Play商店爬取应用评论的完整方案,以生产力类应用为目标,构建情感分析数据集。

1.1 确定数据采集目标与标准

选择15款热门生产力应用作为数据来源,包括Any.do、Todoist、TickTick等知名应用。通过筛选具有一定用户基数和历史的应用,确保评论数据的真实性和代表性。代码实现如下:

app_packages = [
  'com.anydo',
  'com.todoist',
  'com.ticktick.task',
  'com.habitrpg.android.habitica',
  'cc.forestapp',
  # 更多应用包名...
]

1.2 多维度评论采集策略

为保证数据集的平衡性,项目采用以下策略采集评论:

  • 按评分(1-5星)分层采集
  • 结合"最相关"和"最新"两种排序方式
  • 对中性评分(3星)采集更多样本

生产力应用图标展示 图1:用于采集评论的部分生产力应用图标,这些应用覆盖了不同的用户群体和功能特点

1.3 数据存储与预处理

最终采集到15,750条评论数据,保存为CSV格式以便后续处理:

app_reviews_df = pd.DataFrame(app_reviews)
app_reviews_df.to_csv('reviews.csv', index=None, header=True)

二、BERT模型情感分析:从理论到实践

BERT(Bidirectional Encoder Representations from Transformers)作为一种预训练语言模型,在情感分析任务中表现卓越。项目基于Hugging Face Transformers库实现了BERT模型的微调与应用。

2.1 BERT模型原理简析

BERT的核心优势在于:

  • 双向上下文理解能力
  • 预训练+微调的迁移学习模式
  • 强大的注意力机制

模型通过两个预训练任务学习语言表示:

  • 掩码语言模型(MLM):随机掩盖部分token并预测
  • 下一句预测(NSP):判断两个句子是否连续

2.2 数据预处理:为BERT准备输入

BERT模型需要特定格式的输入:

  • 添加[CLS]和[SEP]特殊标记
  • 固定长度的token序列(通过填充或截断)
  • 注意力掩码(区分真实token和填充token)

评论文本token长度分布 图2:评论文本的token长度分布,大多数评论长度在128以内,因此选择MAX_LEN=160

2.3 构建情感分类模型

基于BERT-base-cased预训练模型构建分类器:

class SentimentClassifier(nn.Module):
  def __init__(self, n_classes):
    super(SentimentClassifier, self).__init__()
    self.bert = BertModel.from_pretrained('bert-base-cased')
    self.drop = nn.Dropout(p=0.3)
    self.out = nn.Linear(self.bert.config.hidden_size, n_classes)

  def forward(self, input_ids, attention_mask):
    _, pooled_output = self.bert(
      input_ids=input_ids,
      attention_mask=attention_mask
    )
    output = self.drop(pooled_output)
    return self.out(output)

2.4 模型训练与优化

采用BERT推荐的超参数设置:

  • 批大小:16
  • 学习率:2e-5
  • 优化器:AdamW
  • 训练轮次:10

经过训练,模型在验证集上达到89.3%的准确率,训练过程的精度变化如下:

模型训练精度曲线 图3:模型在训练集和验证集上的精度变化曲线,显示模型具有良好的泛化能力

三、模型评估:全面了解BERT情感分析性能

3.1 混淆矩阵分析

模型在测试集上的混淆矩阵显示:

情感分析混淆矩阵 图4:模型在测试集上的混淆矩阵,对角线上的数字表示正确分类的样本数

从混淆矩阵可以看出:

  • 正类(positive)识别准确率最高(268/289)
  • 中性类(neutral)识别难度较大,容易与正负类混淆
  • 负类(negative)识别准确率为87%(212/245)

3.2 分类报告

完整的分类报告如下:

              precision    recall  f1-score   support
    negative       0.89      0.87      0.88       245
     neutral       0.83      0.85      0.84       254
    positive       0.92      0.93      0.92       289
    accuracy                           0.88       788
   macro avg       0.88      0.88      0.88       788
weighted avg       0.88      0.88      0.88       788

四、模型部署:使用FastAPI构建REST API服务

完成模型训练后,项目提供了将BERT模型部署为REST API的完整方案,使用FastAPI框架构建高性能接口。

4.1 API服务架构

API服务的核心组件包括:

  • FastAPI应用实例
  • 模型加载与依赖注入
  • 请求处理与响应格式化

关键代码实现:

from fastapi import Depends, FastAPI

app = FastAPI()

async def get_model():
    # 加载模型代码
    return model

@app.post("/predict")
async def predict(text: str, model=Depends(get_model)):
    # 预测逻辑
    return {"sentiment": prediction}

4.2 本地部署与测试

通过以下步骤部署API服务:

  1. 克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/ge/Getting-Things-Done-with-Pytorch
  1. 安装依赖:
pip install -r requirements.txt
  1. 运行FastAPI服务:
uvicorn main:app --reload
  1. 测试API:
curl -X POST "http://localhost:8000/predict" -H "Content-Type: application/json" -d '{"text":"This app is amazing!"}'

五、项目资源与扩展

5.1 关键文件路径

5.2 扩展方向

  • 多语言情感分析:扩展模型支持多语言评论
  • 实时分析系统:结合WebSocket实现实时情感监测
  • 情感可视化:构建交互式情感分析仪表板

通过本指南,你已经掌握了使用Getting-Things-Done-with-Pytorch项目进行情感分析的完整流程。从数据采集到模型部署,项目提供了一站式解决方案,帮助你快速构建工业级情感分析应用。无论是学术研究还是商业应用,这套工具都能为你提供强大的技术支持。

【免费下载链接】Getting-Things-Done-with-Pytorch Jupyter Notebook tutorials on solving real-world problems with Machine Learning & Deep Learning using PyTorch. Topics: Face detection with Detectron 2, Time Series anomaly detection with LSTM Autoencoders, Object Detection with YOLO v5, Build your first Neural Network, Time Series forecasting for Coronavirus daily cases, Sentiment Analysis with BER 【免费下载链接】Getting-Things-Done-with-Pytorch 项目地址: https://gitcode.com/gh_mirrors/ge/Getting-Things-Done-with-Pytorch

Logo

聚焦RDK与具身智能,汇集机器人开发教程、开源案例和技术交流

更多推荐