首页 / 专利库 / 软件 / 用户友好界面 / 一种面向中文的预训练方法及系统

一种面向中文的预训练方法及系统

阅读:967发布:2020-05-08

专利汇可以提供一种面向中文的预训练方法及系统专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种面向中文的预训练方法及系统,包括:模型参数配置模 块 、预训练模型生成模块和服务封装模块。模型参数配置模块:主要针对用户需要根据自身需求定制中文预训练模型的情况,使其能够以友好的界面方式配置预训练模型的参数;预训练模型生成模块:根据用户提交的模型参数配置和预训练语料数据,训练一个中文预训练模型,并以模型文件的方式保存下来;服务封装模块:将模型文件封装成一个中文特征 抽取 器服务,并给用户提供相应的Docker镜像方便服务的部署。本发明专 门 针对大规模的无监督中文语料,提出了一种面向中文的预训练方法及系统,有效地提高了预训练方法在中文任务上的表现。,下面是一种面向中文的预训练方法及系统专利的具体信息内容。

1.一种面向中文的预训练系统,其特征在于:所述预训练系统包括模型参数配置模、预训练模型生成模块和服务封装模块;其中:
模型参数配置模块,用于显示用户界面,以供用户自定义中文预训练模型的各个参数,配置的参数包括是否在模型中引入模型调优方法、更改预训练模型的超参数、以及指定三种不同级别的无监督预训练语料,所述的无监督预训练语料包括大规模通用语料、高质量通用语料和特定领域语料;
预训练模型生成模块,用于根据用户提供的模型配置文件训练中文预训练模型,所述的预训练模型为基于分级的预训练模型,同时使用了多种针对中文文本设计的模型调优方法,最终模型的网络结构和参数将以模型文件的形式保存下来;
服务封装模块,用于在预训练模型生成模块训练生成的预训练模型文件的基础上,部署一个中文特征抽取服务;对中文特征抽取服务进行封装,并给用户提供相应的Docker镜像,用户通过在本地或者服务器端运行该镜像,就可以快速部署一个中文特征抽取器的服务,从而可以抽取中文文本的上下文相关的语义表示,并将其应用于下游的中文任务中。
2.一种面向中文的预训练方法,其特征在于包括步骤如下:模型参数配置、预训练模型生成和服务封装;其中:
步骤S1: 模型参数配置:显示用户界面,以供用户自定义中文预训练模型的各个参数,配置的参数包括是否在模型中引入模型调优方法、更改预训练模型的超参数、以及指定三种不同级别的无监督预训练语料,所述的无监督预训练语料包括大规模通用语料、高质量通用语料和特定领域语料;
步骤S2: 预训练模型生成:根据用户提供的模型配置文件训练中文预训练模型,所述的预训练模型为基于分级的预训练模型,同时使用了多种针对中文文本设计的模型调优方法,最终模型的网络结构和参数将以模型文件的形式保存下来;
步骤S3: 服务封装:在步骤S2训练生成的预训练模型文件的基础上,部署一个中文特征抽取服务;对中文特征抽取服务进行封装,并给用户提供相应的Docker镜像,用户通过在本地或者服务器端运行该镜像,就可以快速部署一个中文特征抽取器的服务,从而可以抽取中文文本的上下文相关的语义表示,并将其应用于下游的中文任务中。
3.根据权利要求2所述的面向中文的预训练方法,其特征在于:步骤S2所述的预训练模型生成,具体过程如下:
S2.1: 配置文件加载:根据用户自定义的模型配置文件,决定是否在预训练模型中引入调优方法,从而加载预训练模型的网络结构和训练过程的超参数,以及不同级别的无监督训练语料;
S2.2: 文本预处理:对用户自定义的无监督语料进行清洗和文本切分的预处理操作,将处理后的文本序列作为预训练模型的输入;
S2.3: 模型训练:针对分层模型结构,使用不同级别的无监督语料,利用参数冻结的手段,使用多阶段的预训练方法,逐步训练模型的部分网络结构;
S2.4: 模型保存:在本地机器或者远程服务器运行模型的预训练过程;当模型迭代次数超过一定轮次,或者多次迭代后语言模型的损失函数没有下降时,停止预训练过程;将模型的网络结构和参数以模型文件的形式保存下来。
4.根据权利要求2所述的面向中文的预训练方法,其特征在于:步骤S2所述的基于分级的预训练模型,是通过设计分层的模型结构和多阶段的预训练方法,使预训练模型在兼顾语料集的质量和规模的同时,也能学习到更适用于特定领域的语义表示,具体如下:
所述的分层的模型结构包括大规模通用语义层、高质量通用语义层和特定领域语义层;其中,大规模通用语义层使用规模大但质量略低的通用领域语料进行训练,而高质量通用语义层则使用规模较小但相对质量高的通用领域语料训练网络结构,从而学习通用领域下文本的语义信息;特定领域语义层一般使用特定领域的语料来训练该层的网络结构,将模型之前学习到的通用语义表示进行调整,使其更适用于下游任务的特定领域;
所述的多阶段的预训练方法包括:第一阶段:只训练分层模型的第一层,即使用大规模的通用语料训练大规模通用语义层;第二阶段:使用高质量的通用语料训练模型的前两层,即包括大规模通用语义层和高质量通用语义层,此时大规模通用语义层的参数随训练过程中损失函数的优化而不断改变;第三阶段:使用特定领域语料在整个模型上训练语言模型任务,在这个阶段,利用冻结参数的手段,固定前两个通用语义层的参数保持不变,以防止破坏之前已训练好的通用语义表示。
5.根据权利要求2所述的面向中文的预训练方法,其特征在于:步骤S2所述的针对中文文本设计的模型调优方法,包括改进输入粒度、引入字形特征和引入联合学习,具体如下:
所述的改进输入粒度:基于字节对编码算法对输入文本进行预处理;具体为:在每轮迭代中,首先基于当前字典枚举所有的字节对,找到出现最频繁的一组字节对,然后将该字节对用一个未出现过的新字节来表征,并将此新字节添加到字典中,继续迭代,直到迭代次数达到固定的轮次;
所述的引入字形特征:在预训练模型的输入层使用卷积神经网络的结构,将中文的字形信息以特征的方式引入到模型中;对于任意输入文本,首先将其拆成偏旁的序列;预训练模型的输入层为每个偏旁初始化一个偏旁向量,则每个文本可对应一个二维向量矩阵;使用输入层的卷积神经网络结构对该二维向量矩阵进行卷积和池化操作,得到字形特征传给后续网络;
所述的引入联合学习:预训练模型的输出层引入联合学习,结合习语词典等外部知识,在预训练阶段联合学习语言模型任务和习语词汇的命名实体识别任务,模型最终的损失函数由这两个任务的损失函数相加得到。

