任务目标

输入“张三18625584663广东省深圳市南山区学府路东百度国际大厦”,目标是识别出其中的“张三”为人名(用符号 P 表示),“18625584663”为电话名(用符号 T 表示),“广东省深圳市南山区百度国际大厦”分别是 1-4 级的地址(分别用 A1~A4 表示,可以释义为省、市、区、街道)。

这是一个典型的命名实体识别(Named Entity Recognition,NER)场景,各实体类型及相应符号表示见下表:

抽取实体/字段 符号 抽取结果
姓名 P 张三
电话 T 18625584663
A1 广东省
A2 深圳市
A3 南山区
详细地址 A4 百度国际大厦

依赖安装

此处略过

数据准备

数据标注格式

数据下载

下载waybill数据集:https://paddlenlp.bj.bcebos.com/paddlenlp/datasets/waybill.tar.gz
。解压后文件结构如下

--waybil
  |-- train.txt
  |-- dev.txt
  |-- test.txt
  |-- word.dic
  |-- tag.dic

训练

conda activate paddle
cd D:\Code\PADDLE\PaddleNLP-develop
python examples\information_extraction\waybill_ie\run_ernie.py --save_dir examples/information_extraction/waybill_ie/ernir_ckpt  --epochs 20 --batch_size 64 --device cpu --data_dir D:\Data\waybill

模型导出

python examples\information_extraction\waybill_ie\export_model.py --params_path examples\information_extraction\waybill_ie\ernir_ckpt\model_100\model_state.pdparams --output_path examples/information_extraction/waybill_ie/ernir_inference --data_dir D:\Data\waybill

使用导出的模型预测

python examples/information_extraction/waybill_ie/deploy/python/predict.py --model_dir examples\information_extraction\waybill_ie\ernir_inference\ --data_dir D:\Data\waybill

# 输出
('黑龙江省', 'A1')('双鸭山市', 'A2')('尖山区', 'A3')('八马路与东平行路交叉口北40米', 'A4')('韦业涛', 'P')('18600009172', 'T')
('广西壮族自治区', 'A1')('桂林市', 'A2')('雁山区', 'A3')('雁山镇西龙村老年活动中心', 'A4')('17610348888', 'T')('羊卓卫', 'P')
('15652864561', 'T')('河南省', 'A1')('开封市', 'A2')('顺河回族区', 'A3')('顺河区公园路32号', 'A4')('赵本山', 'P')
('河北省', 'A1')('唐山市', 'A2')('玉田县', 'A3')('无终大街159号', 'A4')('18614253058', 'T')('尚汉生', 'P')
('台湾', 'A1')('台中市', 'A2')('北区', 'A3')('北区锦新街18号', 'A4')('18511226708', 'T')('蓟丽', 'P')
('廖梓琪', 'P')('18514743222', 'T')('湖北省', 'A1')('宜昌市', 'A2')('长阳土家族自治县', 'A3')('贺家坪镇贺家坪村一组临河1号', 'A4')