代码:
TextClassifier文件夹下包含三个主要的函数以及models和bert_pretrian文件夹,models文件夹下包含bert.py以及ernie.py,bert_pretrian文件夹中包含预训练模型。bert.py以及ernie.py里面可以设置模型以及训练参数。run.py为主函数,在这里设置参数,进行模型训练。train_eval.py里面是写好定的具体训练函数。通过predict.py进行数据分类预测。
具体代码分析且看下文分解!!!
TextClassifier
├── models
│ ├── bert.py # bert模型
│ └── ernie.py # ernie模型├── bert_pretrain #预训练模型
│ ├── bert_config.json
│ ├── pytorch_model.bin
│ └── vocab.txt├── run.py
├── predict.py
└── train_eval.py
算法流程:
二、文本处理
1.加载数据
由于豆瓣数据为DMSC.csv格式,所以我们通过pd.read_csv函数读取数据,该函数是用来读取csv格式的文件,将表格数据转化成dataframe格式。
#读取数据
data = pd.read_csv('DMSC.csv')
#观察数据格式
data.head()
#输出数据的一些相关信息
data.info()
#只保留数据中我们需要的两列:Comment列和Star列
data = data[['Comment','Star']]
#观察新的数据的格式
data.head()
输出结果:
Comment | Star | |
---|---|---|
0 | 连奥创都知道整容要去韩国。 | 3 |
1 | “一个没有黑暗面的人不值得信任。” 第二部剥去冗长的铺垫,开场即高潮、一直到结束,会有人觉… | 4 |
2 | 奥创弱爆了弱爆了弱爆了啊!!!!!! | 2 |
3 | 与第一集不同,承上启下,阴郁严肃,但也不会不好看啊,除非本来就不喜欢漫威电影。场面更加宏大… | 4 |
4 | 看毕,我激动地对友人说,等等奥创要来毁灭台北怎么办厚,她拍了拍我肩膀,没事,反正你买了两份… | 5 |
2. 文本预处理
由于一开始送训练数据进入BERT时,提示出现空白字符无法转换以及label标签范围不符合的问题,所以再一次将数据进行预处理,将空白去除以及标签为评分减一。
def clear_character(sentence):
new_sentence=''.join(sentence.split()) #去除空白
return new_sentence
data["comment_processed"]=data['Comment'].apply(clear_character)
data['label']=data['Star']-1
data.head()
输出结果:
Comment | Star | comment_processed | label | |
---|---|---|---|---|
0 | 连奥创都知道整容要去韩国。 | 3 | 连奥创都知道整容要去韩国。</ |