说明书全文

一种面向中文的预训练方法及系统

技术领域

[0001] 本发明涉及一种面向中文的预训练方法及系统,属于自然语言处理技术领域。

背景技术

[0002] 通常来说,大多数基于深度学习的自然语言处理任务可以分为以下三个模处理:数据处理、文本表征和特定任务模型。其中,数据处理模块和特定任务模型模块需要根据具体任务的不同做相应设计,而文本表征模块则可以作为一个相对通用的模块来使用。因此,预训练一个通用的文本表征模块来复用文本特征,这对于文本的迁移学习具有重要意义。近年来,随着深度学习方法的快速发展,自然语言处理领域的机器翻译、机器阅读理解、命名实体识别等多个方面都取得了重要突破。借助于深度学习技术,面向自然语言处理领域的预训练技术也取得了长足的进步。
[0003] 在自然语言处理领域的背景下,预训练技术是指通过使用大规模无监督的文本语料来训练深层网络结构,从而得到一组模型参数,这种深层网络结构通常被称为“预训练模型”;将预训练好的模型参数应用到后续的其他特定任务上,这些特定任务通常被称为“下游任务”。
[0004] 目前,面向中文的预训练语言模型主要面临着以下问题:(1) 中英文语言特性的较大差异导致模型效果往往并不理想。大多数预训练模型都是面向英文设计的,在模型的网络结构、训练方法和下游任务应用方式等方面,都或多或少考虑了英文的语言特性,由于中英文在语言特性方面存在着较大差异,如果将其直接迁移到中文领域,其效果往往并不理想。
[0005] (2) 可获取的中文无监督语料存在明显的分级现象,在数据规模、质量、领域方面均存在较大差异,难以充分利用。通常来说,相对质量差的语料规模较大,高质量的语料大多规模较小,不足以支持庞大的预训练模型的训练,如果将这些质量上存在较大差异的语料同等看待,混合起来训练模型,相对质量差的语料可能会冲淡高质量语料的效果。除了规模和质量方面的差异外,不同语料之间还存在领域不同的问题,不同领域的语料对于预训练模型的训练和迁移过程的影响大不相同,因此需要区别对待。

发明内容

