✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。
我是Srlua小谢,在这里我会分享我的知识和经验。🎥
希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮
记得先点赞👍后阅读哦~ 👏👏
📘📚 所属专栏:传知代码论文复现
欢迎访问我的主页:Srlua小谢 获取更多信息和资源。✨✨🌙🌙
目录
本文所有资源均可在该地址处获取。
概述
在之前的文章中,我们介绍了BERT模型。BERT作为一种预训练语言模型,它具有很好的兼容性,能够运用在各种下游任务中,本文的主要目的是利用数据集来对BERT进行训练,从而实现一个语义分类的模型。
语义分类
语义分类是自然语言处理任务中的一种,包含文本分类、情感分析
文本分类
文本分类是指给定文本a,将文本分类为n个类别中的一个或多个。常见的应用包括文本话题分类,情感分类,具体的分类方向有有二分类,多分类和多标签分类。
文本分类可以采用传统机器学习方法(贝叶斯,svm等)和深度学习方法(fastText,TextCNN等)实现。
举例而言,对于一个对话数据集,我们可以用1、2、3表示他们的话题,如家庭、学校、工作等,而文本分类的目的,则是把这些文本的话题划分到给定的三种类别中。
情感分类
情感分析是自然语言处理中常见的场景,比如商品评价等。通过情感分析,可以挖掘产品在各个维度的优劣。情感分类其实也是一种特殊的文本分类,只是他更聚焦于情感匹配词典。
举例而言,情感分类可以用0/1表示负面评价/正面评价,例子如下:
0,不好的,319房间有故臭味。要求换房说满了,我是3月去的。在路上认识了一个上海人,他说他退房前也住的319,也是一股臭味。而且这个去不掉,特别是晚上,很浓。不知道是厕所的还是窗外的。服务一般,门前有绿皮公交去莫高窟,不过敦煌宾馆也有,下次住敦煌宾馆。再也不住这个酒店了,热水要放半个小时才有。
1,不错的酒店,大堂和餐厅的环境都不错。但由于给我的是一间走廊尽头的房间,所以房型看上去有点奇怪。客厅和卧室是连在一起的,面积偏小。服务还算到位,总的来说,性价比还是不错的。
本文将以情感二分类为例,实现如何利用BERT进行语义分析。
实现原理
首先,基于BERT预训练模型,能将一个文本转换成向量,作为模型的输入。
在BERT预训练模型的基础上,新增一个全连接层,将输入的向量通过训练转化成一个tensor作为输出,其中这个tensor的维度则是需要分类的种类,具体的值表示每个种类的概率。例如:
[0.25,0.75]
指代的是有0.25的概率属于第一类,有0.75的概率属于第二类,因此,理论输出结果是把该文本分为第二类。
核心逻辑
pre_deal.py
import csv
import random
from datasets import load_dataset
def read_file(file_path):
csv_reader = csv.reader(open(file_path, encoding='UTF-8'))
num = 0
data = []
for row in csv_reader:
if num == 0:
num = 1
continue
comment_data = [row[1], int(row[0])]
if len(comment_data[0]) > 500:
text=comment_data[0]
sub_texts, start, length = [], 0, len(text)
while start < length:
piecedata=[text[start: start + 500], comment_data[1]]
data.append(piecedata)
start += 500
else:
data.append(comment_data)
random.shuffle(data)
return data
对输入的csv文件进行处理,其中我们默认csv文件的格式是[label,text],将用于训练的内容读取出来,转化为numpy格式,其中,如果遇到有些文本过长(超过模型的输入),将其截断,分为多个文本段来输入。在最后,会通过shuffle函数进行打乱。
train.py
train.py定义了几个函数,用于训练。
首先是Bertmodel类,定义了基于Bert的训练模型:
class Bertmodel(nn.Module):
def __init__(self, output_dim, model_path):
super(Bertmodel, self).__init__()
# 导入bert模型
self.bert = BertModel.from_pret



最低0.47元/天 解锁文章
671

被折叠的 条评论
为什么被折叠?



