【深度学习】基于BERT模型的情感分析(附实战完整代码+数据集)

这篇博客详细介绍了BERT模型的结构、预训练任务,包括MLM和NSP,并提供了BERT模型在情感分析任务上的实现步骤,包括数据处理、模型微调、训练和保存模型。博主分享了完整的Python代码示例,适用于初学者实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

🌸个人主页:Yang-ai-cao

📕系列专栏:深度学习

   🍍 博学而日参省乎己,知明而行无过矣


目录

目录

个人主页:Yang-ai-cao

系列专栏:深度学习

   博学而日参省乎己,知明而行无过矣

1.BERT介绍

2.BERT结构

3.输入表示

4.BERT训练

4.1 MLM(Masked Language Model)

4.2 NSP(Next Sentence Prediction)

5.BERT微调

6.BERT、GPT、ELMo的比较

7.BERT模型实现情感分类(代码示例)

7.1 导入必要的库

7.2. 加载和处理数据

7.3 转换为 DataFrame 并分割数据集

7. 4 转换为 datasets 格式

7.5  加载 BERT 分词器和模型

7.6 预处理数据集

7.7 创建数据填充器

7.8 设置训练参数

7.9 创建 Trainer 实例

7.10 训练模型并保存

8 运行代码

完成以上代码任务后,我们开始运行:

9 保存模型

如何部署API与网页?

敬请关注!!!!!!!!



1.BERT介绍

BERT的全称为Bidirectional Encoder Representation from Transformers,是一个预训练的语言  表征模型,它强调不再像以往一样采用传统的单向语言模型或者把两个单向语言模型进行浅层拼接的方法进行预训练。它旨在通过在所有层中对左右上下文进行联合调节,采用新的masked language model(MLM),用于语言理解的深度双向转换器的预训练,从未标记的文本中预训练深度双向表示。因此,只需一个额外的输出层即可对预训练的 BERT 模型进行微调,从而为各种任务(例如问答和语言推理)创建较为先进的模型,而无需对特定于任务的架构进行大量修改。

·    BERT在 11 项自然语言处理任务上获得了最先进的新结果,包括将 GLUE 分数提高到 80.5% (绝对提高 7.7%),将 MultiNLI 准确率提高到 86.7%(绝对提高 4.6%),将 SQuAD v1.1 问答测试 F1 提高到 93.2(绝对提高 1.5 分),将 SQuAD v2.0 测试 F1 提高到 83.1(绝对提高5.1 分)。

·     BERT的网络架构主要使用的是《Attention is all you need》中提出的多层Transformer结构,Transformer结构在NLP领域中已经得到了广泛应用,其最大的特点是抛弃了传统的RNN和CNN。通过Self-Attention机制将任意位置的两个单词的距离进行特定转换,有效的解决了NLP 中棘手的长期依赖问题。

2.BERT结构

