一.项目的内容
使用模块化的方式,利用bert模型处理酒店的文字评价。
如label为“1”表示该评价为好评,如果label为“0”表示该评价为差评。
利用bert模型对数据进行训练,用验证集来判断模型训练的效果。
二.模块化各个模块
1.数据处理
##data2负责产生两个dataloader
from torch.utils.data import DataLoader,Dataset
from sklearn.model_selection import train_test_split
import torch
#给X,Y和分割比例,分割出来一个训练集和验证集的X,Y
def read_file(path):
data=[]
label=[]
with open(path,"r",encoding="utf-8") as f:
for i,line in enumerate(f):
if i<5200:
continue
if i>5400:
break
line=line.strip("\n") #去掉回车
line=line.split(",",1) #把这句话按照,分割,1表示分割的次数
data.append(line[1])
label.append(line[0])
print("读了%d的数据"%len(data))
return data,label
file="../jiudian.txt"
class jdDataset(Dataset):
def __init__(self,data,label):
self.X=data
self.Y=torch.LongTensor([int(i) for i in label])
def __getitem__(self, item):
return self.X[item],self.Y[item]
def __len__(self):
return len(self.Y)
def get_data_loader(path,batchsize,val_size=0.2): #读入数据,分割数据
data,label=read_file(path)
train_x,val_x,train_y,val_y=train_test_split(data,label,test_size=val_size,shuffle=True,stratify=label)
train_set=jdDataset(train_x,train_y)
val_set=jdDataset(val_x,val_y)
train_loader=DataLoader(train_set,batchsize,shuffle=True)
val_loader=DataLoader(val_set,batchsize,shuffle=True)
return train_loader,val_loader
#表示仅在主模块调用时才运行
if __name__=="__main__":
get_data_loader(file,2)