傻大方


首页 > 会·生活 > >

情感需求(机构类别)


使用BERT轻松快速地实现针对Yelp评论的多类别文本情感分析 。在本文中,我们将使用BERT在Yelp评论上开发多类文本分类 。
BERT概述BERT是用于通用“语言理解” 的深度双向表示模型,可从左至右和从右至左学习信息 。BERT是从BooksCorpus(800M字)和English Wikipedia(25亿字)中提取的未标记数据进行预训练的
BERT有两种型号
基于BERT的 编码器:12个编码器和12个双向自动关注头BERT大型: 24个编码器,带有24个双向自动关注头基于BERT的版本和基于BERT的版本都具有Cased和Uncased版本 。
BERT在WordPiece标记化之前对文本进行小写的情况下,不进行大小写转换 。例如,“詹姆斯·邦德”变成“詹姆斯·邦德” 。它还会删除重音标记 。BERT-Cased保留了真实的表壳和重音标记 。通常,除非用例要求保留对NLP任务至关重要的用例信息,否则我们将使用BERT-Uncased 。
BERT的基本设置我们需要Tensorflow 1.11或更高版本才能使BERT代码正常工作 。
在下载了预训练的权重和数据集之后,我们需要对多类分类进行一些更改 。
我们克隆或下载的代码将具有一个文件run_classifier.py 。我们需要更新ColaProcessor 类中的方法get_labels(),如下所示,以进行多类文本分类
二进制分类的原始代码
def get_labels(self): return [“0”, “1”]用于多类别文本分类的修改代码
def get_labels(self): return [“0”, “1”, “2”, “3”, “4”]为BERT建立数据集导入所需的库以进行数据处理
import numpy as npimport pandas as pdfrom sklearn.preprocessing import LabelEncoderfrom sklearn.model_selection import train_test_split读取Yelp复习训练并测试从文件中提取的数据
data_train= pd.read_csv(“yelp_review_full_csvtrain.csv”, header=None)data_test= pd.read_csv("yelp_review_full_csvtest.csv", header=None)data_train.head(5)查找类标签的唯一值

情感需求(机构类别)

文章插图
data_train[0].unique()
情感需求(机构类别)

文章插图
值1表示评价差,而值5表示评价很好 。
您可能希望类标签从0开始,所以我们从当前标签值中减去1 。值0现在表示评价不佳,值4表示评价很好
data_train[0] = (data_train[0] -1)data_test[0] = (data_test[0] -1)data_train[0].unique()
情感需求(机构类别)

文章插图
更新BERT代码以进行多类文本分类
在文件run_classifier.py中,修改类ColaProcessor中的get_labels() 方法并更新标签以匹配火车数据中的内容
def get_labels(self): return [“0”, “1”, “2”, “3”, “4”]在BERT中处理不同NLP任务的类要求数据采用.tsv(制表符分隔值)文件格式的特定格式 。
列0:GUID:该行的ID 。训练和测试数据均必需第1列:该行的类标签 。此列值应与文件run_classifier.py的类ColaProcessor中的get_labels()方法中指定的值匹配 。仅对于火车数据是必需的 。列2:alpha:这是用于文本分类的虚拟列,但是BERT的训练数据需要 第3列:文本:这是要分类的文本 。培训和测试数据都需要此列构建BERT数据集以进行培训,开发和测试BERT需要三个不同的数据集:用于训练的训练和开发以及用于预测的测试
#根据BERT数据要求以正确的顺序添加所需的列来创建数据帧df_bert = pd.DataFrame({ ‘id’:range(len(data_train)), ‘label’:data_train[0], ‘alpha’:[‘a’]*data_train.shape[0], ‘text’: data_train[1].replace(r’n’, ‘ ‘, regex=True)})df_bert.head()
情感需求(机构类别)

