一种基于主题的文本自动生成方法

文档序号:1215800 发布日期:2020-09-04 浏览:2次 >En<

阅读说明:本技术 一种基于主题的文本自动生成方法 (Text automatic generation method based on theme ) 是由 路松峰 李天成 于 2020-04-01 设计创作,主要内容包括:本发明公开了一种基于主题的文本自动生成方法,包括如下步骤:1)获取语料库,并对语料库中语句进行预处理,提取经预处理后语句的主题词及词向量;2)构建文本生成模型,并输入步骤1)获取的词向量进行模型参数的训练;3)输入待生成文本,提取待生成文本的主题词,并获取其词向量,将主题词词向量输入至步骤2)中经参数训练后的文本生成模型中生成新文本。通过本发明生成的文本生成语句流畅、连贯,且涉及到所有输入主题词,且与主题词紧紧相关。(The invention discloses a theme-based text automatic generation method, which comprises the following steps: 1) acquiring a corpus, preprocessing sentences in the corpus, and extracting subject words and word vectors of the preprocessed sentences; 2) constructing a text generation model, and inputting the word vectors obtained in the step 1) to train model parameters; 3) inputting a text to be generated, extracting subject words of the text to be generated, acquiring word vectors of the subject words, and inputting the subject word vectors into the text generation model after parameter training in the step 2) to generate a new text. The text generated by the invention has fluent and coherent generation sentences, relates to all input subject terms and is closely related to the subject terms.)

一种基于主题的文本自动生成方法

技术领域

本发明涉及自然语言处理领域,具体涉及一种基于主题的文本自动生成方法。

背景技术

自然语言生成是自然语言处理以及计算语言学领域中一个基础且富有挑战性的任务,基于主题的文本生成可以看作是一种特殊的自然语言生成。当今自然语言生成的研究方向主要有以下三个:基于模板的方法、基于语法的方法以及基于统计学习的方法。基于模板的方法往往采用大量人工定制的模板,然后预留一些空位来自定的填写。基于语法的方法通过人为设置文章的语法结构来逐步生成文本。而基于统计学的方法关注于学习语料库中语言模型,学习正常的人类是如何写作,学习各种语言成分之间的关系。

传统的自然语言生成是基于规则的,这种方法往往生成的效果比较好,但是需要很多特定领域的专家来制定统一的语法、行文规则,因此时间以及人力成本较高,同时使用这种方法形成的系统通常难以移植,即没有泛化能力。

研究方向从基于规则的方法转变为基于统计的方法的原因主要有以下两个:

计算机硬件的快速发展导致计算能力稳定增加,自从1946年构建起的第一台电子计算机ENIAC起,构成计算机的各个组件每年都发生了天翻地覆的改变,各种硬件成本变得低廉而运算速度却变得更快。大型操作系统的建立以及各种编程语言的发明使得处理各个问题变得方便快捷,人们可以借助于了更加强大、更加智能的计算机。

乔姆斯基语言学理论渐渐丧失主导,基于统计学些的自然语言处理方向逐渐走向主流。

由于统计学主要根据词语和出现的频度来进行处理,但词语仅仅是语义的一部分,无法代表语义,因此由此进行的文本自动生成的语义性很差,也很难表示出与中心思想相关的主题。

发明内容

本发明的目的旨在解决上述问题,从而提供一种基于主题的文本自动生成方法。

为实现上述目的,本发明提供了一种基于主题的文本自动生成方法,该方法包括如下步骤:

1)获取语料库,并对语料库中语句进行预处理,提取经预处理后语句的主题词及词向量;

2)构建文本生成模型,并输入步骤1)获取的词向量进行模型参数的训练;

3)输入待生成文本,提取待生成文本的主题词,并获取其词向量,将主题词词向量输入至步骤2)中经参数训练后的文本生成模型中生成新文本。

进一步地,所述步骤1)通过TFIDF方法来提取语句的主题词,并通过开源的python库gensim来训练主题词的词向量。

进一步地,步骤1)中语句预处理包括:统一标点符号和将英文、数字和表情符号去掉。

进一步地,所述步骤2)具体包括:

1)输入共享向量Ct={C0,C1,…},随着t的变化在不断变化,模型训练之前Ct被随机初始化为K维向量,K为步骤1)中随机抽取的主题词向量的数目,且每一维度的初始值为1,即C0=[c0,1,c0,2,…c0,K]=[1.0,1.0,1.0,1.0,1.0,…],在生成一个新的单词时,第t个向量的第j个分量ct,j由如下公式计算而来:

ct,j=ct-1,jtj

2)主题表示Tt由随着每一步文本的生成而更新,对于每一个时刻t,Tt由以下公式计算而来:

