赞
踩
flyfish
我们现有的数据集是
weibo_senti_100k 10 万多条,带情感标注 新浪微博,正负向评论约各 5 万条。
数据格式如下
下载地址是
https://github.com/SophonPlus/ChineseNlpCorpus
我们通过huggingface中的使用方法使用微博数据集对模型bert-base-chinese进行微调。
下载glue_data.zip(可以不下载,只是用来做我们自己数据集的格式参考)
下载地址在文章末尾
GLUE(General Language Understanding Evaluation)是一个多任务的自然语言理解基准和分析平台。
GLUE包含九项NLU任务,语言均为英语。GLUE九项任务涉及到自然语言推断、文本蕴含、情感分析、语义相似等多个任务。
GLUE的论文为:GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding
GLUE的官网为:https://gluebenchmark.com/
我们参考的是SST-2文件夹
SST-2(The Stanford Sentiment Treebank,斯坦福情感树库),单句子分类任务,包含电影评论中的句子和它们情感的人类注释。这项任务是给定句子的情感,类别分为两类正面情感(positive,样本标签对应为1)和负面情感(negative,样本标签对应为0),并且只用句子级别的标签。也就是,本任务也是一个二分类任务,针对句子级别,分为正面和负面情感。
主要参考三个文件的内容格式
dev.tsv test.tsv train.tsv
train.tsv: (标签 + ‘\t’ + 句子)
dev.tsv:(标签 + ‘\t’ + 句子)
test.tsv:(索引 + ‘\t’ + 句子)
train.tsv和dev.tsv的标题是sentence、label
test.tsv的标题是 index、sentence
import pandas as pd
import math
path = '/media/weibo_senti_100k/'
pd_all = pd.read_csv(path + 'weibo_senti_100k.csv')
pd_all.replace(',', '\t')
print('评论数目(总体):%d' % pd_all.shape[0])
print('评论数目(正向):%d' % pd_all[pd_all.label==1].shape[0])
print('评论数目(负向):%d' % pd_all[pd_all.label==0].shape[0])
pd_all.columns = ["lablel","sentence"]
print(pd_all.sample(7))
pd_all=pd_all.loc[:,["sentence","lablel"]]#按照cols列表来依次取原pd_all的列
#划分数据
a=math.floor(pd_all.shape[0]*0.6)
b=math.floor(pd_all.shape[0]*0.8)
print(a)
print(b)
train = pd_all.loc[0:a]#切分操作
train.to_csv('train.tsv',sep='\t', header=True, index=False)#Dataframe写入到csv文件
#参数sep表示字段之间用tab键分隔,header表示是否需要标题,index表示是否需要索引。
dev=pd_all.loc[a+1:b]#切分操作
dev.to_csv('dev.tsv',sep='\t', header=True, index=False)
weibo微博文件里有dev.tsv , train.tsv 这里没做 test.tsv
python run_glue.py --model_name_or_path '/media/huggingface/bert-base-chinese/' \
--task_name sst-2 \
--data_dir './weibo' \
--output_dir result \
--do_train \
--do_eval
模型生成在result文件夹中
import torch
import pandas as pd
from transformers import AutoModel, AutoTokenizer, BertTokenizer
from transformers import pipeline
torch.set_grad_enabled(False)
pipe = '/media/transformers/examples/text-classification/result'
sentence = '我很高兴'#[{'label': 'LABEL_1', 'score': 0.9987839460372925}]
#sentence = '我很悲伤'#[{'label': 'LABEL_0', 'score': 0.9982221722602844}]
nlp = pipeline('sentiment-analysis', model=pipe, tokenizer=pipe)
print(nlp(sentence))
结果是
[{'label': 'LABEL_1', 'score': 0.9987839460372925}]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。