文章插图
数据符合BERT要求的格式
将数据拆分为训练和开发或评估数据集
# Splitting training data file into *train* and *test*df_bert_train, df_bert_dev = train_test_split(df_bert, test_size=0.01)建筑测试数据集
我们在测试数据集中只需要两列
列0:GUID:该行的ID 。第1列:文本:这是要分类的文本 。#根据BERT创建测试数据帧# Creating test dataframe according to= pd.DataFrame({ ‘id’:range(len(data_test)), ‘text’: data_test[1].replace(r’n’, ‘ ‘, regex=True)})df_bert_test.tail() 根据BERT测试数据集

情感需求(机构类别)

文章插图
将数据帧保存到.tsv文件中,没有用于train和dev的标题,但是文件test.tsv文件需要该标题
#保存dataframes到.tsv格式格式所要求的BERT df_bert_train.to_csv(‘yelp_review_full_csvtrain.tsv’, sep=’t’, index=False, header=False)df_bert_dev.to_csv(‘yelp_review_full_csvdev.tsv’, sep=’t’, index=False, header=False)df_bert_test.to_csv(‘yelp_review_full_csvtest.tsv’, sep=’t’, index=False, header=True)训练BERT模型我们将加载经过预训练的基于BERT的Uncased模型权重,并在Yelp审查数据集上训练模型 。让我们了解我们需要为训练设置的参数 。
我们需要训练多类文本分类,因此我们将使用run_classifier.py文件 。
1. task_name:这是我们计划用于培训的任务 。选项是
CoLA:语言可接受性语料库是一个二进制的单句分类任务,即ColaProcessor类 。目的是预测英语句子在语言上是否“可以接受”MNLI:多体类自然语言推理是一项大规模的,众包的蕴含分类任务 。给定一对句子,目标是预测第二个句子相对于第一个句子是包含,矛盾还是中立的MRPC:Microsoft研究释义语料库由自动从在线新闻源中提取的句子对组成 。目的是检查该对中的句子在语义上是否等效 XNLI:跨语言自然语言推理使用15种语言的跨语言句子分类 。2. do_train:将其设置为True进行培训 。这将使用train.tsv文件进行培训
3. do_eval:将其设置为True以进行评估 。这将使用dev.tsv文件进行评估
4. data_dir:包含.tsv文件中数据的目录
5. vocab_file:指定vocab.txt文件 。Vocab.txt使用BERT提供的vocab文件将单词映射到索引 。词汇表中有119,547个单词令牌
6. bert_config_file:包含BERT模型的参数值 。BERT预训练模型具有此文件
7. init_checkpoint:初始检查点,通常从预先训练的检查点开始 。如果您从上次中断的地方恢复训练过程,或者训练被中断,请提及最后一个检查点文件名 。
8. max_seq_length:所发布的模型经过训练,序列长度最大为512,但是您可以使用更短的最大序列长度进行微调以节省大量内存 。较长的序列不成比例地昂贵,因为注意力是序列长度的平方 。填充比指定长度短的序列
9. train_batch_size:培训的总批次大小 。内存使用量也与批量大小成正比 。默认值为32 。指定此参数仅用于训练 。
10. learning_rate:Adam的初始学习率 。默认学习率是0.00005 。指定此参数仅用于训练 。
11. num_train_epochs:要执行的训练时期的总数 。指定此参数仅用于训练 。
12. output_dir:将在其中写入模型检查点的输出目录以及评估数据集的详细信息 。您需要先创建此目录,然后再指定它用于训练或推理 。
13. do_lower_case:是否小写输入文本 。对于无案例模型,应为True;对于有案例模型,应为False 。仅指定培训 。
14. save_checkpoints_steps:指定保存模型检查点的频率 。仅指定培训 。
要进行培训,请在命令提示符处使用以下命令
python run_classifier.py--task_name=cola--do_train=true--do_eval=true--data_dir=yelp_review_full_csv--vocab_file=BERTuncased_L-12_H-768_A-12uncased_L-12_H-768_A-12vocab.txt--bert_config_file=BERTuncased_L-12_H-768_A-12uncased_L-12_H-768_A-12bert_config.json--init_checkpoint=BERTuncased_L-12_H-768_A-12uncased_L-12_H-768_A-12bert_model.ckpt--max_seq_length=64--train_batch_size=2--learning_rate=2e-5--num_train_epochs=3.0--output_dir=BERTbert_output--do_lower_case=True--save_checkpoints_steps 10000培训完成后,您可以查看包含dev数据集摘要的检查点文件和eval_results.txt文件 。
eval_accuracy = 0.71553844eval_loss = 1.035305global_step = 1287000loss = 1.0362284预测情绪为了预测情绪,我们将以下参数设置为— do_predict参数设置为True 。
1. task_name:应与用于训练数据集的task_name匹配
2. data_dir:指定包含test.tsv文件中的数据的目录
3. vocab_file:指定vocab.txt文件 。Vocab.txt使用BERT提供的vocab文件将单词映射到索引 。
4. bert_config_file:包含BERT模型的参数值 。BERT预训练模型具有此文件
【情感需求(机构类别)】5. init_checkpoint:初始检查点 。这是输出目录中模型检查点文件的最大数量 。
6. max_seq_length:指定最大序列长度 。
7. output_dir:将测试结果写入文件test_results.tsv的输出目录
python run_classifier.py--task_name=cola--do_predict=true--data_dir=yelp_review_full_csv--vocab_file=BERTuncased_L-12_H-768_A-12uncased_L-12_H-768_A-12vocab.txt--bert_config_file=BERTuncased_L-12_H-768_A-12uncased_L-12_H-768_A-12bert_config.json--init_checkpoint=BERTbert_outputmodel.ckpt-1085250--max_seq_length=128--output_dir=BERTbert_output评估测试结果测试结果位于文件test_results.tsv的输出目录中,您可以将其与测试标签进行比较并评估我们的多类文本分类的性能
阅读和解释结果
每个文本的结果在test_results.tsv文件中都有一行,并带有五个标记类中每个类别的概率 。