其中topicj是主题词j的词向量,即在时刻t的注意力得分,而αtj和gtj由以下公式表示:

gtj=va Ttanh(Waht-1+Uatopicj)

其中αtj是主题词向量i在时刻t的注意力权重得分,va、Wa以及Ua是LSTM中带训练的参数矩阵,gtj是主题词向量j在时刻t的注意力得分;因此,下一个单词yt的概率分布可以如下定义:

P(yt|yt-1,Tt,Ct)=softmax(g(ht))

每次生成之前,ht由以下公式来更新:

ht=f(ht-1,yt-1)

其中函数g是一个线性函数,而函数f是有LSTM结构决定的激活函数,sofmax为计算概率的激励函数,模型P(yt|yt-1,Tt,Ct)=softmax(g(ht))维护一个共享向量,该向量的每一维表示某个主题词向量将来需要在生成的文本中出现的概率,共享向量可以提高生成文本的主题完整性以及可读性,同时将注意力机制添加到LSTM模型中,注意力机制可以为生成的文本与每个主题词向量计算语义相关性,同时自动选择相关的主题来引导模型生成文本。

本发明提出的一个基于主题的文本生成方法,通过将主题词映射到词嵌入向量空间中来表征主题,同时应用LSTM作为生成器,然后引入注意力机制来构建主题词与生成的文本之间的语句相关性,注意力机制可以引导生成器生成主题相关的文本。除此之外,考虑到每个独立的文本都以不同的相关性与多个主题相关,模型使用了一个特殊的向量自动地为每个主题赋一个权重,该权重表示该主题词语目标文本的相关性。通过本发明生成的文本生成语句流畅、连贯,且涉及到所有输入主题词,且与主题词紧紧相关。

附图说明

图1是本发明实施例提供的一种基于主题的文本自动生成方法流程图;

图2是本发明实施例构建的文本生成模型结构图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。需要说明的是,附图仅为示例性说明,并未按照严格比例绘制,而且其中可能有为描述便利而进行的局部放大、缩小,对于公知部分结构亦可能有一定缺省。

在步骤101中,获取语料库,并对语料库中语句进行预处理,提取经预处理后语句的主题词及词向量。

