一种最大逆向匹配分词算法与GPT结合的文本生成方法技术

技术编号:36695571 阅读:19 留言:0更新日期:2023-02-27 20:07
本发明专利技术属于自然语言处理技术领域。具体涉及一种最大逆向匹配分词算法与GPT结合的文本生成方法,逆向最大匹配分词算法能够融入用户的常用词汇、句子信息,而GPT网络模型却可以在海量数据中学习字、词汇、句子之间的统计规律和内在联系。通过两者的有效结合,可以使得GPT模型在海量数据中通过模型训练学习字粒度、词汇粒度、句子粒度之间的信息,从而改善生成文本的连贯性。本的连贯性。

【技术实现步骤摘要】
一种最大逆向匹配分词算法与GPT结合的文本生成方法


[0001]本专利技术属于自然语言处理
具体涉及一种最大逆向匹配分词算法与GPT结合的文本生成方法。

技术介绍

[0002]文本生成任务是自然语言处理任务中最具有挑战性的任务之一,当前的文本生成任务正在朝着大模型、大数据集的思路前进,通常需要耗费大量的计算资源,在当计算资源有限,不能有效支撑大模型、大数据的思路进行后续尝试时,使用现有的模型和数据如何能够提高文本生成任务的效果成为了当下所要解决的问题。

技术实现思路

[0003]本专利技术实现了一种最大逆向匹配分词算法与GPT结合的文本生成方法,其中,逆向最大匹配分词算法能够融入用户的常用词汇、句子信息,而GPT网络模型却可以在海量数据中学习字、词汇、句子之间的统计规律和内在联系。通过两者的有效结合,可以使得GPT模型在海量数据中通过模型训练学习字粒度、词汇粒度、句子粒度之间的信息,从而改善生成文本的连贯性。
[0004]一种基于逆向最大匹配分词算法和GPT模型结合的文本生成方法,所述中文文本生成方法主要包括如下步骤:S1.构造字符库:针对开源BERT模型公开的词表进行整理,保留特殊字符四个,分别为:文本起始符[CLS],补全字符 [PAD],句子间分隔符[SEP],未在词表中出现字符[UNK],将BERT词表中所有长度超过1的词表全部删除,然后将这些字符放到vocab.txt,针对项目project中提供的数据统计所有字符,然后将这些字符添加到vocab.txt,得到最终的字符库;S2.构造高频词库:针对project的文本语料,通过jieba工具进行分词后,统计高频词,其具体操作为:建立词频统计字典Word_freq = {key1: value1, key2: value2,
ꢀ…
},其中,key为字典键,取值为词,value为key所对应的键值,取值为词所对应的词频,针对每一条文本数据通过jieba工具进行分词,如果该词不在Word_freq中,则将该词放到Word_freq中作为key;如果该词出现,则对应key的词频value加一;默认高频词是项目中出现频次大于20次的词汇,如果出现频次大于20次的超过5000,则只保留前5000个,将5000个高频词放到words_f.txt中,得到最终的高频词库;S3.构造关键词词库:针对项目project的文本语料,建立词频统计字典Word_key = {key1: value1, key2: value2,
ꢀ…
},其中,key为字典键,取值为词,value为key所对应的键值,取值为词所对应的词频,通过jieba工具中基于tf