情感需求(机构类别)

文章插图
我们需要找到可能性最高的课程,这将是Yelp审查的感想
导入带有打开(' BERTbert_outouttest_results.tsv')的csv label_results = [] importcsvlabel_results=[]pd.DataFrame()with open('BERTbert_outouttest_results.tsv') as file:rd = csv.reader(file, delimiter="t")for row in rd:data_1=[float(i) for i in row]label_results.append(data_1.index(max(data_1)))df_results=pd.DataFrame()df_results=pd.DataFrame(label_results)现在我们生成情感范围从0到4的混淆矩阵
from sklearn.metrics import confusion_matrixconfusion_matrix(data_test[0], df_results[0])混淆矩阵
我曾在一个时期训练过BERT模型,您可以看到结果对于多类文本分类看起来不错
from sklearn import metricsprint("Accuracy",metrics.accuracy_score(data_test[0], df_results[0]))print("F1-Score",metrics.f1_score(data_test[0], df_results[0],average='weighted'))
情感需求(机构类别)

文章插图


    猜你喜欢

  • 情感障碍是什么意思(双重情感障碍症)
  • 永久的生命主题情感(1991接触生命)
  • 深夜感悟人生的说说(情感话语)
  • 色彩知识的设计与运用(色彩情感设计)
  • 挽回前任(挽回情感_1)
  • 如何备考教师招聘考试(教师招聘大概备考多久)
  • 爱的牵绊评价(感情上的矛盾)
  • 谓语动词和非谓语动词是什么(非谓语动词分类)
  • 喜欢和适合哪个最重要(情感生活)
  • 给女生的情感建议(常常给别人情感建议)

  • 上一篇:亲密关系书(亲密关系下载)

    下一篇:男女关系有几种(自述)