在步骤101-1中,语料库的获取可从各网站上爬取,例如从知乎(https://www.zhihu.com/)上爬取语料库。

在步骤101-2中,语句的预处理操作如下:

将英文的标点符号替换为中文的标点符号,也就是统一语料中的标点符号。

统一各式各样的省略号,因为每个人的习惯都一样,有的人习惯用三个句号来表示省略号,而有的人习惯用6个句号来表示省略号,这里统一用‘…’来代表省略号。

做好以上处理后,判断每一个样本中是否包含数字或者英文,如果包含则丢弃该样本,反之取之。

据预设值的最大长度阈值和最小长度阈值来取舍经过上述过程操作的样本数据,如将所有文本数据的长度控制在50-300个词以内。

具体的中英文标点符号对照关系如表1所示:

表1中英文标点符号对应表

Figure BDA0002434751930000041

在步骤101-3中,获取主题词及其词向量

词向量的使用在本发明中相当重要,预处理后的语料库所构成的词典单词有数万个,如果以独热编码来表征这些单词,那么每一个向量的维度会很大,这些稀疏向量还会带来大量计算以及存储方面的问题。

目前网上有很多已经训练好的中文词向量,如通过百度百科语料、中文***语料以及***语料等等数据训练而来的中文词向量。这些词向量往往数据量极大,但是会包含大量由数字和英文构成的单词,同时仅专注于某个行业领域。实验时可以选择某个已经训练好的同时与实验所用语料行业领域相关的中文词向量,然后对其进行适当的处理。同时也可以自己选择合适的语料库来训练词向量,对于小样本的文本数据,训练速度较快,同时词向量的结果也比较好。

获取词向量前,先需要提取主题词。主题词提取定义为给定一个字符串序列s以及需要提取的主题词数目n,通过某个特定的方法提取出n个词汇(存在于串s中),从而达到简化语句或者总结语句的作用。提取出来的主题词可以作为语句的主题词,本发明中使用成熟的TFIDF方法来提取主题词。

本发明使用开源的python库gensim来训练语料库的中文主题词的词向量,词向量模型的输入为提取了主题词后的文本文件(文本文件的末尾包括主题词),只需要给定该文本文件的路径即可。首先读入该路径下的文件,然后对文本中的每一行语句进行分词,接着按照模型的配置将训练数据迭代若干次,待训练完成后保存模型以及中文词向量。

训练时模型的各个参数配置如表2所示:

表2词向量模型参数配置

算法sg CBOW词向量维度size 300
滑动窗口大小window 15频数阈值min_count 1
迭代次数iter 10Hierarchical softmax 1
学习率alpha 0.025工作线程workers 8

在步骤102中,构建文本生成模型,并输入步骤101获取的词向量进行模型参数的训练。

模型如图2所示,输入共享向量Ct={C0,C1,…},随着t的变化在不断变化,模型训练之前Ct被随机初始化为K维向量(K为主题词向量的数目),且每一维度的初始值为1,即C0=[c0,1,c0,2,…c0,K]=[1.0,1.0,1.0,1.0,1.0,…]。在生成一个新的单词时,第t个向量的第j个分量ct,j由如下公式计算而来:

ct,j=ct-1,jt,j

与此同时,主题表示Tt由随着每一步文本的生成而更新,对于每一个时刻t,Tt由以下公式计算而来:

Figure BDA0002434751930000061

其中topicj是主题词j的词向量,即在时刻t的注意力得分,而αtj由以下公式表示:

gtj=va Ttanh(Waht-1+Uatopicj)

其中αt,j是主题词向量i在时刻t的注意力权重得分,va、Wa以及Ua是LSTM中带训练的参数矩阵,而topicj是主题词向量j在时刻t的注意力得分。因此,下一个单词yt的概率分布可以如下定义(文本生成模型):

P(yt|yt-1,Tt,Ct)=softmax(g(ht))

每次生成之前,ht由以下公式来更新:

ht=f(ht-1,yt-1)

其中函数g是一个线性函数,而函数f是有LSTM结构决定的激活函数。sofmax为计算概率的激励函数。该模型维护一个共享向量,该向量的每一维表示某个主题词向量将来需要在生成的文本中出现的概率。该共享向量可以提高生成文本的主题完整性以及可读性。同时将注意力机制添加到LSTM模型中,注意力机制可以为生成的文本与每个主题词向量计算语义相关性,同时自动选择相关的主题来引导模型生成文本。

模型的输出是y,y有公式P(yt|yt-1,Tt,Ct)=softmax(g(ht))来计算,这个公式是个迭代的,按照步骤来,后一步的结果是需要前一步的数据的,这里的yt需要yt-1,Tt,Ct,ht来计算。从上面的公式知道Tt是由topicj以及αtj决定的,topicj就是主题词的词向量(每一步都是相同的),αtj参考上面的公式,为此需要计算gtj,gtj也有公式计算,这个公式的几个参数就是需要训练的,最开始会给一些初始值,多步计算后会逐渐得到这些参数的准确值。Ct的每一步都是一个K维向量,最开始初始化为[1.0,1.0,…]。后面每一步计算时,每一维按公式ct,j=ct-1,jt,j|计算(这里的j是维数:1,2,…K)。

由于步骤101获得了很多词向量,在进行训练的时候,每次不能选很多词向量(每个词向量是一个300维的数字向量),一般选K个。图2是以5个词向量为例子来训练(即把每段文本表示成5个词向量),模型可以训练很多次。每次训练时,从101步骤中获得的词向量中随机抽取了5个,这5个词向量就是topic1到topic5。刚开始是把C0和h0初始化为[1.0,1.0,1.0,1.0],并把矩阵va、Wa、Ua进行随机初始化,然后计算C1,T1,y1。训练分很多步骤,假定为m步,最终的输出结果是ym。每次训练后,与上次的结果比较,挑选出输出结果ym与原始输入比较接近的参数va、Wa、Ua,在此基础上进行随机微调,直到训练结束得到合适的参数。

图2下部分就是为了计算Ct,t为每次训练的第t步,每一步的输出为yt,上部分虽然只写了三个C0,C1,C2,,实际上是不断迭代在计算的。当生成文本时,随机输入1个文本(也可以只输入若干单词),获取词向量,然后输入到模型中,此时参数va、Wa、Ua采用训练好的模型的参数,输出ym,再在原始文本中寻最相似的文本即可生成文本。

在步骤103中,输入待生成文本,提取待生成文本的主题词,并获取其词向量,将主题词词向量输入至步骤102中经参数训练后的文本生成模型中生成新文本。

本发明提出的一个基于主题的文本生成方法,通过将主题词映射到词嵌入向量空间中来表征主题,同时应用LSTM作为生成器,然后引入注意力机制来构建主题词与生成的文本之间的语句相关性,注意力机制可以引导生成器生成主题相关的文本。除此之外,考虑到每个独立的文本都以不同的相关性与多个主题相关,模型使用了一个特殊的向量自动地为每个主题赋一个权重,该权重表示该主题词语目标文本的相关性。通过本发明生成的文本生成语句流畅、连贯,且涉及到所有输入主题词,且与主题词紧紧相关。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

8页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种演示文稿生成方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!