百度语义预训练ERNIE实现物流信息抽取任务

百度语义预训练ERNIE实现物流信息抽取任务

向AI转型的程序员都关注了这个号????????????

机器学习AI算法工程   公众号:datayx

本项目将演示,如何使用PaddleHub语义预训练模型ERNIE完成从快递单中抽取姓名、电话、省、市、区、详细地址等内容,形成结构化信息。辅助物流行业从业者进行有效信息的提取,从而降低客户填单的成本。

本文相关代码 获取

关注微信公众号 datayx  然后回复  信息抽取  即可获取。

AI项目体验地址 https://loveai.tech

PART A. 背景介绍

A.1 物流信息抽取任务

如何从物流信息中抽取想要的关键信息呢?首先需要定义下想要的结果应该如何表示。

比如现在拿到一个快递单,可以作为我们的模型输入,例如“张三18625584663广东省深圳市南山区学府路东百度国际大厦”,那么序列标注模型的目的就是识别出其中的“张三”为人名(用符号 P 表示),“18625584663”为电话名(用符号 T 表示),“广东省深圳市南山区百度国际大厦”分别是 1-4 级的地址(分别用 A1~A4 表示,可以释义为省、市、区、街道)。

如下表:

百度语义预训练ERNIE实现物流信息抽取任务

A.2 序列标注模型

我们可以用序列标注模型来解决快递单的信息抽取任务,下面具体介绍一下序列标注模型。

在序列标注任务中,一般会定义一个标签集合,来表示所以可能取到的预测结果。在本案例中,针对需要被抽取的“姓名、电话、省、市、区、详细地址”等实体,标签集合可以定义为:

label = {P-B, P-I, T-B, T-I, A1-B, A1-I, A2-B, A2-I, A3-B, A3-I, A4-B, A4-I, O}

每个标签的定义分别为:

百度语义预训练ERNIE实现物流信息抽取任务

注意每个标签的结果只有 B、I、O 三种,这种标签的定

义方式叫做 BIO 体系,也有稍麻烦一点的 BIESO 体系,这里不做展开。其中 B 表示一个标签类别的开头,比如 P-B 指的是姓名的开头;相应的,I 表示一个标签的延续。

对于句子“张三18625584663广东省深圳市南山区百度国际大厦”,每个汉字及对应标签为:

百度语义预训练ERNIE实现物流信息抽取任务

我们可以通过以下例子,观察模型的输出结果。

百度语义预训练ERNIE实现物流信息抽取任务

PART B. 常用模型

序列标注任务常用的模型是LSTM+CRF。如下图所示,LSTM 的输出可以作为 CRF 的输入,最后 CRF 的输出作为模型整体的预测结果。

百度语义预训练ERNIE实现物流信息抽取任务

我们直接调用 LSTM-CRF 模型看下效果。

百度语义预训练ERNIE实现物流信息抽取任务

PART C. 语义预训练模型ERNIE优化信息抽取

如果你对预训练模型感兴趣,如谷歌的 BERT 模型,或者百度的 ERNIE 模型,也值得在自己的任务试一试效果。

百度的预训练模型ERNIE经过海量的数据训练后,其特征抽取的工作已经做的非常好。借鉴迁移学习的思想,我们可以利用其在海量数据中学习的语义信息辅助小数据集(如本示例中的快递单数据集)上的任务。

百度语义预训练ERNIE实现物流信息抽取任务

PaddleHub提供了丰富的预训练模型,并且可以便捷地获取PaddlePaddle生态下的所有预训练模型。下面展示如何使用PaddleHub一键加载ERNIE,优化信息抽取任务。

C.1 PaddleHub加载自定义数据集

加载文本类自定义数据集,用户仅需要继承HubDataset类,替换数据集存放地址即可。下面代码示例展示如何将自定义数据集加载进PaddleHub使用。这样我们只需要在小数据集上微调(Fine-tune)预训练模型即可。

百度语义预训练ERNIE实现物流信息抽取任务

百度语义预训练ERNIE实现物流信息抽取任务

C.2 PaddleHub一键加载ERNIE

百度语义预训练ERNIE实现物流信息抽取任务

百度语义预训练ERNIE实现物流信息抽取任务

如果想尝试其他语义模型(如ernie_tiny, RoBERTa等),只需要更换Module中的name参数即可.

百度语义预训练ERNIE实现物流信息抽取任务

百度语义预训练ERNIE实现物流信息抽取任务

百度语义预训练ERNIE实现物流信息抽取任务

百度语义预训练ERNIE实现物流信息抽取任务

百度语义预训练ERNIE实现物流信息抽取任务

百度语义预训练ERNIE实现物流信息抽取任务

百度语义预训练ERNIE实现物流信息抽取任务

百度语义预训练ERNIE实现物流信息抽取任务

百度语义预训练ERNIE实现物流信息抽取任务

C.7 开始Finetune

我们选择finetune_and_eval接口来进行模型训练,这个接口在finetune的过程中,会周期性的进行模型效果的评估,以便我们了解整个训练过程的性能变化。

run_states=seq_label_task.finetune_and_eval()

PART D. 使用模型进行预测

当Finetune完成后,我们使用模型来进行预测,整个预测流程大致可以分为以下几步:

  1. 构建网络

  2. 生成预测数据的Reader

  3. 切换到预测的Program

  4. 加载预训练好的参数

  5. 运行Program进行预测

百度语义预训练ERNIE实现物流信息抽取任务

百度语义预训练ERNIE实现物流信息抽取任务

百度语义预训练ERNIE实现物流信息抽取任务

百度语义预训练ERNIE实现物流信息抽取任务

总的来说,PaddleHub完成迁移学习过程只需下图所展示的6步即可完成。

百度语义预训练ERNIE实现物流信息抽取任务


阅读过本文的人还看了以下文章:

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

百度语义预训练ERNIE实现物流信息抽取任务