0 项目背景

信息抽取任务旨在从非结构化的自然语言文本中提取结构化信息。在本系列项目中,将讨论如何又好又快地实现一个简历信息提取任务。

在前面的项目中,基本上都是以PaddleNLP为主导,进行简历信息抽取。

不过,随着PaddleOCR功能的愈发完善,或许可以换个思路,增加OCR能力在简历信息抽取中扮演的角色,提升识别效果,这就是从本项目起,我们试图实现的方案。


代码地址:

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

1 数据集和环境准备

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_机器学习

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_深度学习_02

2 思路介绍

简历信息提取是一种典型的关键信息抽取 (Key Information Extraction, KIE)任务,要从文本或者图像中,抽取出关键的信息。

一般的KIE方法基于命名实体识别(Named Entity Recognition,NER)来展开研究,这也是我们在前置项目中,探索的主要方向。但是此类方法仅使用了文本信息而忽略了位置与视觉特征信息,因此精度受限。近几年大多学者开始融合多个模态的输入信息,进行特征融合,并对多模态信息进行处理,从而提升KIE的精度。主要方法有以下几种:

  • (1)基于Grid的方法:此类方法主要关注图像层面多模态信息的融合,文本大多大多为字符粒度,对文本与结构结构信息的嵌入方式较为简单,如Chargrid等算法。
  • (2)基于Token的方法:此类方法参考NLP中的BERT等方法,将位置、视觉等特征信息共同编码到多模态模型中,并且在大规模数据集上进行预训练,从而在下游任务中,仅需要少量的标注数据便可以获得很好的效果。如LayoutLM, LayoutLMv2, LayoutXLM, StrucText等算法。
  • (3)基于GCN的方法:此类方法尝试学习图像、文字之间的结构信息,从而可以解决开集信息抽取的问题(训练集中没有见过的模板),如GCN、SDMGR等算法。
  • (4)基于End-to-end的方法:此类方法将现有的OCR文字识别以及KIE信息抽取2个任务放在一个统一的网络中进行共同学习,并在学习过程中相互加强。如Trie等算法。

PaddleOCR中实现了LayoutXLM等算法(基于Token),同时,在PP-StructureV2中,对LayoutXLM多模态预训练模型的网络结构进行简化,去除了其中的Visual backbone部分,设计了视觉无关的VI-LayoutXLM模型,同时引入符合人类阅读顺序的排序逻辑以及UDML知识蒸馏策略,最终同时提升了关键信息抽取模型的精度与推理速度。

在本文中,我们就准备直接使用PaddleOCR提供的预训练模型,完成简历关键信息抽取任务。

3 准备预训练模型

在PaddleOCR中,已支持的关键信息抽取算法列表如下:

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_深度学习_03

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_知识图谱_04

3.1 KIE模型介绍

对于识别得到的文字进行关键信息抽取,有2种主要的方法。

(1)直接使用SER,获取关键信息的类别:如身份证场景中,将“姓名“与”张三“分别标记为name_key与name_value。最终识别得到的类别为name_value对应的文本字段即为我们所需要的关键信息。

(2)联合SER与RE进行使用:这种方法中,首先使用SER,获取图像文字内容中所有的key与value,然后使用RE方法,对所有的key与value进行配对,找到映射关系,从而完成关键信息的抽取。

3.2 关于XFUND数据集

XFUND数据集是微软提出的一个用于KIE任务的多语言数据集,它包含7种不同语种的表单数据,并且全部用人工进行了键-值对形式的标注。其中每个语种的数据都包含了199张表单数据,并分为149张训练集以及50张测试集。

下载地址:Release XFUND v1.0 · doc-analysis/XFUND 读者也可以在AI Studio的数据集中搜索到。其中文表单数据具体情况如下:

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_人工智能_05

查看该数据集的标注信息可以发现,类似姓名、出生日期、籍贯、地址等表单数据常见内容,该数据集都有涉及。

因此,直接使用基于PaddleOCR提供的、在XFUND_zh公开数据集上表现良好的VI-LayoutXLM部署模型,用于简历基本信息的抽取,看来有一定的可行性。

3.3 VI-LayoutXLM部署模型准备

VI-LayoutXLM基于LayoutXLM进行改进,在下游任务训练过程中,去除视觉骨干网络模块,最终精度基本无损的情况下,模型推理速度进一步提升。

在XFUND_zh数据集上,算法复现效果如下:

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_深度学习_06

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_深度学习_07

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_知识图谱_08

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_人工智能_09

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_自然语言处理_10

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_人工智能_11

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_自然语言处理_12

从测试简历图片的的关键信息抽取效果看,SER整体还是可以的,但SER + RE差距就比较大了。

其实也不难理解,因为尽管XFUND是典型的表单数据集,但是训练数据也就百余张图片,标注内容与我们在简历中需要提取的关键信息也不完全一致。

接下来,自然就出现了两种优化方法:

  • 提取SER输出的文本信息,组合后回到PaddleNLP.Taskflow中,进行关键信息抽取
  • 重新标注数据,进行SER+RE微调

本项目中,我们先采用第一种优化方法,快速提取简历关键信息。

4 SER + Taskflow简历批量信息抽取

4.1 SER输出结果的文本拼接

SER预测结果默认保存到输出文件目录的infer.txt文件中,从代码最小改造的角度看,既然这个文件已经包括了我们想要的文本信息,就把输出修改为纯json格式,再次读取该文件进行文本拼接即可。

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_深度学习_13

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_机器学习_14

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_自然语言处理_15

4.2 批量信息抽取实现

下面我们把整个批量抽取过程串起来。首先是准备图片格式的简历文件。

4.2.1 图片格式简历文件准备

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_深度学习_16

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_人工智能_17

4.2.2 批量信息提取

这里要对原有的推理脚本做比较大幅度的变更,关键代码如下:

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_自然语言处理_18

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_自然语言处理_19

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_知识图谱_20

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_深度学习_21

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_机器学习_22

简历信息提取(三):用VI-LayoutXLM提升关键信息抽取效果_自然语言处理_23

4 小结

在本项目中,我们使用PaddleOCR提供的VI-LayoutXLM预训练模型,结合PaddleNLP Taskflow API,进一步提升了图片格式的简历文件批量信息提取的效果。

我们发现,引入版面分析技术后,图片格式简历文件内容提取文本的完整性、连贯性都有大幅提升,而且不像word文档提取结果,有大量的多余文字干扰。从而提升了下游实体识别的效果。接下来我们将基于这些处理后的文本内容进行模型微调,进一步提升简历关键信息抽取效果。