- A+
一、模型简介
据说百度出了个比较好的nlp框架,最近研究了下。
源码地址:
https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE
这个ERNIE,据说比bert好。
ERNIE 通过建模海量数据中的词、实体及实体关系,学习真实世界的语义知识。相较于 BERT 学习原始语言信号,ERNIE 直接对先验语义知识单元进行建模,增强了模型语义表示能力。
这里我们举个例子:
Learnt by BERT :哈 [mask] 滨是 [mask] 龙江的省会,[mask] 际冰 [mask] 文化名城。
Learnt by ERNIE:[mask] [mask] [mask] 是黑龙江的省会,国际 [mask] [mask] 文化名城。
在 BERT 模型中,我们通过『哈』与『滨』的局部共现,即可判断出『尔』字,模型没有学习与『哈尔滨』相关的任何知识。而 ERNIE 通过学习词与实体的表达,使模型能够建模出『哈尔滨』与『黑龙江』的关系,学到『哈尔滨』是 『黑龙江』的省会以及『哈尔滨』是个冰雪城市。
训练数据方面,除百科类、资讯类中文语料外,ERNIE 还引入了论坛对话类数据,利用 DLM(Dialogue Language Model)建模 Query-Response 对话结构,将对话 Pair 对作为输入,引入 Dialogue Embedding 标识对话的角色,利用 Dialogue Response Loss 学习对话的隐式关系,进一步提升模型的语义表示能力。
我们在自然语言推断,语义相似度,命名实体识别,情感分析,问答匹配 5 个公开的中文数据集合上进行了效果验证,ERNIE模型相较 BERT 取得了更好的效果。
数据集
|
XNLI
|
LCQMC
|
MSRA-NER
|
ChnSentiCorp
|
nlpcc-dbqa
|
|||||||
评估 指标
|
acc
|
acc
|
f1-score
|
acc
|
mrr
|
f1-score
|
||||||
dev
|
test
|
dev
|
test
|
dev
|
test
|
dev
|
test
|
dev
|
test
|
dev
|
test
|
|
BERT
|
78.1
|
77.2
|
88.8
|
87.0
|
94.0
|
92.6
|
94.6
|
94.3
|
94.7
|
94.6
|
80.7
|
80.8
|
ERNIE
|
79.9 (+1.8)
|
78.4 (+1.2)
|
89.7 (+0.9)
|
87.4 (+0.4)
|
95.0 (+1.0)
|
93.8 (+1.2)
|
95.2 (+0.6)
|
95.4 (+1.1)
|
95.0 (+0.3)
|
95.1 (+0.5)
|
82.3 (+1.6)
|
二、用ERNIE做下游的任务
1、下载模型:
2、准好你自己的训练数据
trainData/dev.tsv trainData/test.tsv trainData/train.tsv
3、然后写一个脚本开始训练
set -eux python -u run_classifier.py \ --use_cuda true \ --verbose true \ --do_train true \ --do_val true \ --do_test true \ --batch_size 6 \ --init_pretraining_params kemu/params \ --train_set kemu/trainData/train.tsv \ --dev_set kemu/trainData/dev.tsv \ --test_set kemu/trainData/test.tsv \ --vocab_path config/vocab.txt \ --checkpoints ./checkpoints \ --save_steps 1000 \ --weight_decay 0.01 \ --warmup_proportion 0.0 \ --validation_steps 100 \ --epoch 10 \ --max_seq_len 512 \ --ernie_config_path config/ernie_config.json \ --learning_rate 5e-5 \ --skip_steps 10 \ --num_iteration_per_drop_scope 1 \ --num_labels 9 \ --random_seed 1
三、分析
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