发明内容
为此,需要提供一种构建部署文本实体关系提取模型的方法,用以解决现有文本实体关系提取技术方案存在灵活性不够、未提供数据处理工具及预留人工调优介入点不足等问题。具体技术方案如下:
一种构建部署文本实体关系提取模型的方法,包括步骤:
在源码管理平台上按第一预设规范创建项目工程,在数据存储平台按第二预设规范创建数据存储目录;
采集数据,并按第三预设规范对所述数据进行预处理,并存储预处理后的数据至对应的数据存储目录中;
根据第四预设规范对所述预处理后的数据进行标注,抽取评估数据,并根据第五预设规范对所述评估数据进行数据评估;
对标注后的数据进行切分成不同类型数据,所述不同类型数据包括以下中的一种或多种:训练数据、测试数据、评估数据,存储所述不同类型数据至对应的数据存储目录中;
选定训练模型,并将所述不同类型数据进行处理使得符合所述训练模型接收的数据格式,输入处理后的训练数据对所述训练模型进行训练;
根据处理后的测试数据和处理后的评估数据对训练后的训练模型进行模型评估,若评估合格,则发布评估合格的模型。
进一步的,所述第一预设规范包括以下中的一种或多种:定义工程命名格式、定义过程数据、模型源码、辅助工具、相关文档存储目录;
所述第二预设规范包括以下中的一种或多种:定义数据存储目录命名格式,定义原始数据、预处理数据、标注数据、训练数据存储目录、测试数据存储目录、评估数据存储目录;
所述第三预设规范包括:将非结构化文档转换为纯文本文档;
所述第四预设规范包括:使用json格式存储标注数据,一份纯文本文档生成一份json文件;
所述第五预设规范包括以下中的一种或多种:各类数据数量分布情况、各类数据包含实体数量情况、标注质量、标注方式及时长。
进一步的,所述“对标注后的数据进行切分成不同类型数据,所述不同类型数据包括以下中的一种或多种:训练数据、测试数据、评估数据,存储所述不同类型数据至对应的数据存储目录中”,还包括步骤:
根据第六预设规范来划分训练数据,所述第六预设规范包括:将文本原本、实体类型、关系类型、实体详情、实体关系详情分别存储至不同的json文件;
根据第七预设规范来划分测试数据,所述测试数据包括以下中的一种或多种:原始数据、标签类型数据、关系类型数据;
根据第八预设规范来划分评估数据,所述评估数据包括以下中的一种或多种:实体标注数据、实体关系数据。
进一步的,所述“根据处理后的测试数据和处理后的评估数据对训练后的训练模型进行模型评估”,还包括步骤:
通过模型评估脚本对处理后的测试数据和处理后的评估数据进行计算得评估指标值,所述评估指标值包括以下中的一种或多种:准确率、召回率、F1值;
通过综合分析训练模型的不同评估维度判断所述训练模型是否可发布,所述不同评估维度包括以下中的一种或多种:评估指标值、运行环境、Badcase分析。
进一步的,所述“则发布评估合格的模型”,还包括步骤:
对所述评估合格的模型的训练进行自动化构建,并将所述模型的运行环境进行打包镜像处理,根据模型发布规范发布评估合格的模型。
为解决上述技术问题,还提供了一种存储设备,具体技术方案如下:
一种存储设备,其中存储有指令集,所述指令集用于执行:
在源码管理平台上按第一预设规范创建项目工程,在数据存储平台按第二预设规范创建数据存储目录;
采集数据,并按第三预设规范对所述数据进行预处理,并存储预处理后的数据至对应的数据存储目录中;
根据第四预设规范对所述预处理后的数据进行标注,抽取评估数据,并根据第五预设规范对所述评估数据进行数据评估;
对标注后的数据进行切分成不同类型数据,所述不同类型数据包括以下中的一种或多种:训练数据、测试数据、评估数据,存储所述不同类型数据至对应的数据存储目录中;
选定训练模型,并将所述不同类型数据进行处理使得符合所述训练模型接收的数据格式,输入处理后的训练数据对所述训练模型进行训练;
根据处理后的测试数据和处理后的评估数据对训练后的训练模型进行模型评估,若评估合格,则发布评估合格的模型。
进一步的,所述第一预设规范包括以下中的一种或多种:定义工程命名格式、定义过程数据、模型源码、辅助工具、相关文档存储目录;
所述第二预设规范包括以下中的一种或多种:定义数据存储目录命名格式,定义原始数据、预处理数据、标注数据、训练数据存储目录、测试数据存储目录、评估数据存储目录;
所述第三预设规范包括:将非结构化文档转换为纯文本文档;
所述第四预设规范包括:使用json格式存储标注数据,一份纯文本文档生成一份json文件;
所述第五预设规范包括以下中的一种或多种:各类数据数量分布情况、各类数据包含实体数量情况、标注质量、标注方式及时长。
进一步的,所述指令集还用于执行:所述“对标注后的数据进行切分成不同类型数据,所述不同类型数据包括以下中的一种或多种:训练数据、测试数据、评估数据,存储所述不同类型数据至对应的数据存储目录中”,还包括步骤:
根据第六预设规范来划分训练数据,所述第六预设规范包括:将文本原本、实体类型、关系类型、实体详情、实体关系详情分别存储至不同的json文件;
根据第七预设规范来划分测试数据,所述测试数据包括以下中的一种或多种:原始数据、标签类型数据、关系类型数据;
根据第八预设规范来划分评估数据,所述评估数据包括以下中的一种或多种:实体标注数据、实体关系数据。
进一步的,所述指令集还用于执行:所述“根据处理后的测试数据和处理后的评估数据对训练后的训练模型进行模型评估”,还包括步骤:
通过模型评估脚本对处理后的测试数据和处理后的评估数据进行计算得评估指标值,所述评估指标值包括以下中的一种或多种:准确率、召回率、F1值;
通过综合分析训练模型的不同评估维度判断所述训练模型是否可发布,所述不同评估维度包括以下中的一种或多种:评估指标值、运行环境、Badcase分析。
进一步的,所述指令集还用于执行:所述“则发布评估合格的模型”,还包括步骤:
对所述评估合格的模型的训练进行自动化构建,并将所述模型的运行环境进行打包镜像处理,根据模型发布规范发布评估合格的模型。
本发明的有益效果是:在源码管理平台上按第一预设规范创建项目工程,在数据存储平台按第二预设规范创建数据存储目录;采集数据,并按第三预设规范对所述数据进行预处理,并存储预处理后的数据至对应的数据存储目录中;根据第四预设规范对所述预处理后的数据进行标注,抽取评估数据,并根据第五预设规范对所述评估数据进行数据评估;对标注后的数据进行切分成不同类型数据,所述不同类型数据包括以下中的一种或多种:训练数据、测试数据、评估数据,存储所述不同类型数据至对应的数据存储目录中;对所述训练数据进行处理,输入处理后的训练数据至训练模型进行训练得训练后的模型;根据所述测试数据和评估数据对训练后的模型进行模型评估,若评估合格,则发布评估合格的模型。通过上述技术方案用户可搭建自己的模型训练平台,且在数据标注就绪的情况下,不需要编写代码,即可快速训练出较高质量的实体关系抽取模型,降低自然语言处理技术的应用门槛。
具体实施方式
为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
请参阅图1至图13,在本实施方式中,一种构建部署文本实体关系提取模型的方法可应用在一种存储设备上,所述存储设备包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备等。具体技术方案如下:
步骤S101:在源码管理平台上按第一预设规范创建项目工程,在数据存储平台按第二预设规范创建数据存储目录。
步骤S102:采集数据,并按第三预设规范对所述数据进行预处理,并存储预处理后的数据至对应的数据存储目录中。
步骤S103:根据第四预设规范对所述预处理后的数据进行标注,抽取评估数据,并根据第五预设规范对所述评估数据进行数据评估。
步骤S104:对标注后的数据进行切分成不同类型数据,所述不同类型数据包括以下中的一种或多种:训练数据、测试数据、评估数据,存储所述不同类型数据至对应的数据存储目录中。
步骤S105:选定训练模型,并将所述不同类型数据进行处理使得符合所述训练模型接收的数据格式,输入处理后的训练数据对所述训练模型进行训练。
步骤S106:根据处理后的测试数据和处理后的评估数据对训练后的训练模型进行模型评估,若评估合格,则发布评估合格的模型。
需要说明的是,上述文字中第一预设规范即对应的是附图中的规范1,同理,第二预设规范对应的是附图中的规范2,第三预设规范对应的是附图中的规范3,以此类推,第n预设规范对应的是附图中的规范n。
其中步骤S101对应的即附图2中的项目环境初始化,步骤S102对应附图2中的数据预处理,步骤S103和步骤S104对应附图2中的数据标注,步骤S105对应附图2中的模型训练,步骤S106则对应附图2中的模型评估和服务发布。
以下会对这些步骤与环节一一展开说明:
如图3至图5所示,在本实施方式中,源码管理平台可以为gitlab或svn,在本实施方式中,以gitlab为例,数据存储平台以ftp为例。二者结构如图3所示。
其中所述第一预设规范包括以下中的一种或多种:定义工程命名格式、定义过程数据、模型源码、辅助工具、相关文档存储目录。如图4所示。
所述第二预设规范包括以下中的一种或多种:定义数据存储目录命名格式,定义原始数据、预处理数据、标注数据、训练数据存储目录、测试数据存储目录、评估数据存储目录。如图5所示。
在步骤S101中涉及两个工具:
工具1:自动创建gitlab工程脚本,用户可任选python、java等语言编写自动创建gitlab工程脚本工具。
工具2:自动创建ftp目录脚本,用户可任选python、java等语言编写自动创建ftp目录脚本工具。
以下结合图6,对步骤S102展开说明:
由于在不同场景下数据收集方式各异,对数据的处理方式与收集到的数据形态强关联,但将非结构化文档转纯文本数据,在文本实体关系抽取的数据预处理过程中基本都会涉及。因此,该环节主要定义了一种规范和一种工具,并引用了前面定义规范。
所述第三预设规范包括:将非结构化文档转换为纯文本文档。具体可如下:将非结构化文档(如word、pdf、ceb文档等)转换为纯文本(txt)文档,为后续数据标注奠定基础。
工具3:纯文本转换工具,基于apache和ceb提供的外部库封装的Tika组件,实现文档纯文本转换。
以下结合图7和图8,对步骤S103和S104展开说明:
其中步骤S103和步骤S104中定义了五种数据规范和三个脚本工具,并引用了前面定义的部分规范。
所述第四预设规范包括:使用json格式存储标注数据,一份纯文本文档生成一份json文件。json数据包含数据标识、文件名称、文件内容、标签类别、标签、实体关系类别、实体关系等6个key,部分key对应的value为list或object。具体格式如下:
json结构
字段名称 |
schema |
value类型 |
备注 |
数据标识 |
id |
string |
|
文件名称 |
title |
string |
|
文件内容 |
content |
string |
|
标签类别 |
labelCategories |
list |
为所有待抽取的实体类型集 |
标签 |
labels |
list |
为待抽取实体的位置信息集 |
实体关系类别 |
connectionCategories |
list |
为待抽取实体关系类型集 |
实体关系 |
connections |
list |
为待抽取实体关系集 |
labelCategories对应待抽取实体类型集合,格式如下:
字段名称 |
schema |
value类型 |
备注 |
标签标识 |
id |
int |
|
标签值 |
text |
string |
|
labels对应待抽取实体信息集合,格式如下:
字段名称 |
schema |
value类型 |
备注 |
实体标识 |
id |
int |
|
实体类型 |
categoryId |
int |
|
起始位置 |
startIndex |
int |
从0开始 |
结束位置 |
endIndex |
int |
从0开始 |
connectionCategories对应待抽取实体关系类型集合,可为空值,格式如下:
字段名称 |
schema |
value类型 |
备注 |
实体关系标识 |
id |
int |
|
实体关系值 |
text |
string |
|
connections对应待抽取实体之间关系集合,可为空值,格式如下:
字段名称 |
schema |
value类型 |
备注 |
关系标识 |
id |
int |
|
关系类型 |
categoryId |
int |
|
起始实体 |
fromId |
int |
从0开始 |
结束实体 |
toId |
int |
从0开始 |
所述第五预设规范包括以下中的一种或多种:各类数据数量分布情况、各类数据包含实体数量情况、标注质量、标注方式及时长。具体可如下:标注数据评估规范,当完成数据标注后,必须进行抽样评估。根据评估结果在决定是否开展后续工作。可以从各类(原始标注数据、模型训练数据、模型评估数据、抽样评估数据)数据数量、各类数据实体分布情况、标注质量、标注方式、标注时长等维度进行分析。
其中步骤S104还包括步骤:
根据第六预设规范来划分训练数据,所述第六预设规范包括:将文本原本、实体类型、关系类型、实体详情、实体关系详情分别存储至不同的json文件。便于后期的扩充及灵活使用。
各类数据格式如下表:
表:原始文本数据(source)json结构
字段名称 |
schema |
value类型 |
备注 |
数据标识 |
id |
string |
|
文件名称 |
title |
string |
|
文件内容 |
content |
string |
|
表:标签类型(labelCategories)json结构
字段名称 |
schema |
value类型 |
备注 |
标签标识 |
id |
int |
|
标签名称 |
text |
string |
|
表:关系类型(connectionCategories)json结构
字段名称 |
schema |
value类型 |
备注 |
关系标识 |
id |
int |
|
关系名称 |
text |
string |
|
表:实体标注(labels)json结构
字段名称 |
schema |
value类型 |
备注 |
实体标识 |
id |
int |
|
原始数据标识 |
srcId |
string |
对应source内的id |
标签类型标识 |
categoryId |
int |
对应labelCategories内的id |
实体值 |
value |
string |
value=content[startIndex:endIndex+1] |
起始位置 |
startIndex |
int |
从0开始 |
结束位置 |
endIndex |
int |
从0开始 |
表:实体关系(connections)json结构
字段名称 |
schema |
value类型 |
备注 |
关系标识 |
id |
int |
|
原始数据标识 |
srcId |
string |
对应source内的id |
关系类型标识 |
categoryId |
int |
对应connectionCategories内的id |
起始实体 |
fromId |
int |
从0开始 |
结束实体 |
toId |
int |
从0开始 |
根据第七预设规范来划分测试数据,所述测试数据包括以下中的一种或多种:原始数据、标签类型数据、关系类型数据。每类数据格式为json,每类数据格式分别对应训练数据集中的原始数据、标签类型数据、关系类型数据。
根据第八预设规范来划分评估数据,所述评估数据包括以下中的一种或多种:实体标注数据、实体关系数据。每类数据格式为json,每类数据格式分别对应训练数据集中的实体标注数据、实体关系数据。
工具4:标注工具,用户可以基于自身情况决定是研发自己的文本实体关系标注工具,还是选择使用第三方标注工具。
工具5:标注数据与标准数据、excel互转工具,基于已定义的标注数据格式和模型标准输入输出数据格式,编写两种数据互转工具,加快数据在文本实体关系提取流水线框架内的快速流转。
工具6:数据切分工具,实现将标注数据切分成模型训练、评估、测试集等数据。
以下结合图9对步骤S105进行具体说明:
目前,市面上已有很多开源的文本实体关系提取框架,用户可以基于自身研发实力选择基于tensorflow或pytorch封装自己的文本实体关系提取框架,也可直接从网上下载开源的框架。当选定好框架后(即选定好训练模型后),需要将前面定义好的模型训练/评估/测试等数据格式,在框架内部进行转换。
以下结合图10至图13对步骤S106进行具体说明:
在步骤S106中定义了三种数据规范和两种脚本工具,并引用部分前面已定义的规范,主要开展文本实体关系提取模型预测和模型评估。
规范10:模型输出结果数据规范,定义了模型预测输出数据格式同模型评估数据格式,便于开展模型评估。
规范11:模型评估方案,定义了精确率(Precision,P)、召回率(Recall,R)、F1值(F1-measure,F1)来评估实体关系提取的效果,采用宏平均计算F1值即所有样本的实体关系一起计算P和R,一个实体关系为一个统计项,最终模型的性能以F1值为基准。
规范12:模型评估规范,当完成模型训练后,需使用测试数据和评估数据,通过模型评估脚本计算模型抽取实体的准确率、召回率及F1值等指标,并对各指标进行分析是否到达预期。根据评估结果再决定是否发布服务。可以从模型性能指标、运行环境、badcase等维度进行分析。模型评估维度如图11所示。
工具8:模型预测脚本,需结合选定的文本实体关系提取模型训练框架和已定义的规范的模型预测数据和模型输出数据格式,编写模型预测脚本。
工具9:模型评估脚本,需结合已定义的模型评估数据和模型输出数据格式,结合模型评估方案,编写模型评估脚本。
进一步的,所述“则发布评估合格的模型”,还包括步骤:对所述评估合格的模型的训练进行自动化构建,并将所述模型的运行环境进行打包镜像处理,根据模型发布规范发布评估合格的模型。该步骤中定义了两种规范和一种工具,依托于jenkins和dockerhub实现文本实体关系提取模型一键训练和基于docker镜像的服务部署。使用jenkins实现模型的在线训练并通过编写dockerfile文件,实现模型运行环境打包至docker镜像,降低模型运行环境搭建难度,提升模型部署速度。
规范13:docker打包规范,定义了Dockerfile内容格式,如图14所示。
规范14:模型发布规范,定义模型发布时所需发布的具体成果,包含模型部署包、SDK、相关的指导文档等。
工具10:docker镜像打包工具,通过编写sh文件,实现模型docker镜像包的一键制作。
在源码管理平台上按第一预设规范创建项目工程,在数据存储平台按第二预设规范创建数据存储目录;采集数据,并按第三预设规范对所述数据进行预处理,并存储预处理后的数据至对应的数据存储目录中;根据第四预设规范对所述预处理后的数据进行标注,抽取评估数据,并根据第五预设规范对所述评估数据进行数据评估;对标注后的数据进行切分成不同类型数据,所述不同类型数据包括以下中的一种或多种:训练数据、测试数据、评估数据,存储所述不同类型数据至对应的数据存储目录中;对所述训练数据进行处理,输入处理后的训练数据至训练模型进行训练得训练后的模型;根据所述测试数据和评估数据对训练后的模型进行模型评估,若评估合格,则发布评估合格的模型。通过上述技术方案用户可搭建自己的模型训练平台,且在数据标注就绪的情况下,不需要编写代码,即可快速训练出较高质量的实体关系抽取模型,降低自然语言处理技术的应用门槛。
进一步的,本技术方案中,在数据预处理、标注、算法编写、网络调参、质量评估等环节预留调优扩展点,从而可进一步持续优化baseline模型构建出满足业务要求的实体关系抽取模型。
进一步的,在本技术方案中,基于docker方式,实现模型训练和部署环境的搭建,简化了模型依赖包(如tensorflow、pytorch)的安装,从而能够在内网环境快速搭建模型运行环境。
请参阅图14,在本实施方式中,一种存储设备1400的具体实施方式如下:
一种存储设备1400,其中存储有指令集,所述指令集用于执行:在源码管理平台上按第一预设规范创建项目工程,在数据存储平台按第二预设规范创建数据存储目录;采集数据,并按第三预设规范对所述数据进行预处理,并存储预处理后的数据至对应的数据存储目录中;根据第四预设规范对所述预处理后的数据进行标注,抽取评估数据,并根据第五预设规范对所述评估数据进行数据评估;对标注后的数据进行切分成不同类型数据,所述不同类型数据包括以下中的一种或多种:训练数据、测试数据、评估数据,存储所述不同类型数据至对应的数据存储目录中;选定训练模型,并将所述不同类型数据进行处理使得符合所述训练模型接收的数据格式,输入处理后的训练数据对所述训练模型进行训练;根据处理后的测试数据和处理后的评估数据对训练后的训练模型进行模型评估,若评估合格,则发布评估合格的模型。
进一步的,所述第一预设规范包括以下中的一种或多种:定义工程命名格式、定义过程数据、模型源码、辅助工具、相关文档存储目录;所述第二预设规范包括以下中的一种或多种:定义数据存储目录命名格式,定义原始数据、预处理数据、标注数据、训练数据存储目录、测试数据存储目录、评估数据存储目录;所述第三预设规范包括:将非结构化文档转换为纯文本文档;所述第四预设规范包括:使用json格式存储标注数据,一份纯文本文档生成一份json文件;所述第五预设规范包括以下中的一种或多种:各类数据数量分布情况、各类数据包含实体数量情况、标注质量、标注方式及时长。
进一步的,所述指令集还用于执行:所述“对标注后的数据进行切分成不同类型数据,所述不同类型数据包括以下中的一种或多种:训练数据、测试数据、评估数据,存储所述不同类型数据至对应的数据存储目录中”,还包括步骤:根据第六预设规范来划分训练数据,所述第六预设规范包括:将文本原本、实体类型、关系类型、实体详情、实体关系详情分别存储至不同的json文件;根据第七预设规范来划分测试数据,所述测试数据包括以下中的一种或多种:原始数据、标签类型数据、关系类型数据;根据第八预设规范来划分评估数据,所述评估数据包括以下中的一种或多种:实体标注数据、实体关系数据。
进一步的,所述指令集还用于执行:所述“根据处理后的测试数据和处理后的评估数据对训练后的训练模型进行模型评估”,还包括步骤:通过模型评估脚本对处理后的测试数据和处理后的评估数据进行计算得评估指标值,所述评估指标值包括以下中的一种或多种:准确率、召回率、F1值;通过综合分析训练模型的不同评估维度判断所述训练模型是否可发布,所述不同评估维度包括以下中的一种或多种:评估指标值、运行环境、Badcase分析。
进一步的,所述指令集还用于执行:所述“则发布评估合格的模型”,还包括步骤:对所述评估合格的模型的训练进行自动化构建,并将所述模型的运行环境进行打包镜像处理,根据模型发布规范发布评估合格的模型。
以上各步骤的具体实现与上述一种构建部署文本实体关系提取模型的方法相同,在此不做重复说明。
通过存储设备1400上的指令集执行:在源码管理平台上按第一预设规范创建项目工程,在数据存储平台按第二预设规范创建数据存储目录;采集数据,并按第三预设规范对所述数据进行预处理,并存储预处理后的数据至对应的数据存储目录中;根据第四预设规范对所述预处理后的数据进行标注,抽取评估数据,并根据第五预设规范对所述评估数据进行数据评估;对标注后的数据进行切分成不同类型数据,所述不同类型数据包括以下中的一种或多种:训练数据、测试数据、评估数据,存储所述不同类型数据至对应的数据存储目录中;对所述训练数据进行处理,输入处理后的训练数据至训练模型进行训练得训练后的模型;根据所述测试数据和评估数据对训练后的模型进行模型评估,若评估合格,则发布评估合格的模型。通过上述技术方案用户可搭建自己的模型训练平台,且在数据标注就绪的情况下,不需要编写代码,即可快速训练出较高质量的实体关系抽取模型,降低自然语言处理技术的应用门槛。
需要说明的是,尽管在本文中已经对上述各实施例进行了描述,但并非因此限制本发明的专利保护范围。因此,基于本发明的创新理念,对本文所述实施例进行的变更和修改,或利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接地将以上技术方案运用在其他相关的技术领域,均包括在本发明的专利保护范围之内。