idf关键词抽取模块抽取每条文本的前三个关键词。如果当前文本的关键词不在Word_key中,则将该词放到Word_key中作为key;如果该词出现,则对应key的词频value加一;默认关键词频率是项目中出现频次大于10次的词汇,如果出现频次大于10次的超过5000,则只保留前5000个,将5000个关键词放
到words_k.txt中,最终得到关键词词库;S4.构造高频句库:针对项目project的文本语料,通过标点符号对文本进行分句,建立句频统计字典Sent_freq = {key1: value1, key2: value2,
ꢀ…
},其中,key为字典键,取值为句子,value为key所对应的键值,取值为句子所对应的句频,统计高频句,如果当前文本的句子不在Sent_freq中,则将该句子放到Sent_freq中作为key;如果该句子出现,则key对应的句频value加一;默认句子频率是项目中出现句频大于10次的句子,如果出现频次大于10次的超过5000,则只保留前5000个句子,将5000个高频句放到sents_f.txt中,最终得到高频句库;S5.建立映射词典:根据步骤S1、S2、S3所得到的字符库、高频词库、关键词词库、高频句库,建立映射词典,其具体为:将字符库,关键词库,高频词库,高频句库汇总到一个txt文件中并去重,文件记为keys_sum.txt,通过该txt文件建立映射词典Dict,Dict的前项key为字符索引编号,Dict的后项value为具体的领域字、关键词、高频词、高频句,即Dict={0:

[CLS]’
,1:”[PAD]”,2:”[SEP]“,.......},其中[CLS]为文本起始符,[PAD]代表当文本长度不够最大长度max_len时,采用“[PAD]”字符填充到max_len长度,最终得到映射词典Dict;S6.数据和模型适配:项目project的文本语料中提取某条文本样本,逆向最大匹配分词算法从该文本末端开始匹配扫描,每次取i个字符,i为步骤S5中映射词典表中value最长的词或者句子进行匹配,如果在映射词典表中未匹配成功,则去掉匹配字段的最前面一个字,继续匹配,如果匹配成功,则该词为分词的一个字、词或句,然后从输入文本中扣除该词,从剩下的文本中继续执行上述操作,从而完成最终分词结果记为列表A,本条文本不够最大长度max_len, max_len设定为100,则将列表A通过“[PAD]”字符填充到该文本最大长度100,然后通过步骤S5中的映射词典Dict,映射成索引编号列表,成为GPT模型的输入张量X,对应的输出Y为缺少起始符通过映射词典Dict映射后的张量,将其它文本语料中的文本执行同样的操作,得到整个训练数据集,作为模型输入,通过最大逆向最大匹配分词算法,最终得到后续GPT网络的数据输入;S7.构建GPT网络模型结构:约定模型最大文本长度max_len为100,嵌入维度为256,针对在步骤S6中的每条模型输入,先经过token_embedding、postional_embedding将文本进行嵌入表示,此时文本嵌入表示的矩阵形状为[100,256],将该文本嵌入表示输入到GPT网络模型,具有遮掩mask的多头注意力机制Multi_Head_Attention、前馈全连接神经网络Feed_forward作为一个单元,重复6次,即6层相同的网络,GPT网络的最后一层为[256,25856]的全连接,25856为步骤S5中所提到的keys_sum.txt中字、词、库总数量;最终得到GPT网络模型结构;S8.训练模型:根据步骤S7中已设定好的模型结构,并加入模型Adam优化器和交叉熵损失函数进行模型训练;具体训练过程为:将步骤S6得到的模型输入,喂入步骤S7中得到的整体网络模型结构,对应模型张量为优化目标Y,模型最终目标即最小化X经过模型的输出和优化目标Y的交叉熵损失函数,先根据网络结构进行前向传播,根据预测输出与真实输出计算损失,然后进行反向传播,通过Adam优化器不断更新网络模型参数,以此往复运行,直到损失函数值降低到趋于稳定,针对模型训练的连续100个反向传播的损失函数loss值取平均记录为loss1,然后在5小时后记录连续100个反向传播的loss值取平均记录为
loss2,如果模型本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种最大逆向匹配分词算法与GPT结合的文本生成方法,其特征在于包括如下步骤:S1.构造字符库:针对开源BERT模型公开的词表进行整理,保留特殊字符四个,分别为:文本起始符[CLS],补全字符 [PAD],句子间分隔符[SEP],未在词表中出现字符[UNK],将BERT词表中所有长度超过1的词表全部删除,然后将这些字符放到vocab.txt,针对项目project中提供的数据统计所有字符,然后将这些字符添加到vocab.txt,得到最终的字符库;S2.构造高频词库:针对project的文本语料,通过jieba工具进行分词后,统计高频词,其具体操作为:建立词频统计字典Word_freq = {key1: value1, key2: value2,
ꢀ…
},其中,key为字典键,取值为词,value为key所对应的键值,取值为词所对应的词频,针对每一条文本数据通过jieba工具进行分词,如果该词不在Word_freq中,则将该词放到Word_freq中作为key;如果该词出现,则对应key的词频value加一;默认高频词是项目中出现频次大于20次的词汇,如果出现频次大于20次的超过5000,则只保留前5000个,将5000个高频词放到words_f.txt中,得到最终的高频词库;S3.构造关键词词库:针对项目project的文本语料,建立词频统计字典Word_key = {key1: value1, key2: value2,
ꢀ…
},其中,key为字典键,取值为词,value为key所对应的键值,取值为词所对应的词频,通过jieba工具中基于tf

idf关键词抽取模块抽取每条文本的前三个关键词;如果当前文本的关键词不在Word_key中,则将该词放到Word_key中作为key;如果该词出现,则对应key的词频value加一;默认关键词频率是项目中出现频次大于10次的词汇,如果出现频次大于10次的超过5000,则只保留前5000个,将5000个关键词放到words_k.txt中,最终得到关键词词库;S4.构造高频句库:针对项目project的文本语料,通过标点符号对文本进行分句,建立句频统计字典Sent_freq = {key1: value1, key2: value2,
ꢀ…
},其中,key为字典键,取值为句子,value为key所对应的键值,取值为句子所对应的句频,统计高频句,如果当前文本的句子不在Sent_freq中,则将该句子放到Sent_freq中作为key;如果该句子出现,则key对应的句频value加一;默认句子频率是项目中出现句频大于10次的句子,如果出现频次大于10次的超过5000,则只保留前5000个句子,将5000个高频句放到sents_f.txt中,最终得到高频句库;S5.建立映射词典:根据步骤S1、S2、S3所得到的字符库、高频词库、关键词词库、高频句库,建立映射词典,其具体为:将字符库,关键词库,高频词库,高频句库汇总到一个txt文件中并去重,文件记为keys_sum.txt,通过该txt文件建立映射词典Dict,Dict的前项key为字符索引编号,Dict的后项value为具体的领域字、关键词、高频词、高频句,即Dict={0:

[CLS]

,1:”[PAD]”,2:”[SEP]“,.......},其中[CLS]为文本起始符,[PAD]代表当文本长度不够最大长度max_len时,采用“[PAD]”字符填充到max_len长度,...

【专利技术属性】
技术研发人员:曹肖攀舒彬
申请(专利权)人:中电万维信息技术有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1