BERT利用MLM进行预训练并且采用深层的双向Transformer组件进行构建模型,总体结构是将多个Transformer Encoder一层一层地堆叠起来。在论文中,作者分别用12层和24层Transformer Encoder组装出两套BERT模型,两套模型的参数总计分别为110M和340M。(Transformer模型详解(图解最完整版) - 知乎 (zhihu.com)

 

图2.1 Transformer整体结构

隐藏Transformer详细结构,表示如下:

                                                        图2.2  Transformer黑箱图

Transformer结构进行堆叠,形成更深的神经网络(可理解为将Transformer encoder进行堆叠):

图2.3 多层堆叠Transformer

经过多层Transformer结构的堆叠后,形成BERT的主体结构(可视化:大雄007)

图2.4 Bert整体结构

图2.5 BERT的总体预训练和微调程序

3.输入表示

图3.1 token表征的组成

输入向量由三层组合:

3.1.Token Embeddings 即词向量。

·   要将各个词转换成固定维度的向量。中文目前尚未对输入文本进行分词,而是直接对单子构成为本的输入单位。特别的,英文词汇会做更细粒度的切分,比如上图中的playing 切割成 play 和 ##ing;将词切割成更细粒度的 Word Piece 是为了解决未登录词的常见方法。

·   [CLS] 表示开始标志,同时[CLS]表示该特征用于分类模型,对非分类模型,该符号可以省去。[SEP]表示分句符号,用于断开输入语料中的多个句子。

·   Bert 在处理英文文本时只需 30522 个词,Token Embeddings 层会将每个词转换成 768 维向量,例如:‘I like dog’ ,3个Token 会被转换成一个 (5, 768) 的矩阵或 (1, 5, 768) 的张量。

3.2. Segment Embeddings 段落向量。

·   BERT 能够处理对输入句子对的分类任务,这类任务就像判断两个文本是否语义相似。句子对中的两个句子被简单的拼接在一起后送入到模型中,BERT通过segment embeddings去区分一个句子对中的两个句子,因为预训练不单单做LM,还得做以两个句子为输入的分类任务。

·   Segement Embeddings 层有两种向量表示,前一个向量是把 0 赋值给第一个句子的各个 Token,后一个向量是把1赋值给各个 Token,问答系统等任务要预测下一句,因此输入是有关联的句子。而文本分类只有一个句子,那么 Segement embeddings 就全部是 0。

3.3. Position Embeddings 位置向量。

<项目介绍> 基于python的电商买家评论数据情感分析源码+模型+数据集+代码注释(课程大作业).zip 该资源内项目源码是个人的课设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 该资源适合计算机相关专业(如人工智能、通信工程、自动化、软件工程等)的在校学生、老师或者企业员工下载,适合小白学习或者实际项目借鉴参考! 当然也可作为毕业设计、课程设计、课程作业、项目初期立项演示等。如果基础还行,可以在此代码基础之上做改动以实现更多功能。 运行: `streamlit run ./Comment_analysis/Streamlit/streamlitEXP.py` 分工:<br> ## 必须考虑的点: 挑选合适的商品(好差评都多,并且评论多) GitHub class 参数(类型啥的,命名方式) 统一规范(代码格式,数据库,完善注释,log) 结合到谁的电脑上谁演示,何种形式ppt/代码 文件夹框架 数据测试集训练集划分 不同的产品(不同特点的卖点,特有的关键词),不同品牌的产品(用来比较售后服务优劣等卖点) 评论分数和评论内容的不吻合问题 评论的具体关键词(外形外观等) 开发文档开发文档: 需求文档 明确产品功能 分析某一功能点的流程 整合各个功能点--明确分工 接口文档 变更文件 流程图(可以单独作为一份文件可以作为在文档中) 情感分数(情感倾向分析,结合score) 装饰器(计时、log)@注解 可视化结果,图形化界面(见4) config decorator ## 可以考虑的点: 同一个热水器的评论内容随时间变化 算法优化与提升(比如用不同的包,还可以用多种方法来处理,进行比较分析) 判断优劣coherence/主观判断/通过数据可视化来大致判断,参数优化(主题数/) 找到一个网站据说可以 wordcloud可视化词云 bert情感分类 ## 扩展提升的点: texthero可视化 pyLDAvis可视化,通过网页来展示 streamlit+heroku 不用snownlp 机器学习/深度学习 eda 注释掉的代码最后删掉,或者说写明什么时候开启调用
BERT(Bidirectional Encoder Representations from Transformers)模型是一种预训练的语言表示模型,用于处理自然语言处理任务,例如文本分类。要实战BERT模型进行文本分类,首先需要准备好训练数据集和测试数据集。然后按照以下步骤进行代码实现: 1. 导入必要的库和模型:首先导入必要的Python库,例如tensorflow和transformers。然后加载预训练的BERT模型,例如使用transformers库中的BertForSequenceClassification模型。 2. 数据预处理:将文本数据转换为BERT模型的输入格式。可以使用tokenizer对文本进行编码,然后将编码后的文本转换为模型输入的格式。 3. 构建模型:基于BERT模型构建文本分类模型。可以使用BertForSequenceClassification模型构建一个分类器,并根据实际情况调整模型的超参数。 4. 模型训练:使用准备好的训练数据集对构建的BERT文本分类模型进行训练。可以使用适当的优化器和损失函数来训练模型,并根据验证集的表现来调整模型。 5. 模型评估:使用准备好的测试数据集对训练好的BERT文本分类模型进行评估。可以计算模型的准确率、召回率和F1值等指标来评估模型的性能。 6. 模型应用:使用训练好的BERT文本分类模型对新的文本数据进行分类预测。可以将模型应用到实际的文本分类任务中,例如对新闻文本进行分类、对电影评论进行情感分析等。 通过以上步骤,可以实战BERT模型进行文本分类任务,并根据实际情况对模型进行调整和优化,从而得到更好的分类效果。
评论 58
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值