使用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_csv\\train.csv”, header=None)data_test= pd.read_csv("yelp_review_full_csv\\test.csv", header=None)data_train.head(5)
查找类标签的唯一值
data_train[0].unique()
data_train[0] = (data_train[0] -1)
data_test[0] = (data_test[0] -1)da