[0006] 本发明的目的在于,专针对大规模的无监督中文语料,提出了一种面向中文的预训练方法及系统,充分考虑中文在语言特性方面的特点,有针对性地提出了一系列面向中文的预训练模型调优方法,并提出基于分级语料的预训练模型,以充分利用不同级别的无监督语料,从而有效地提高了预训练方法在中文任务上的表现。
[0007] 本发明技术解决方案:一种面向中文的预训练系统,包括:模型参数配置模块、预训练模型生成模块和服务封装模块;其中:模型参数配置模块,用于显示用户界面,以供用户自定义中文预训练模型的各个参数,配置的参数包括是否在模型中引入模型调优方法、更改预训练模型的超参数、以及指定三种不同级别的无监督预训练语料,所述的无监督预训练语料包括大规模通用语料、高质量通用语料和特定领域语料;
预训练模型生成模块,用于根据用户提供的模型配置文件训练中文预训练模型,所述的预训练模型为基于分级的预训练模型,同时使用了多种针对中文文本设计的模型调优方法,最终模型的网络结构和参数将以模型文件的形式保存下来;
服务封装模块,用于在预训练模型生成模块训练生成的预训练模型文件的基础上,部署一个中文特征抽取服务;对中文特征抽取服务进行封装,并给用户提供相应的Docker镜像,用户通过在本地或者服务器端运行该镜像,就可以快速部署一个中文特征抽取器的服务,从而可以抽取中文文本的上下文相关的语义表示,并将其应用于下游的中文任务中。
[0008] 一种面向中文的预训练方法,步骤如下:步骤S1: 模型参数配置:显示用户界面,以供用户自定义中文预训练模型的各个参数,配置的参数包括是否在模型中引入模型调优方法、更改预训练模型的超参数、以及指定三种不同级别的无监督预训练语料,所述的无监督预训练语料包括大规模通用语料、高质量通用语料和特定领域语料;
步骤S2: 预训练模型生成:根据用户提供的模型配置文件训练中文预训练模型,所述的预训练模型为基于分级的预训练模型,同时使用了多种针对中文文本设计的模型调优方法,最终模型的网络结构和参数将以模型文件的形式保存下来;
步骤S3: 服务封装:基于TF-Serving,在步骤S2训练生成的预训练模型文件的基础上,部署一个中文特征抽取服务;基于Docker对中文特征抽取服务进行封装,并给用户提供相应的Docker镜像,用户通过在本地或者服务器端运行该镜像,就可以快速部署一个中文特征抽取器的服务,从而可以很方便地抽取中文文本的上下文相关的语义表示,并将其应用于下游的中文任务中。
[0009] 其中,步骤S2所述的预训练模型生成,具体过程如下:S2.1: 配置文件加载:根据用户自定义的模型配置文件,决定是否在预训练模型中引入调优方法,从而加载预训练模型的网络结构和训练过程的超参数,以及不同级别的无监督训练语料;
S2.2: 文本预处理:对用户自定义的无监督语料进行清洗和文本切分等预处理操作,将处理后的文本序列作为预训练模型的输入;
S2.3: 模型训练:针对分层模型结构,使用不同级别的无监督语料,利用参数冻结的手段,使用多阶段的预训练方法,逐步训练模型的部分网络结构;
S2.4: 模型保存:在本地机器或者远程服务器运行模型的预训练过程;当模型迭代次数超过一定轮次,或者多次迭代后语言模型的损失函数没有下降时,停止预训练过程;将模型的网络结构和参数以模型文件的形式保存下来。
[0010] 其中,步骤S2所述的基于分级的预训练模型,是通过设计分层的模型结构和多阶段的预训练方法,使预训练模型在兼顾语料集的质量和规模的同时,也能学习到更适用于特定领域的语义表示,具体如下:所述的分层的模型结构:主要分为三层,包括大规模通用语义层、高质量通用语义层和特定领域语义层;其中,大规模通用语义层使用规模大但质量略低的通用领域语料进行训练,而高质量通用语义层则使用规模较小但相对质量高的通用领域语料训练网络结构,从而学习通用领域下文本的语义信息;特定领域语义层一般使用特定领域的语料来训练该层的网络结构,将模型之前学习到的通用语义表示进行调整,使其更适用于下游任务的特定领域;
所述的多阶段的预训练方法包括:第一阶段:只训练分层模型的第一层,即使用大规模的通用语料训练大规模通用语义层;第二阶段:使用高质量的通用语料训练模型的前两层,即包括大规模通用语义层和高质量通用语义层,此时大规模通用语义层的参数随训练过程中损失函数的优化而不断改变;第三阶段:使用特定领域语料在整个模型上训练语言模型任务,在这个阶段,利用冻结参数的手段,固定前两个通用语义层的参数保持不变,以防止破坏之前已训练好的通用语义表示。
[0011] 其中,步骤S2所述的针对中文文本设计的模型调优方法,包括改进输入粒度、引入字形特征和引入联合学习,具体如下:所述的改进输入粒度:基于字节对编码算法对输入文本进行预处理;具体为:在每轮迭代中,首先基于当前字典枚举所有的字节对,找到出现最频繁的一组字节对,然后将该字节对用一个未出现过的新字节来表征,并将此新字节添加到字典中,继续迭代,直到迭代次数达到固定的轮次;
所述的引入字形特征:在预训练模型的输入层使用卷积神经网络的结构,将中文的字形信息以特征的方式引入到模型中;对于任意输入文本,首先将其拆成偏旁的序列;预训练模型的输入层为每个偏旁初始化一个偏旁向量,则每个文本可对应一个二维向量矩阵;使用输入层的卷积神经网络结构对该二维向量矩阵进行卷积和池化操作,得到字形特征传给后续网络;
所述的引入联合学习:预训练模型的输出层引入联合学习,结合习语词典等外部知识,在预训练阶段联合学习语言模型任务和习语词汇的命名实体识别任务,模型最终的损失函数由这两个任务的损失函数相加得到。
[0012] 本发明与现有技术相比的优点在于:(1) 本发明从语言特性的度出发,详细对比了中英文在语言特性方面的差异,充分考虑中文在输入粒度、字形信息以及习语词汇三个语言特性方面的特点,有针对性地提出了一系列面向中文的模型调优方法,包括改进输入粒度、引入字形特征、引入联合学习,从而使调优后的模型能够在中文任务上取得更好的表现。
[0013] (2) 针对中文无监督语料存在的分级现象,本发明提出了基于分级语料的预训练模型,通过设计分层的网络结构和多阶段的预训练方法,使用不同级别的无监督语料逐步训练对应层的网络结构,从而使模型在兼顾语料集质量和规模的同时,也能学习到更适用于特定领域的语义表示。附图说明
[0014] 图1为本发明方法整体流程图;图2为本发明文本清洗流程;
图3为本发明设计的分层的模型结构;
图4为本发明设计的面向中文的预训练模型;
图5为本发明设计的引入字形特征的结构;
图6为本发明设计的引入联合学习的结构。

