基于预训练模型的句子复述生成系统的制作方法

文档序号:32165211发布日期:2022-11-12 04:12阅读:261来源:国知局
基于预训练模型的句子复述生成系统的制作方法

1.本发明属于自然语言处理的技术领域,具体涉及一种基于预训练模型的句子复述生成系统。


背景技术:

2.复述生成任务是要生成与原句语义相同但表达不同的句子。生成的句子称为原句的复述。复述生成可以在问答、翻译和自然语言生成等任务中发挥重要作用。在问答系统中,对于用户输入的问题,可以用复述生成对问题进行扩充,使得问答库更容易匹配到相似的问题。在训练翻译模型时,复述生成可以扩充训练数据和标签数据。在自然语言生成任务中,对生成的句子进行复述生成来产生丰富多样的表达。
3.目前复述生成的方法主要有基于规则、基于统计和基于神经网络的方法。
4.基于规则的生成方法根据规则对原句子进行改写,在保持语义与原句相同的情况下改变句子的措辞和结构来生成复述。例如在原句的适当位置增加或插入适当的语气助词、对句子做语序的更换、对句子中的词做同义词替换等方法。对句子中的词做同义词替换可以生成丰富的复述,但是对于多义词而言,它的语义通常跟上下文有关,它的同义词有些不适合原语的语境。如果盲目的拿同义词替换原词,会导致生成的复述句子出现语义变化,语法不通的问题。
5.基于统计的方法主要是基于统计机器翻译的复述生成方法。复述生成方法可以认为是源语言和目标语言相同的翻译任务。利用统计机器翻译模型,将原句翻译成语义相同表达不同的句子生成复述。随着深度学习的发展,基于神经网络训练的翻译模型表现超过了基于统计的机器翻译模型,利用神经网络翻译模型来生成复述是更好的选择。
6.深度学习的发展还为复述生成提供了新的思路和方法,可以微调预训练的语言模型来生成复述。在大规模的语料上预训练过的语言模型,对文本通用特征的提取能力很强。基于这样的模型在复述生成数据集上微调可以取得很好的效果。随着深度学习的发展,开源了越来越多的预训练模型。这些模型特征提取能力强大,对下游任务的提升有很大帮助,是值得利用的宝贵资源。
7.自然语言处理随着人工智能和深度学习的发展受到了越来越多的关注。复述生成作为自然语言处理的一个研究方向也有越来越多的学者进行研究。目前而言,中文复述生成的研究还比较少,不如英文复述生成的研究。英文复述生成的研究有较长的技术积累和更广的研究群体。目前已有一些开源的框架和模型实现英文复述生成,而且能生成优质的英文复述,这些也是值得利用的资源。
8.目前复述生成任务缺乏较好的自动评价方法。最有说服力的方法是人工评价,但是这种方法费时费力,成本很高。如何自动评估生成的复述质量,特别是复述是否通顺流利,复述的语义是否与原句相同是一个值得深入研究的问题。


技术实现要素:

