赞
踩
BERT 源码地址:https://github.com/google-research/bert
中英文模型 分为 base large版本,其中base版本较小是很小型公司或院校使用。
cased 表示区分模型的大小写
uncased表示不区分模型的大小写
目前中文只有bsert-base,Chinese模型
具体模型具体如下,说明了 网络层数,参数量等信息
tensorflow 版本在1.9 以上
pip insatall bert-tensorflow
还可以根据源码 引入项目使用
1)、bert as service of hanxiao,启动服务,发送请求就可以获取BERT word embeding
https://github.com/hanxiao/bert-as-service
- pip install bert-serving-server
-
- pip install bert-serving-client # client, independent of `bert-serving-server`
2)、bert-base macan 可以训练NER模型,发送请求获取实体解析结果
https://github.com/macanv/BERT-BiLSTM-CRF-NER
安装:
- pip install bert-base==0.0.7 -i https://pypi.python.org/simple
-
1)、命令及参数:
- bert-base-ner-train \
- -data_dir {your dataset dir}\
- -output_dir {training output dir}\
- -init_checkpoint {Google BERT model dir}\
- -bert_config_file {bert_config.json under the Google BERT model dir} \
- -vocab_file {vocab.txt under the Google BERT model dir}
2)、标签定义
["O", "B-PER", "I-PER", "B-ORG", "I-ORG", "B-LOC", "I-LOC","B-TIM","I_TIM", "X", "[CLS]", "[SEP]"]
B表示实体开端单字,I表示实体后续字,O表示非实体内容
PER 表示人员,ORG表示机构,LOC表示位置,TIM表示时间
"X", “[CLS]”, “[SEP]” 是附加的,[CLS]”, "[SEP]"是句子的开始和结束标志,X是wordpice产生的东西,中文先不用关注。
3)、训练数据格式:
其中data_dir是你的数据所在的目录,训练数据,验证数据和测试数据命名格式为:train.txt, dev.txt,test.txt,请按照这个格式命名文件,否则会报错。
训练数据的格式如下:
- 海 O
- 钓 O
- 比 O
- 赛 O
- 地 O
- 点 O
- 在 O
- 厦 B-LOC
- 门 I-LOC
- 与 O
- 金 B-LOC
- 门 I-LOC
- 之 O
- 间 O
- 的 O
- 海 O
- 域 O
- 。 O
每行得第一个是字,第二个是它的标签,使用空格’ '分隔,请一定要使用空格。句与句之间使用空行划分。程序会自动读取你的数据。
output_dir: 训练模型输出的文件路径,模型的checkpoint以及一些标签映射表都会存储在这里,这个路径在作为服务的时候,可以指定为-ner_model_dir
init_checkpoint: 下载的谷歌BERT模型
bert_config_file : 谷歌BERT模型下面的bert_config.json
vocab_file: 谷歌BERT模型下面的vocab.txt
训练完成后,你可以在你指定的output_dir中查看训练结果。
4)、启动命名实体识别任务的服务,
服务的命名是:bert-base-serving-start,同样的,你可以先使用-help查看相关帮助
bert-base-serving-start -help
命名实体服务的启动命令解释:
- bert-base-serving-start \
- -model_dir C:\workspace\python\BERT_Base\output\ner2 \
- -bert_model_dir F:\chinese_L-12_H-768_A-12
- -mode NER
参数解释:
bert_model_dir: 谷歌BERT模型的解压路径,可以在这里下载 https://github.com/google-research/bert
model_dir: 训练好的NER模型或者文本分类模型的路径,对于上面的output_dir
model_pd_dir: 运行模型优化代码后, 经过模型压缩后的存储路径,例如运行上面的命令后改路径下会产生 ner_model.pb 这个二进制文件
mode:NER 或者是BERT这两个模式,类型是字符串,如果是NER,那么就会启动NER的服务,如果是BERT,那么具体参数将和[bert as service] 项目中得一样。
本地测试命令启动:
bert-base-serving-start -model_pb_dir D:\work\python-space\bert\model\ner -bert_model_dir D:\work\python-space\bert\Corpus\chinese_L-12_H-768_A-12 -model_dir D:\work\python-space\bert\model\ner -num_worker 1 -mode NER
如下图表示启动成功:
5)、客户端访问:
- import time
- from bert_base.client import BertClient
- # 指定服务器的IP
- with BertClient(ip='XXX,XXX,XXX,XXX', ner_model_dir=ner_model_dir, show_server_config=False, check_version=False, check_length=False, mode='NER') as bc:
- start_t = time.perf_counter()
- str = '1月24日,新华社对外发布了中央对雄安新区的指导意见,洋洋洒洒1.2万多字,17次提到北京,4次提到天津,信息量很大,其实也回答了人们关心的很多问题。'
- rst = bc.encode([str, str]) #测试同时输入两个句子,多个输入同理
- print('rst:', rst)
- print(time.perf_counter() - start_t)
返回结果:
结果说明:
实体已经在结果list中标注处理,后续业务使用,可以扩展解析方式解决,在此不再赘述。
以上是小编的一些模仿实践,希望对大家有点用,如果不正确的释放请指正!!!
最后附上keras-bert的源码地址及参考博客地址:
https://github.com/CyberZHG/keras-bert
https://blog.csdn.net/macanv/article/details/85684284
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。