具体实施方式

[0015] 下面结合附图,对本发明的技术方案做进一步的说明。
[0016] 本发明是一种面向中文的预训练系统和方法,面向中文的预训练系统用以实现面向中文的预训练系统的方法,面向中文的预训练系统包括模型参数配置模块、预训练模型生成模块和服务封装模块;其中:模型参数配置模块,用于显示用户界面,以供用户自定义中文预训练模型的各个参数,配置的参数包括是否在模型中引入模型调优方法、更改预训练模型的超参数、以及指定三种不同级别的无监督预训练语料,所述的无监督预训练语料包括大规模通用语料、高质量通用语料和特定领域语料;
预训练模型生成模块,用于根据用户提供的模型配置文件训练中文预训练模型,所述的预训练模型为基于分级的预训练模型,同时使用了多种针对中文文本设计的模型调优方法,最终模型的网络结构和参数将以模型文件的形式保存下来;
服务封装模块,用于在预训练模型生成模块训练生成的预训练模型文件的基础上,部署一个中文特征抽取服务;对中文特征抽取服务进行封装,并给用户提供相应的Docker镜像,用户通过在本地或者服务器端运行该镜像,就可以快速部署一个中文特征抽取器的服务,从而可以抽取中文文本的上下文相关的语义表示,并将其应用于下游的中文任务中。
[0017] 以下将对实现的面向中文的预训练系统的方法进行具体说明。如图1所示,具体步骤如下:S1.模型参数配置:
模型参数配置模块为用户提供一种友好的界面方式,使其可以自定义中文预训练模型的各个参数。具体的,如表1(预训练模型主要配置参数)所示,可以决定是否在模型中引入字形特征和联合学习,以及更改预训练模型的超参数,例如词向量维度、隐藏层维度等。此外,如果用户希望使用更多规模更大、质量更高或者其他领域的无监督语料来预训练模型,可以通过更改相应的语料文件参数来达到这个目的。
[0018] 表1S2.预训练模型生成:
该模块主要由配置文件加载、文本预处理、模型训练和模型保存四部分构成,下面将逐一进行介绍。
[0019] S2.1配置文件加载:加载用户自定义的模型配置文件,由于用户可以只设置部分的训练参数,因此,本发明为配置文件中的每个参数都设置了一个默认值,当用户没有设置某个参数时,就使用预设的默认值。
[0020] S2.2文本预处理:对所有的无监督语料进行清洗和文本切分等预处理操作,具体来说,使用用户配置的分词方法对文本进行切分,文本清洗流程如图2所示,对中文文本进行繁体转简体的操作,对英文文本全部转换成小写,并使用nltk工具包对文本中的英文单词进行词形还原,将文本中的数字归一化为“#number”,借助正则表达式等方式去除无用文本,例如html代码、css标签等。
[0021] S2.3模型训练:使用一种基于分级的预训练模型和多种针对中文文本设计的模型调优方法,训练模型。
[0022] S2.3.1基于分级的预训练模型:基于分级语料的预训练模型通过分层的模型结构和多阶段的预训练方法,使模型可以充分利用不同级别的中文无监督语料。
[0023] 如图3所示,分层的模型结构主要分为三层:大规模通用语义层、高质量通用语义层和特定领域语义层,每个语义层可以是一个任意的多层网络结构,例如BiLSTM、BiGRU和全连接层(Fully Connected layer,FC)等。具体来说,本发明的大规模通用语义层和高质量通用语义层均使用两层的双向LSTM网络结构,特定领域语义层使用了一层全连接层的网络结构。
[0024] 多阶段的预训练方法是指在预训练阶段,利用参数冻结的手段,使用不同级别的无监督语料逐步训练每一层网络结构的参数。具体来说,本发明的多阶段的预训练方法主要分为以下三个训练阶段:第一阶段只训练分层模型的第一层,使用大规模的通用语料训练大规模通用语义层;第二阶段使用高质量的通用语料训练模型的前两层,包括大规模通用语义层和高质量通用语义层,此时大规模通用语义层的参数随训练过程不断改变;第三阶段使用特定领域语料在整个模型上训练语言模型任务,在这个阶段,利用冻结参数的手段,固定前两个通用语义层的参数保持不变。
[0025] S2.3.2面向中文的模型调优方法:通过分析中英文在语言特性方面的差异,本发明提出了以下三个面向中文的模型调优方法:改进输入粒度、引入字形特征、引入联合学习。
[0026] 改进输入粒度,如图4所示,是在文本预处理阶段,基于字节对编码算法对中文文本进行切分,字节对编码算法的基本思想是,在每轮迭代中,首先基于当前字典枚举所有的字节对,找到出现最频繁的一组字节对,例如input_layer(输出层)的token_emb和glyph_emb,然后将该字节对用一个未出现过的新字节来表征,例如input_layer的E1、E2...En,并将此新字节添加到字典中,继续迭代,如hidden_layer(隐层)的LSTM(循环神经网络),直到迭代次数达到固定的轮次,得到结果,如output_layer(输出层)的context。
[0027] 引入字形特征,是通过改进模型输入层的网络结构,将中文的字形信息以特征的方式引入到模型中,具体来说,如图5所示,对于任意输入文本,如“岑岭”,首先将其拆成偏旁的序列,即“山”、“今”、“山”、“令”;模型的输入层为每个偏旁初始化一个偏旁向量,则每个文本可对应一个二维向量矩阵,如Matrix_part层所示;使用输入层的卷积神经网络结构CNNs对向量矩阵进行卷积和池化操作,得到字形特征,如glyph_emb层所示,再传给后续网络。
[0028] 引入联合学习,如图6所示,是通过改进模型输出层的网络结构和损失函数,对于输入context,在预训练阶段联合学习命名实体识别任务NER_CRF和语言模型任务LM(图中未单独示出),使模型能够更好地学习词汇完整的语义表示,两者的损失函数可分别记为LM_Softmax和NER_Softmax,而模型最终的损失函数loss由上述两个训练任务的损失函数加和求得。
[0029] S2.4模型保存:在服务器上运行模型的预训练过程;当模型迭代次数超过预设轮次,或者多次迭代后语言模型的损失函数没有下降时,停止预训练过程;将模型的网络结构和参数以模型文件的形式保存下来。
[0030] S3.服务封装:本发明基于TF-Serving,在中文预训练模型文件的基础上,部署了一个中文特征抽取服务,定义该服务的API如表2所示。为了使用户可以一键式部署该服务,本发明基于Docker对其进行了封装,主要分为两个步骤:搭建服务环境,包括Python3环境、Tensorflow1.14环境,以及安装TF-Serving;配置Docker镜像内外端口的映射关系。经过对中文预训练模型进行服务部署和服务封装,用户就得到了基于此模型的特征抽取服务的Docker镜像,后续只需在本地或者服务器端简单地运行该Docker镜像就可以随时开启该服务。
[0031] 表2。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