9.针对现有技术不足,本发明提出了基于预训练模型的句子复述生成系统。
10.为实现上述目的,本发明的技术方案为:一种基于预训练模型的句子复述生成系统,包括依次连接的复述生成模块、流利度过滤模块和语义过滤模块;所述的复述生成模块用于生成复述;所述的流利度过滤模块用于计算复述的流利度,过滤得到流利度不低于阈值的复述;所述的语义过滤模块用于计算复述与原句的语义相似度,过滤得到语义相似度不低于阈值的复述。
11.进一步的,所述复述生成模块包括翻译生成模块、模型生成模块和同义词替换生成模块;所述的翻译生成模块通过直译生成和回译生成两种方式生成复述,所述的模型生成模块通过语言模型生成复述,所述的同义词替换生成模块通过替换原句中的同义词生成复述。
12.进一步的,所述的直译生成方式通过将输入句子翻译为文言文、粤语和繁体中文生成复述,所述的回译生成方式通过将输入的中文句子翻译为英语句子,再将英语句子翻译为中文生成复述;所述的回译生成方法还利用多语言翻译模型,将输入句子翻译为德语句子,再将德语句子翻译为中文生成复述。
13.进一步的,所述的模型生成模块包括直接训练中文复述生成模型来生成复述和利用英文复述生成模型间接生成中文复述两种方式,所述利用英文复述生成模型间接生成中文复述的方式是将中文句子翻译成英文,输入英文复述生成模型生成英文复述,再将英文复述翻译成中文生成中文复述。
14.进一步的,同义词替换生成模块包括分词、命名实体识别、可替换词过滤、同义词查找、同义词过滤、同义词替换模块所述的同义词替换生成模块包括分词子模块、命名实体识别子模块、可替换词过滤子模块、同义词查找子模块、同义词过滤子模块、同义词替换子模块。
15.进一步的,同义词替换生成模块中可替换词过滤模块将作品名(nw)、其他专名(nz)、标点符号(w)、人名(per)、地名(loc)、机构名(org)和时间(time)这些实体类型组成的集合作为不可替换实体类型集合,类型属于该集合的实体将不做同义词替换。
16.进一步的,同义词替换生成模块中同义词过滤模块引入在大规模语料上预训练的掩码语言模型(masked language model)来过滤同义词,具体包含以下步骤:s1:将句子中的原词替换为与同义词长度相同的掩码,得到掩码句子;s2:将掩码句子输入预训练掩码语言模型,计算掩码位置对应的输出生成同义词对应字的概率,用同义词各字生成概率的几何平均数作为置信度;s3:设置置信度阈值;s4:滤除置信度小于阈值的同义词,得到适用于当前语境的同义词。
17.进一步的,流利度过滤模块利用预训练的掩码语言模型计算流利度,设置流利度阈值,过滤得到流利的复述。流利度计算方法为逐个掩盖句子中的每个字,计算模型输出的掩码位置生成原字的概率。基于得到的生成概率计算困惑度,再用指数函数将1减去困惑度得到的值映射到区间[0,1]。流利度计算方法用公式表示为:
其中flu为流利度,n为句子长度,i为第i个位置,p为生成概率,s为句子,为句子的第i个字。
[0018]
进一步的,语义过滤模块用sentence bert模型对句子进行编码得到句向量,通过句向量间的余弦值来判断语义是否相同。设置余弦值阈值,当且仅当句向量间的余弦值大于等于阈值时,认为语义相同。
[0019]
语义过滤模块训练独立的、与句子生成无关的sentence bert模型来判断语义。构造包含强负样本和弱负样本的数据集训练模型,并将sentence bert模型训练时三元目标函数改进为如下形式:其中为改进的损失值,表示句子a的句向量,表示句子p的句向量,表示句子n的句向量;句子p是a的正例,即p与a的语义相同。句子n是a的负例,即n与a的语义不同;表示距离度量,表示设定的边际值。
[0020]
本发明的有益效果为:(1)充分利用开源的预训练模型资源,利用翻译模型进行直接翻译生成复述和回译生成复述,利用多语言翻译模型提高生成复述的效率和多样性,利用预训练的语言模型进行微调训练中文复述生成模型,将英语复述生成模型应用到中文复述生成中。
[0021]
(2)进行同义词替换时,将实体类型组成的集合作为不可替换实体类型集合,类型属于该集合的实体将不做同义词替换,避免了专有名词和关键信息被替换导致句子语义改变。
[0022]
(3)引入在大规模语料上预训练的掩码语言模型(masked language model)来过滤同义词,得到适用于当前语境的同义词,避免不符合语境的同义词使句子不通顺或改变句子语义。
[0023]
(4)利用预训练的掩码语言模型计算流利度,设置流利度阈值,过滤得到流利度不低于阈值的复述,从而滤除不通顺的句子,得到流利通顺的复述句子。
[0024]
(5)训练独立的、与句子生成无关的sentence bert模型来判断语义,从而避免生成过程影响评估结果,使用多项措施确保生成高质量复述,包括收集不可替换实体组成集合、定义同义词置信度和流利度计算方法、改进sentence bert损失函数。
附图说明
[0025]
图1为本发明所述的系统结构图;图2为复述生成模块结构图;图3为翻译生成模块结构图;图4为直译生成模块结构图;图5为回译生成模块结构图;图6为模型生成模块结构图;图7为同义词替换生成模块结构图;图8为同义词过滤模块结构图。
具体实施方式
[0026]
下面结合附图,对本发明提出的基于预训练模型的句子复述生成系统进行详细说明。
[0027]
本发明所述的一种基于预训练模型的句子复述生成系统,包括依次连接的复述生成模块、流利度过滤模块和语义过滤模块;所述的复述生成模块用于生成复述;所述的流利度过滤模块用于计算复述的流利度,过滤得到流利度不低于阈值的复述;所述的语义过滤模块用于计算复述与原句的语义相似度,过滤得到语义相似度不低于阈值的复述。
[0028]
其中,所述复述生成模块包括翻译生成模块、模型生成模块和同义词替换生成模块;所述的翻译生成模块通过直译生成和回译生成两种方式生成复述,所述的模型生成模块通过语言模型生成复述,所述的同义词替换生成模块通过替换原句中的同义词生成复述。
[0029]
其中,所述的直译生成方式通过将输入句子翻译为文言文、粤语和繁体中文生成复述,所述的回译生成方式通过将输入的中文句子翻译为英语句子,再将英语句子翻译为中文生成复述;所述的回译生成方法还利用多语言翻译模型,将输入句子翻译为德语句子,再将德语句子翻译为中文生成复述。
[0030]
其中,所述的模型生成模块包括直接训练中文复述生成模型来生成复述和利用英文复述生成模型间接生成中文复述两种方式,所述利用英文复述生成模型间接生成中文复述的方式是将中文句子翻译成英文,输入英文复述生成模型生成英文复述,再将英文复述翻译成中文生成中文复述。
[0031]
其中,同义词替换生成模块包括分词、命名实体识别、可替换词过滤、同义词查找、同义词过滤、同义词替换模块所述的同义词替换生成模块包括分词子模块、命名实体识别子模块、可替换词过滤子模块、同义词查找子模块、同义词过滤子模块、同义词替换子模块。
[0032]
其中,同义词替换生成模块中可替换词过滤模块将作品名(nw)、其他专名(nz)、标点符号(w)、人名(per)、地名(loc)、机构名(org)和时间(time)这些实体类型组成的集合作为不可替换实体类型集合,类型属于该集合的实体将不做同义词替换。
[0033]
其中,同义词替换生成模块中同义词过滤模块引入在大规模语料上预训练的掩码语言模型(masked language model)来过滤同义词,具体包含以下步骤:s1:将句子中的原词替换为与同义词长度相同的掩码,得到掩码句子;s2:将掩码句子输入预训练掩码语言模型,计算掩码位置对应的输出生成同义词对应字的概率,用同义词各字生成概率的几何平均数作为置信度;s3:设置置信度阈值;s4:滤除置信度小于阈值的同义词,得到适用于当前语境的同义词。
[0034]
其中,流利度过滤模块利用预训练的掩码语言模型计算流利度,设置流利度阈值,过滤得到流利的复述。流利度计算方法为逐个掩盖句子中的每个字,计算模型输出的掩码位置生成原字的概率。基于得到的生成概率计算困惑度,再用指数函数将1减去困惑度得到的值映射到区间[0,1]。流利度计算方法用公式表示为:
其中flu为流利度,n为句子长度,i为第i个位置,p为生成概率,s为句子,为句子的第i个字。
[0035]
其中,语义过滤模块用sentence bert模型对句子进行编码得到句向量,通过句向量间的余弦值来判断语义是否相同。设置余弦值阈值,当且仅当句向量间的余弦值大于等于阈值时,认为语义相同。
[0036]
语义过滤模块训练独立的、与句子生成无关的sentence bert模型来判断语义。构造包含强负样本和弱负样本的数据集训练模型,并将sentence bert模型训练时三元目标函数改进为如下形式:其中为改进的损失值,表示句子a的句向量,表示句子p的句向量,表示句子n的句向量;句子p是a的正例,即p与a的语义相同。句子n是a的负例,即n与a的语义不同;表示距离度量,表示设定的边际值。
[0037]
实施例1本实施例1涉及到的预训练模型名字,使用的是huggingface模型库中模型的命名。可以通过huggingface的transformers框架根据模型名字加载模型。例如模型vamsi/t5_paraphrase_paws,可以通过以下方式加载:from transformers import autotokenizer, automodelforseq2seqlmtokenizer = autotokenizer.from_pretrained("vamsi/t5_paraphrase_paws")model = automodelforseq2seqlm.from_pretrained("vamsi/t5_paraphrase_paws")涉及到将句子输入模型或由模型生成句子的表述时,例如“将掩码句子输入预训练掩码语言模型”、“计算自编码模型输出的掩码位置生成原字的概率”和“将英语句子输入vamsi/t5_paraphrase_paws模型生成英语复述”,这是为了方便表达,避免赘述的简写。省略了前后加入分隔符([cls]、[sep])、将字符映射成整数索引、补零填充长度(pad)、生成模型输入所需的字类型索引列表(token type id)和注意力掩码列表(attention mask)或者将整数索引映射成字符的步骤。省略的这些步骤对于相关从业人员来说不言自明,无需赘述。
[0038]
基于预训练模型的句子复述生成系统,输入简体中文普通话句子,输出语义相同措辞不同的句子,实施步骤包括:1.搭建百度翻译接口调用模块,实现将中文普通话翻译为文言文、粤语和繁体中文功能;2.基于helsinki-nlp/opus-mt-zh-en模型实现中文翻译为英语功能,基于helsinki-nlp/opus-mt-en-zh模型实现英语翻译为中文功能;3.基于helsinki-nlp/opus-mt-zh-de模型实现中文翻译为德语功能,基于helsinki-nlp/opus-mt-de-zh模型实现德语翻译为中文的普通话、粤语、地方方言功能;4.通过爬虫和人工标注的方法收集语义相同的句子对,作为中文复述生成数据集。基于thu-coai/cdial-gpt_lccc-large模型微调训练中文复述生成模型;5.基于vamsi/t5_paraphrase_paws模型实现英语复述生成功能;结合步骤2中实
gpt_lccc-large模型微调训练得到的中文复述生成模型。thu-coai/cdial-gpt_lccc-large是开源的中文语言模型,经lccc-large数据集训练,能够生成高质量的对话回复。通过网络爬取和人工标注的方法收集语义相同措辞不同的句子对,作为中文复述数据集。用中文复述数据集微调thu-coai/cdial-gpt_lccc-large模型得到中文复述生成模型。
[0045]
目前,英文复述生成的研究比中文复述生成更深,已经有很多开源的模型和框架能够生成高质量的复述。这些开源模型和框架虽然是英文复述生成的资源,但在中文复生成任务中依然很有价值。要将这些资源利用到中文复述生成中,最自然的想法是将中文句子翻译成英文,输入英文复述生成模型生成英文复述,再将英文复述翻译成中文生成中文复述。本实施例选取vamsi/t5_paraphrase_paws模型,用翻译生成模块中的翻译方法将中文翻译为英文,将英文句子输入vamsi/t5_paraphrase_paws模型生成英文复述,再将英文复述用翻译生成模块中的翻译方法将英文翻译为中文生成中文复述。
[0046]
同义词替换模块如图7所示,包括分词、命名实体识别、可替换词过滤、同义词查找、同义词过滤、同义词替换模块。同意词替换模块生成复述的思想是将句子中的词替换成同义词,这样可以保持句子语义不变的情况下改变句子措辞,生成复述。但是词的词意与所在的句子上下文有关,有些情况下做同义词替换会改变句子语义。例如“联想是什么时候上市的”这句话,对于“联想”一词,它的同义词有“感想”、
ꢀ“
畅想”、
ꢀ“
构想”、“遐想”等。句子中的“联想”是机构名,将“联想”替换成同义词会改变句子语义。为了避免这种情况,需要统计一个不可替换实体类型集合,属于不可替换实体类型集合的实体词将不做同义词替换。用百度lac(lexical analysis of chinese)工具对句子进行分词和命名实体识别。将作品名(nw)、其他专名(nz)、标点符号(w)、人名(per)、地名(loc)、机构名(org)和时间(time)这些实体类型组成的集合作为不可替换实体类型集合,类型属于该集合的实体将不做同义词替换。
[0047]
对于可替换的词,通过哈工大信息检索研究室同义词词林扩展版寻找同义词。哈工大信息检索研究室同义词词林扩展版是哈工大信息检索研究室对《同义词词林》进行扩充后的版本,包含77343条词语。扩展版词林文本中,同一行的词语要么词义相同,要么词义有很强的相关性。因此可以基于扩展版词林来查找同义词。给定某个词,可以通过查询该词的行数,将这行的其他词作为给定词的同义词。例如
ꢀ“
大豆”一词,可以查询到同义词“毛豆”和“黄豆”。
[0048]
然而对于多义词而言,它表达的意思与所在上下文有关。从词林中查询到的同义词有些会不适用于当前语境。例如“几”和“或多或少”都可以是“多少”的同义词,在“图中有多少人”这句话中“或多或少”不能作为“多少”的同义词;在“他多少有点生气”这句话中,“几”不能作为“多少”的同义词。因此需要对查询到的同义词进行过滤,得到适用于当前语境的同义词。与不适用于当前语境的同义词相比,将适用于当前语境的同义词替换原词后,句子依然通顺流利。从统计的角度看,与不适用于当前语境的同义词相比,适用于当前语境的同义词在当前语境中应该有更高的出现概率。基于这个思想,引入在大规模语料上预训练的掩码语言模型(masked language model)来过滤同义词。具体的,将句子中的原词替换为与同义词长度相同的掩码,得到掩码句子。将掩码句子输入预训练掩码语言模型,计算掩码位置对应的输出生成同义词对应字的概率,用同义词各字生成概率的几何平均数作为置信度,用公式表示为:
其中conf为置信度,n为掩码长度,p为生成概率,i为第i个掩码位置,w为同义词,为同义词的第i个字。
[0049]
有了同义词置信度后,设置置信度阈值。滤除置信度小于阈值的同义词,得到适用于当前语境的同义词。以“图中有多少人”为例,将句子中“多少”替换成与同义词长度相同的掩码得到掩码句子。对于同义词“几”,得到掩码句子“图中有[mask]人”,对于同义词“或多或少”,得到掩码句子“图中有[mask][mask][mask][mask]人”。将掩码句子输入预训练掩码语言模型,本实施例选取chinese-roberta-wwm-ext模型。计算掩码位置处对应的输出生成同义词的概率,如图8所示。对于掩码句子“图中有[mask]人”,掩码位置生成“几”的概率为,“几”的置信度为。对于掩码句子“图中有[mask][mask][mask][mask]人”,掩码位置分别生成“或多或少”的概率为。“或多或少”的置信度为。
[0050]
设置阈值conft=0.0015,,因此保留“几”,滤除“或多或少”。
[0051]
得到适用于语境的同义词后,同义词替换模块用同义词替换原词生成复述。例如,对于句子“图中有多少人”,得到“图”的同义词“画”,“多少”的同义词“几”、“几多”。同义词替换模块将生成6条复述:图中有多少人、图中有几人、图中有几多人、画中有多少人、画中有几人、画中有几多人。
[0052]
复述生成模块通过翻译生成、模型生成和同义词替换生成复述。对这些复述进行去重后输入流利度过滤模块,过滤出流利通顺的复述。与同义词过滤模块思路相似,利用预训练的掩码语言模型计算流利度。具体的,逐个掩盖句子中的每个字,计算模型输出的掩码位置生成原字的概率。基于得到的生成概率计算困惑度,再用指数函数将1减去困惑度得到的值映射到区间[0,1]。流利度计算方法用公式表示为:其中flu为流利度,n为句子长度,i为第i个位置,p为生成概率,s为句子,为句子的第i个字。
[0053]
本实施例选取自编码模型chinese-roberta-wwm-ext搭建流利度过滤模块。以“图中有多少人”为例,将“[mask]中有多少人”输入模型,得到模型输出在[mask]位置生成“图”的概率为。再将“图[mask]有多少人”输入模型,得到模型输出在[mask]位置生成“中”的概率为。依此类推,得到概率,。计算出流利度。对于“人中有多少图”,分别计算出概率
,,,计算得到流利度。设置流利度阈值为。示例句子的流利度有,“图中有多少人”能通过流利度过滤,“人中有多少图”将被滤除。
[0054]
过滤得到流利的复述后,还需要保证复述与原句语义相同。有方法通过生成模型生成复述,再利用生成模型得到原句和复述的句向量,通过句向量间的余弦值来判断复述与原句的语义是否相同。这种方法不能把生成和评估任务区分开。生成模型基于原句生成了复述就表明生成模型认为该复述的语义与原句相同,再用生成模型得到句向量去判断原句与复述语义,容易趋向于判断语义相同。为了避免生成过程影响评估结果,语义过滤模块应该训练独立的、与句子生成无关的模型来判断语义。
[0055]
采用sentence bert结构,构造数据集来训练模型。利用训练中文复述模型时构造的数据集。该数据集中的每一对句子都是正样本。对于每个句子,从数据集中随机采样一个句子与其配对作为负样本。随机采样配对形成的负样本绝大部分句子间的语义和用词都相差很大,称这种样本为强负样本。为了更好的训练模型,对于每个句子,再从数据集中选出与它用词类似但语义不同的句子配对作为负样本,称为弱负样本。选取方法为先提取句子的tf-idf向量,根据句子间tf-idf向量的余弦值召回最相似的10条句子,人工从这10条句子中选出与当前句子语义不同的一条句子。如果召回的10条句子中没有语义不同的句子,则继续召回余弦值靠后的10条句子进行筛选,直到选出语义不同的句子为止。构造出新的数据集后,开始训练模型。sentence bert模型训练时包括分类目标函数(classification objective function)、回归目标函数(regression objective function)和三元目标函数(triplet objective function)。常规的三元目标函数是要最小化如下损失函数:。其中loss为损失值,表示句子a的句向量,表示句子p的句向量,表示句子n的句向量。句子p是a的正例,即p与a的语义相同。句子n是a的负例,即n与a的语义不同。表示距离度量,表示设定的边际值。
[0056]
损失函数表达式中的设定使至少比离更近的距离。该损失函数能拉开和的距离,但不足以拉开和的距离。例如当和的距离为,且位于和正中间时,,训练时模型将不会再优化。而当输入句子p,想要查找与p语义相同的句子时,句子a和n在句向量空间离p一样近。对于句子p而言,不能根据句向量间的距离判断a和n哪句与自己语义相同。作为句子a的正例,p有着与a相同的语义。可以认为句子p与a是等价的,互换p和a应该不会也不能影响损失函数的计算结果。为了体现这种思想,将三元目标函数改进为如下形式:。其中为改进的损失值,其余各字符含义与原三元目标函数相同。当和的距离为,且位于
和正中间时,,训练时模型会继续优化。
[0057]
改进的三元目标函数表达式具有句子a和p的轮换对称性,并且使和的距离比和、和的距离至少小。改进的三元目标函数使语义相同的句子在句向量空间更紧密,语义不同的句子更远离。
[0058]
利用分类目标函数、回归目标函数和改进的三元目标函数训练得到sentencebert模型,设置余弦值阈值,当且仅当两个句子间句向量的余弦值大于等于阈值时,认为两句语义相同。以原句“图中有多少人”和复述“图中有几人”、“图中有多少树”为例。原句与“图中有几人”的句向量余弦值为0.86368716,与“图中有多少树”的句向量余弦值为0.14648251。设置余弦值阈值为0.85,过滤得到“图中有几人”为原句的复述,滤除“图中有多少树”。
[0059]
将上述各个模块组合搭建成本实施例的复述生成系统,系统生成的复述示例如下表所示。
[0060]
表1本实施例复述生成示例以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1