本说明书一个或多个实施例涉及计算机技术领域,尤其涉及通过计算机生成推送信息的方法和装置。
背景技术:
推送信息通常可以通过宣传的方式将产品或服务等推送给大众。推送信息可以简洁快速地对待推送目标进行描述。例如,在日常生活中,营销文案就是一种推送信息。以广告语为例,营销文案通常具有简洁易懂、独特上口、主题明确、具有感染力等等特点。常规技术中,推送信息往往由人工进行编辑。这种推送信息生成方式依赖于人工写作经验技巧,写作成本高、效率低。
自然语言处理(naturallanguageprocessing)可以用于研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理在人工智能方面的应用场景非常多,例如,自动翻译、语音识别、文本分类等等。在信息推送领域,自然语言处理的应用往往体现在如何根据被推送方信息和/或推送信息进行更精准、更具有针对性的信息推送。而对于推送的具体信息内容,却应用有限。特别地,推送信息是营销文案(例如针对待推送目标的广告语)时,由于营销文案自身的独特特点,更增加了自然语言处理的应用难度。
技术实现要素:
本说明书一个或多个实施例描述了一种基于自然语言处理生成推送信息的方法和装置,可以解决上述的一个或多个问题。
根据第一方面,提供了一种推送信息的生成模型的训练方法,所述生成模型是编码解码网络,所述方法包括:利用预先确定的多个场景相关词汇,从文案库中匹配出多个相关文案;对各个相关文案分别进行关键词提取,从而生成对应的训练样本,其中,各个训练样本分别对应各个序列对,所述序列对包括源序列和目标序列,源序列是从相应相关文案提取的关键词序列,目标序列是相应的相关文案经过分词处理得到的词汇序列;依次将各个训练样本对应的源序列作为生成模型的输入,基于生成模型的预测词汇与目标序列中相应词汇的对比,调整模型参数,从而训练出生成模型,在生成模型预测词汇过程中,通过指针分布对词表中的词汇概率分布进行调整,以供输入生成模型内的源序列中的关键词出现在预测结果中的概率增大。
在一个实施例中,所述利用预先确定的多个场景相关词汇,从文案库中匹配出多个相关文案包括以下中的至少一项:从文案库中匹配出包含超过预定数量的场景相关词汇的文案作为相关文案;对文案库中的各个文案提取关键词,确定各个文案对应的文案关键词与所述多个场景相关词汇的词汇匹配度,并将词汇匹配度大于匹配度阈值的文案确定为相关文案。
在一个实施例中,在匹配到多个相关文案后,所述方法还包括:将匹配到的相关文案分别输入预先训练的分类模型,以确定各个相关文案的文案类别;从所匹配到的相关文案中筛除文案类别不是预定类别的文案。
在一个实施例中,所述文案类别包括以下至少一种:资讯文案、营销文案、常识文案。
在一个实施例中,所述生成模型包括编码神经网络和解码神经网络,所述基于生成模型的输出结果与目标序列的对比,调整模型参数包括:将接收的源序列及所述编码神经网络根据源序列得到的输出结果在各个时刻向所述解码神经网络的神经元传递,同时,将前面添加一个序列开始标识后的目标序列按顺序依次在各个时刻输入所述解码神经网络;将所述解码神经网络在各个时刻的预测词汇分别与在后面添加一个序列结束标识的目标序列中对应各个时刻的词汇进行对比,调整所述编码解码网络的模型参数。
在一个实施例中,第一时刻的指针分布权重与当前时刻的神经元状态、当前时刻神经元输出、当前时刻的输入词汇的加权值正相关,各项的加权权重是模型参数;所述通过指针分布对词表中的词汇概率分布进行调整包括:将所述指针分布权重作为所述词表中词汇的词汇分布概率的权重系数,将1与所述指针分布权重的差,作为当前时刻所述编码神经网络所接收词汇的词汇分布概率的权重系数。
在一个实施例中,所述指针分布权重中的权重系数根据加入当前注意力向量与历史注意力向量总和的相似惩罚的损失函数调整,所述损失函数与当前注意力向量与历史注意力向量总和的相似度正相关。
根据第二方面,提供一种推送信息的生成方法,所述方法包括:获取用户针对待推送目标提供的多个关键词;确定各个关键词分别对应的词向量;依次将各个词向量输入预先训练的生成模型,以预测到预定数量的词汇序列作为候选文案,其中,所述生成模型是编码解码网络,在预测词汇序列过程中,通过指针分布对词表中的词汇概率进行调整,使得所述多个关键词出现在预测结果中的概率增大;从所述候选文案中选择出符合条件的文案作为所述待推送目标的推送信息。
在一个实施例中,所述编码解码网络包括编码神经网络和解码神经网络,所述编码神经网络用于将输入的词汇序列转化成语义向量,所述解码神经网络用于基于所述语义向量预测出预定数量的字符序列,所述编码神经网络或所述解码神经网络分别为循环神经网络、双向循环神经网络、门控循环单元、长短期记忆模型中的一个。
在一个实施例中,所述解码神经网络用于基于所述语义向量预测出预定数量的字符序列包括:
根据所述语义向量和序列开始标识,通过所述解码神经网络的神经元在第一时刻预测预定数量的首词汇;
在第t时刻,针对与第t-1时刻预测的、与各个首词汇一一对应的各个词汇序列,通过所述解码神经网络的神经元,根据所述语义向量,分别确定当前概率最大的词汇,和已预测到的相应词汇序列组成当前词汇序列,作为t时刻预测到的词汇序列,其中,t为大于1的自然数。
在一个实施例中,所述从所述候选文案中选择出符合条件的文案作为所述待推送目标的推送信息包括:
通过预先训练的语言模型,预测各个字符序列分别作为句子出现的各个概率;
按照各个概率选择满足以下条件之一的字符序列,作为待推送目标的推送信息:属于预定数量概率最大的字符序列、概率超过预设概率阈值。
根据第三方面,提供一种推送信息的生成模型的训练装置,所述生成模型是编码解码网络,所述装置包括:
匹配单元,配置为利用预先确定的多个场景相关词汇,从文案库中匹配出多个相关文案;
样本生成单元,配置为对各个相关文案分别进行关键词提取,从而生成对应的训练样本,其中,各个训练样本分别对应各个序列对,所述序列对包括源序列和目标序列,源序列是从相应相关文案提取的关键词序列,目标序列是相应的相关文案经过分词处理得到的词汇序列;
模型训练单元,配置为依次将各个训练样本对应的源序列作为生成模型的输入,基于生成模型的预测词汇与目标序列中相应词汇的对比,调整模型参数,从而训练出生成模型,在生成模型预测词汇过程中,通过指针分布对词表中的词汇概率分布进行调整,以供输入生成模型内的源序列中的关键词出现在预测结果中的概率增大。
根据第四方面,提供一种推送信息的生成装置,所述装置包括:
获取单元,配置为获取用户针对待推送目标提供的多个关键词;
确定单元,配置为确定各个关键词分别对应的词向量;
预测单元,配置为依次将各个词向量输入预先训练的生成模型,以预测到预定数量的词汇序列作为候选文案,其中,所述生成模型是编码解码网络,在预测词汇序列过程中,通过指针分布对词表中的词汇概率进行调整,使得所述多个关键词出现在预测结果中的概率增大;
选择单元,配置为从所述候选文案中选择出符合条件的文案作为所述待推送目标的推送信息。
根据第五方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面或第二方面的方法。
根据第六方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面或第二方面的方法。
通过本说明书实施例提供的方法和装置,在推送信息生成过程中,仅获取用户针对待推送目标确定的多个关键词,通过自然语言序列处理的生成模型,预测出至少一个字符序列作为候选文案,并从候选文案中确定出推送信息。由于减少了人工参与,不受限于人工策划水平,还可以使得生成的候选文案多样化,从而可以提高推送信息生成的效率以及有效性。进一步地,生成模型在预测作为候选文案的词汇序列的过程中通过指针分布对词表中的词汇概率分布进行调整,使得输入模型内的关键词在预测到的词汇序列中出现的概率增大,进一步提高生成模型的预测结果的准确性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出本说明书披露的实施例的实施场景示意图;
图2示出根据一个实施例的推送信息的生成模型的训练方法流程图;
图3示出一个编码解码网络的示意图;
图4示出在一个具体例子中,将编码解码网络按时间顺序展开的示意图;
图5示出根据一个实施例的在生成推送信息过程中通过指针分布对词汇概率分布进行调整的示意图;
图6示出根据一个实施例的推送信息的生成方法流程图;
图7示出根据一个实施例的推送信息的生成模型的训练装置的示意性框图;
图8示出根据一个实施例的推送信息的生成装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
图1为本说明书披露的一个实施例的实施场景示意图。在该实施场景中,用户可以通过与计算平台进行交互,以向计算平台提供待推送目标的关键词信息,并从计算平台获取针对待推送目标的推送信息。其中,计算平台可以是诸如计算机、平板电脑、智能手机之类的硬件设备,也可以是运行于硬件设备的应用,本实施场景中对此不作限定。在一个实施例中,计算平台是终端应用,用户和计算平台之间可以直接进行交互。在另一个实施例中,计算平台是为终端运行的应用提供支持的服务器时,用户和终端进行直接交互,终端和服务器通过网络进行交互,从而用户和计算平台之间间接进行交互。
图1示出的场景中,在用户为待推送目标确定推送信息时,可以向计算平台提供至少一个关键词,由计算平台生成推送信息并反馈给用户。其中,待推送目标可以是各种业务、商品等。计算平台可以存储有预先训练的生成模型。计算平台可以获取用户输入或选定的至少一个关键词,依次将各个关键词对应的词向量输入生成模型,由生成模型生成预定数量的候选文案。进一步地,从候选文案中选择满足条件的文案作为待推送目标的推送信息。
其中的生成模型可以是基于自然语言处理的神经网络,编码解码网络(encoder-decoder)。编码解码网络可以用于处理序列到序列的问题。推送信息可以看作多个词汇组成的序列。通过生成模型,根据输入的关键词生成预定数量的推送信息,生成的推送信息多样化,生成效率提高,推送信息生成的有效性得到提高。
下面首先描述生成模型的训练过程。
如图2所示,生成模型的训练过程从大的方向可以分为两个步骤。步骤201,选择样本;步骤202,训练模型。
在本说明书实施例中,训练样本可以基于与当前场景相关的多个相关文案确定。每个相关文案可以具有多个关键词作为样本特征,相关文案本身可以作为对应的样本标签。
可以理解,在选择相关文案的过程中,使用场景相近的训练样本,能够提高所训练的模型的准确度。因此,在选择相关文案时,可以预先确定多个场景相关词汇,并将场景相关词汇与文案库中的文案进行匹配,匹配到的文案作为相关文案。
其中,场景相关词汇可以是与场景相关的各种词汇。例如,在营销场景中,可以选择“××超市”、“年货”、“个人洗护”、“服装”、“红包”、“线下支付”、“优惠券”等等词汇作为场景相关词汇。场景相关词汇可以是人工确定的,也可以是按照相关类别从预定网站抓取,还可以从相关场景的描述信息中抽取。例如,从“夏季胖妈妈的福利”中抽取“夏季”、“胖”、“妈妈”等词汇作为关键词。
可选地,还可以对初始确定的少量场景相关词汇进行词汇扩展,以利用已有的词汇自动召回更多相关的词汇。其中,词汇扩展可以通过同义词、近义词、关联词、语义相近的词汇等等方式进行。同义词、近义词可以按照词典中的记录确定。关联词可以是上下文词汇(在文本中相邻出现的词汇)。例如“锅巴”的关联词汇可以是“非油炸”、“松脆”等。
然后,将场景相关词汇与文案库中的文案进行匹配。
在一个实施例中,可以统计各个文案中出现的场景相关词汇的数量,当文案中出现场景相关词汇的数量大于预定的数值(如5)时,确定文案与场景相关词汇相匹配,相应文案可以被确定为相关文案。
在另一个实施例中,可以对文案库中的各个文案提取关键词(提取过程将在下文详述),并将文案关键词与场景相关词汇计算匹配度。匹配度可以利用诸如jaccard系数、余弦相似度之类的文本相似度方法确定。以jaccard系数为例,假设文案库中任一文案为第一文案,则场景相关词汇与第一文案的匹配度可以为:场景相关词汇与第一文案的关键词中的相同词汇数目/场景相关词汇与第一文案的关键词的数目之和。当第一文案与场景相关词汇的匹配度大于预定匹配阈值(如50%),则第一文案可以被确定为相关文案。
在可选的实现方式中,为了进一步提高训练样本与场景的相关性,选择出与场景相关词汇相匹配的多个相关文案后,还可以对相关文案进一步筛选。可以将相关文案输入预先训练的分类模型,由分类模型输出相关文案在各个类别上的概率,从而过滤掉在相关场景上概率小于预定值(如10%)的相关文案。其中,分类模型可以是多任务模型,即具有多个输出结果。每个输出结果对应文案属于相应类别的概率。文案类别例如可以包括但不限于,新闻文案、资讯文案、政治文案、营销文案、农业文案等等。
接着,将选择出的各个相关文案构造成生成模型的训练样本。其中,各个训练样本分别对应各个序列对,所述序列对包括源序列和目标序列,源序列是从相应相关文案提取的关键词序列,目标序列是相应的相关文案经过分词处理得到的词汇序列。其中,相关文案中的关键词可以在和场景相关词汇的匹配过程中提取,也可以在文案筛选完成后提取,在此不做限定。相关文案中的关键词提取可以通过诸如textrank、lda之类的方法实现。
下面以textrank为例,针对一个第一相关文案,说明文案的关键词提取过程。
首先对相关文案进行分词、去停用词、标注词性、保留预定词性等处理。例如文案“家用趣味小板凳,生活就是这么美好”,经过处理后可以得到“家用”(形容词)、“趣味”(形容词)、“小”(形容词)、“板凳”(名词)、“生活”(名词)、“美好”(形容词)等词汇。这些词汇可以称为候选词。将每一个词作为一个节点建立图模型,节点与节点之间的边由词与词之间的共现决定。词与词之间的共现由一个固定大小的窗口(例如长度为2个词的窗口)决定的。如果一个词与另一个词在同一个窗口里,就在这两个词之间加一条边,建立起图模型。
这样,根据以下公式迭代传播各个节点的权重,直至收敛:
其中,vi表示某个词汇i,vj表示连接到词汇i的词汇,in(vi)表示连接到词汇i的词汇集合,out(vj)表示词汇j连接到的词汇集合,vk表示连接到的词汇,ws(vj)、ws(vj)分别表示词汇i、词汇j的pr值,wji、wjk分别表示词汇i和词汇j之间、词汇i和词汇k之间的连接权重(该权重可以和相应连接边数成正比),d为阻尼系数,用于保证每个词汇都有一个大于0的pr值。d的值可以是通过实验确定的常数,例如,d取0.85时,迭代100次可以得到稳定收敛的pr值。
当前述公式收敛时,得到各个节点(词汇)的权重。对各个节点的权重倒序排序,取权重排列靠前的预定个数(如10)的词汇,作为文案对应的关键词。可选地,如果该预定个数的词汇中多个词汇在原始文本中为相邻词汇,还可以组合成多词关键词。
有了对应各个训练样本的相关文本的关键词,就可以构造出各个训练样本。每个训练样本可以对应一个序列对,每个序列对包括源序列(source)和目标序列(target),源序列是从相应相关文案提取的关键词序列,目标序列是相应的相关文案经过分词处理得到的词汇序列。例如:
接着,可以利用以上确定出的训练样本,训练生成模型。在本说明书实施例中,可以选择序列到序列(seq2seq)的模型作为生成模型,即编码解码网络(encoder-decoder)。所谓编码,就是将输入序列转化成一个固定长度的向量;解码,就是将之前生成的固定向量再转化成序列输出。其中,编码的过程用于解析输入的字符序列中的语言含义,解码的过程将解析到的语言含义通过另外的字符序列表达出来。
可以理解,编码神经网络和解码神经网络都可以是处理序列的神经网络,例如cnn(convolutionalneuralnetworks,卷积神经网络)、rnn(recurrentneuralnetwork,循环神经网络)、birnn(bi-directionalrecurrentneuralnetwork,双向循环神经网络)、gru(gatedrecurrentunit,门控循环单元)、lstm(longshort-termmemory,长短期记忆模型)等等中的一种。
如图3所示,编码解码网络可以通过两部分的神经网络实现,第一部分的神经网络301实现编码(encoder),称为编码神经网络,第二部分的神经网络302实现解码(decoder),称为解码神经网络。神经网络301输出的语义向量c作为神经网络302的输入。编码神经网络301和解码神经网络302之间通过传递语义向量c进行连接。编码神经网络301的输入为字符向量序列“x1”、“x2”、“x3”……解码神经网络302的输出对应到字符序列“y1”、“y2”、“y3”……编码解码网络可以作为一个神经网络整体进行训练。
其中,在训练样本时,源序列中的关键词可以随意排列,也可以按照一定的规则进行排列,例如,形容词之后排列名词,等等。目标序列可以是将相关文案拆分得到的各个词汇形成的词汇序列或各个词汇对应的词向量组成的词向量序列。
为了更清楚地描述训练编码解码网络的过程,请同时参考图3和图4所示。其中,图4是一个具体样本输入编码解码网络过程中,将图3中的神经网络301和神经网络302中的隐藏单元(神经元)按照时间进行展开的示意图。事实上,在神经网络301和神经网络302通过循环神经网络rnn、lstm等实现时,分别可以只包含一个神经元。该神经元可以在不同时刻按顺序接收不同的输入数据,给出不同的输出结果。
图4中,假设一个序列对的源序列为a、b、c,目标序列为w、x、y、z。首先,将源序列a、b、c在不同时刻依次作为特征输入神经网络301,由神经网络301将输入的序列转换成一个固定长度的语义向量。然后将该语义向量传递给神经网络302,该语义向量通过神经网络302可以在各个时刻向后传递。
对于神经网络302,为了使得输出结果更准确,在模型训练阶段,需要先对目标序列进行处理,将神经网络302中的隐藏单元的各个时间点的输入进行调整,使得各个时刻的输入是前一个词汇或前一个词汇对应的词向量,而不是前一时刻的预测词汇。如图4所示,神经网络302的神经元在各个时刻接收到的输入数据分别为序列开始标记(如go)、w、x、y、z。其中,序列开始标记表示预测序列的开始。而通过神经网络301得到的固定长度的语义向量会在神经元的不同时刻进行传递。图4中,在初始时刻,神经元接收到输入的序列开始标记“go”,根据语义向量预测第一个词汇(即与“w”对应的词汇)。下一个时刻,神经元接收到输入的与词汇“w”对应的词汇或词向量,以及初始时刻传承下来的语义向量,预测出和第一个词汇“w”组成序列的第二个词汇(与“x”对应的词汇),从而输出w、x序列。以此类推,直至神经元接收到最后一个词汇“z”或对应的词向量,根据上一时刻传承下来的语义向量预测最后一个词汇(与序列结束标识eos对应的词汇)。
在模型训练过程中,解码神经网络在每个时刻的输出可以由输入决定。也就是说,针对每个输入,可以基于词表中的词汇概率分布选择词汇。该词汇概率分布例如可以通过注意力机制实现。
at=softmax(et)
其中,i表示当前词汇,hi表示当前词汇的输出结果,st表示当前的神经元状态,wh、ws为对应的权重,battn为常数参数,wh、ws、battn在模型训练阶段调整确定,在预测阶段使用。softmax函数为归一化指数函数,用于对有限项离散概率分布的梯度对数归一化。at可以理解为,当前词汇的注意力向量。
输入隐状态加权生成contextvector(语境矢量,也就是前文所说的语义向量)为:
则词表中的词汇概率分布可以为:
其中,v为变换向量,v[st,ht*]表示通过变换向量v,将st和ht*合并成一个向量,b为常数向量。例如词表中只有三个词汇“我”、“是”、“学生”,在接收到开始标记最终确定的“我”的概率为0.3,“是”的概率为0.6,“学生”的概率为0.1。可以理解,在预测过程中,不同的输入词汇,词表中的词汇分布概率都会发生变化,因此,每输入一个词汇,都需要重新确定词表中各个词汇的分布概率。
本领域技术人员需要理解的是,输入生成模型的关键词是希望出现在最终文案中的关键词,如果输入的关键词对于词表来说是新词,那么生成模型可能无法预测到该词汇。为了解决这一问题,可以对常规的编码解码神经网络进行修正,使得输入的关键词中的新词和词表中的词汇都具有被选择的概率。
请参考图5所示。
在图5中,加入指针的混合分布权重可以为:
其中,pgen表示词表中的词汇的分布权重,
进一步地,通过指针分布概率调节词汇概率分布可以为:
其中,pvocab(w)为词表中词汇的概率分布,1-pgen表示编码模型接收到的各个词汇的分布权重,
可以理解,在语法结构里,两个词连续出现的概率通常较低。也就是说,如果一个词汇被生成模型输出一次,紧接着被输出的概率通常会很低。在生成模型的训练过程中,神经元在当前时刻接收到的词汇,在当前时刻的预测结果中出现的概率会很低。为了使得生成模型的输出遵循该原则,根据一个可能的设计,还可以在指针生成器(pointergenerator)中引入覆盖机制。通过覆盖向量记录模型此前已经关注了输入的哪些词,并将此信息带入到当前的注意力机制计算,从而避免连续关注相同的词。例如之前已关注的词汇的注意力向量和为:
当前的注意力向量计算中,
可以看出,与前文的注意力计算相比,还考虑了已出现的词汇的注意力向量之和。注意力向量可以用来表示每一步生成时关注哪些词,之前词汇的注意力向量和可以体现出之前都比较关注哪些词。从而,为了当前少关注之前较关注的词汇,可以降低相关词汇的权重。
在可选的实现方式中,可以在损失计算中通过加入当前词汇注意力向量与历史注意力向量总和的相似惩罚,来避免输出词的重复性。例如在损失函数中添加以下项:
其中,
也就是说,在损失函数中加入了历史输出词汇相关的项。
根据以上方法,依次将各个训练样本对应的源序列作为生成模型的输入,基于生成模型的预测词汇与目标序列中相应词汇的对比,调整模型参数,从而训练出生成模型。
下面描述利用前述的方法训练的生成模型生成推送信息的过程。
图6示出根据一个实施例的推送信息的生成方法流程图。该方法的执行主体可以是任何具有计算、处理能力的系统、设备、装置、平台或服务器,例如图1所示的计算平台等。如图6示,该方法包括以下步骤:步骤601,获取用户针对待推送目标提供的多个关键词;步骤602,确定各个关键词分别对应的词向量;步骤603,依次将各个词向量输入预先训练的生成模型,以预测出预定数量的词汇序列作为候选文案,其中,生成模型是编码解码网络,在预测词汇序列过程中,通过指针分布对词表中的词汇概率进行调整,使得多个关键词出现在输出结果中的概率增大;步骤604,从候选文案选择出符合条件的文案作为待推送目标的推送信息。
首先,在步骤601中,获取用户针对待推送目标提供的多个关键词。可以理解,待推送目标可以是用户想要推荐给其他用户的任何事物,例如服装、理财平台、app、小程序,等等。
用户针对待推送目标可以提供多个关键词,这些关键词可以体现待推送目标的核心特点。用户可以手动输入这些关键词,也可以从给定的关键词集中选择相关的关键词,在此不作限定。例如,针对一个电风扇的关键词可以包括:高端、静音、遥控、立式,等等。
多个关键词还可以按类别进行划分。关键词类别可以是:产品利益点关键词、优势点关键词等等。产品利益点可以是对消费者有益的点,例如满减金额、发放的奖品等;优势点可以是产品优势,例如风扇的优势是静音,油烟机的优势是无烟(风力大,抽烟很彻底),等等。
这些关键词还可以是用户为待推送目标的推送信息确定的关键词,可以是出现在最终的推送信息中的关键词。
接着,在步骤602中,确定各个关键词分别对应的词向量。其中,词向量的确定方法例如可以是,独热表示(one-hotrepresentation)、矩阵分布表示(glovevector)、word2vec等等,在此不做限定。
然后,通过步骤603,依次将各个词向量输入预先训练的生成模型,以预测出预定数量的候选文案。其中,为了避免关键词相对于词表是新词,无法被生成模型预测到的问题,在生成模型预测词汇过程中中,可以通过指针分布对词表中的词汇概率进行调整,使得多个关键词出现在输出结果中的概率增大。也就是说,在预测词汇时,对词表中的概率进行调整,将输入的关键词和词表词汇通过指针分布进行词汇概率分布的融合,得到词表词汇和输入的关键词中各个词汇对应的概率,并按照概率进行序列的预测,从而得到多个候选文案。
在通过解码神经网络确定字符序列的过程中,可以采用诸如集束搜索(beamsearch)、贪婪算法(greedyalgorithm)之类的方法进行。以集束搜索为例,按照词表中的词汇概率来选择词汇组成序列。其中,词表可以预先通过语料库统计得到。
为了描述方便,以词表中只有“我”“是”“学生”三个词汇作为束流大小(beamsize)为2的集束搜索的具体例子进行说明。
仍参考图3所示,在第一时刻,神经网络302的神经元根据输入的语义向量,以及序列开始标记,输出概率最大的2个(2为beamsize)词汇“我”(如概率为0.5)和“是”(如概率为0.4),作为预测到的首个词汇。
也就是y1有两种可能的取值,分别对应词表中的词汇“我”和“是”。分别把“我”和“是”作为在第二时刻神经网络302的神经元输入,同时将神经网络301得到的语义向量保留。当把“我”作为第二时刻的神经元输入时,得到各个词汇作为y2输出的概率分布。
例如最终确定的“我”的概率为0.3,“是”的概率为0.6,“学生”的概率为0.1。当把“是”作为第二时刻的神经元输入时,得到各个词汇作为y2输出的概率分布,例如为“我”0.3,“是”0.3,“学生”0.4。
由于设置的beamsize为2,保留概率最大的两个序列。此时可以在第一时刻得到的y1的两个可能的取值的基础上,计算所有可能的序列概率:
“我我”的概率为0.5×0.3=0.15;
“我是”的概率为0.5×0.6=0.3;
“我学生”的概率为0.5×0.1=0.05;
“是我”的概率为0.4×0.3=0.12;
“是是”的概率为0.4×0.3=0.12;
“是学生”的概率为0.4×0.4=0.16。
两个概率最大的序列为“我是”和“是学生”。这两个序列就可以对应第二时刻预测到的序列。在后续的时刻,神经网络302的神经元不断重复这个过程,直到遇到结束符为止,得到两个概率最大的序列。其中,词表中词汇的数量通常很大,计算过程也比前述过程复杂,但原理是一致的。最终得到的序列数量由束流大小(beamsize)确定,当束流大小设置为10时,得到10个概率最大的序列。
值得说明的是,由于解码的过程中,第i时刻神经元的输入,包括了第i-1时刻神经元的输出,那么很自然在神经元的输出不同的时候,就会导致下一时刻模型的输出概率分布会不同,因为第i-1时刻神经元的输出作为参数影响了第i时刻神经元的学习结果。所以,第i-1时刻选择的字符单元或字符序列不同的时候,i时刻的输出概率分布也不同。
在预测过程中,生成模型接收到的关键词需要出现在预测到的字符序列中,如果关键词不在词表中,则通过指针分布调整词汇分布概率,使得词表中的词汇和接收到的关键词都有被预测到的概率分布。其中,词汇分布概率的调整方法和生成模型训练过程一致,在此不再赘述。区别在于,此时公式中涉及的权重,是已经训练好的模型参数。
通常,一个词汇被输出(即预测到)一次后,在相邻时刻被再次输出的概率会比较低,例如序列“我我”序列的输出概率较低。在一个实现中,可以通过覆盖向量记录模型已经关注的词汇(之前输出的序列中包含的词汇),通过注意力机制计算,使得已关注词汇在概率分布中的概率降低。
其中,在生成模型中的解码神经网络通过集束搜索的方法预测词汇序列的情况下,神经元在每个时刻输出的序列数是一致的,例如都是2个,那么,对于每个时刻,针对每个已经预测到的序列,都可以按照调整后的概率分布计算方法确定词汇的输出概率。由于在模型训练过程中序列中已经出现的词汇被赋予较低的权重,因此,当前时刻包含已经出现词汇的词汇序列的序列概率较低,相同的词汇被预测为相邻词汇的概率较低。
根据一个可能的设计,为了使得预测到的候选文案能够多样化,还可以在预测词汇进行一些优化。例如,以图3为例,可以在第一时刻得到的y1的两个可能的取值的基础上,针对每个取值确定一个概率最大的序列。仍以词表包含“我”、“是”、“学生”三个词汇为例,在第一时刻预测到y1的两个可能的取值为“我”和“是”的基础上,在第二时刻,从y1的取值为“我”的可能序列中选择概率最大的一个,如“我是”,此时“是”可以作为对应于y1取“我”时y2的取值,同时,从y1的取值为“是”的可能序列中选择概率最大的一个,如“是学生”,此时“学生”可以作为对应于y1取“是”时y2的取值。也就是说,对应第一时刻预测到的每个首词汇,在后续时刻的预测结果中,只取一个词汇序列。这样,就可以避免同一个词汇对应的可能序列的概率都较大的情况下,预测到的各个序列之间的相似度较高的情况,从而使得预测到的文案多样化。
在一些实施例中,已出现的词汇还可以有出现距离的权重,该权重用于描述已出现词汇在已经预测到的词汇序列中距离当前待预测词汇的距离,距离越近权重越小,这样,可以使得已经出现过的词汇不会在词汇序列的后续词汇中被完全覆盖。例如,词汇序列“××点读机,哪里不会点哪里”的“哪里”。可选地,还可以确定词汇间隔为预定词汇数后,距离权重都是1,也就是说对相应词汇不再覆盖。
然后,在步骤604,从候选文案中选择出符合条件的文案作为待推送目标的推送信息。
这里,可以将步骤603中预测到的候选文案都作为推送信息,也可以对步骤603中预测到的字符序列通过不同的方式进行质量评估,从中确定一个或多个字符序列作为推送信息。
根据一个实施例,可以在步骤603中最终输出的预定数量的概率最大的词汇序列中,取概率最高的一个或多个序列对应的候选文案作为推送信息。例如,在前述示例中,两个概率最大的序列,“我是”的概率为0.3,“是学生”的概率为0.16,可以直接选择“我是”这个词汇序列对应的候选文案作为推送信息。
根据另一个实施例,可以使用预先训练的语言模型,预测通过步骤603得到的各个候选文案作为句子的概率。其中,语言模型可以通过给定语料库,例如××百科、新闻语料等,进行训练。对于给定句子,假设包含词汇序列p(s)=w1,w2,...,wk,则相应句子的概率可以表示为:p(s)=p(w1,w2,…,wk)p(w1)p(w2|w1)…p(wk|w1,w2,…,wk-1);
其中,该概率值p(s)可以落在[0,1]的区间范围,p(w1)为w1作为句首的概率,p(w2|w1)可以表示w2出现在w1之后的概率……p(wk|w1,w2,...,wk-1)可以表示在w1,w2,...,wk-1的基础上,出现wk的概率。
在一个实现方式中,语言模型可以是统计模型。也就是说,对语料库中各个字符单元出现在其他字符单元或字符序列之后的概率、出现在句首的概率等等进行统计。例如,对于“我”和“是”两个字符单元,“是”出现在“我”之后的概率可以为,“是”在语料库出现在“我”之后的次数/语料库中“我”出现的次数。这样,对字符单元序列p(s)=w1,w2,...,wk,可以查询p(w1)、p(w2|w1)…p(wk|w1,w2,...,wk-1)等等,并将它们的乘积确定为p(s)。
在另一个实现方式中,语言模型可以通过预先训练机器学习模型确定。此时,语料库中的各个句子,都可以作为训练样本。语言模型可以是n-gram(n源模型)、nnlm(nerualnetworklanguagemodel,语言的神经网络模型)、lstm神经网络语言模型等等中的一种。以lstm神经网络为例,可以将训练样本的各个句子拆分得到的字符单元对应的字符向量,按顺序输入lstm的神经元,并且每个时刻的神经元影响后续神经元的输出,利用已知的概率1作为标签调整模型参数,从而对lstm神经网络进行训练。对字符单元序列p(s)=w1,w2,...,wk,将对应的字符序列按顺序输入训练好的lstm模型,可以得到lstm模型为该序列做出的预测分数,来表示这个字符序列作为句子的概率p(s)。
在更多实现方式中,还可以训练更多种类的语言模型,在此不再一一例举。预测的p(s)的值越大,字符序列作为句子的可能性越大。因此,针对步骤203中得到的至少一个字符序列,可以筛选出通过预测模型预测的概率最大的预定数量(如1个)的字符序列作为待推送目标的推送信息,也可以筛选出通过预测模型预测的概率超过预设概率阈值(如0.5)的字符序列作为待推送目标的推送信息。
根据又一个实施例,可以使用预先训练的语言模型,预测通过步骤603得到的各个候选文案的营销分数。该语言模型在训练过程中,各个训练样本可以对应一个营销文案和一个人工标注的营销分数标签。最后,可以选择出营销分数最高的预定数量的候选文案,作为推送信息。
根据再一个实施例,还可以先对步骤603中确定的至少一个词汇序列按照是否完整句子进行筛选。例如,图3中,解码神经网络的神经元的层数最大为10,当预测到“培养您的天才宝贝,就”这样的词汇序列时,根据语法特点判断显然不是一个完整的句子,则可以优先筛除该候选文案。之后再按照前述任一方式从剩余的序列中选择出推送信息。
根据其他实施例,还可以通过人工在步骤603得到的候选文案中筛选出符合需求的文案,作为待推送目标的推送信息。
回顾以上过程,在推送信息的生成过程中,仅获取用户针对待推送目标确定的多个关键词,通过自然语言序列处理的生成模型,预测出至少一个字符序列作为候选文案,并从候选文案中确定出推送信息。由于减少了人工参与,不受限于人工策划水平,还可以使得生成的候选文案多样化,从而可以提高推送信息生成的效率以及有效性。进一步地,生成模型在预测作为候选文案的词汇序列的过程中通过指针分布对词表中的词汇概率分布进行调整,使得输入模型内的关键词在预测到的词汇序列中出现的概率增大,进一步提高生成模型的预测结果的准确性。
根据另一方面的实施例,还提供一种推送信息的生成模型的训练装置。这里的生成模型是编码解码网络。图7示出根据一个实施例的用于推送信息的生成装置700的示意性框图。如图7所示,装置700包括:匹配单元71,配置为利用预先确定的多个场景相关词汇,从文案库中匹配出多个相关文案;样本生成单元72,配置为对各个相关文案分别进行关键词提取,从而生成对应的训练样本,其中,各个训练样本分别对应各个序列对,序列对包括源序列和目标序列,源序列是从相应相关文案提取的关键词序列,目标序列是相应的相关文案经过分词处理得到的词汇序列;模型训练单元73,配置为依次将各个训练样本对应的源序列作为生成模型的输入,基于生成模型的预测词汇与目标序列的对比,调整模型参数,从而训练出生成模型,在预测词汇序列过程中,通过指针分布对词表中的词汇概率分布进行调整,以供输入生成模型内的源序列中的关键词出现在输出结果中的概率增大。
在一个实施例中,匹配单元71可以按照以下中的至少一项,从文案库中匹配出多个相关文案:
从文案库中匹配出包含超过预定数量的场景相关词汇的文案作为相关文案;
对文案库中的各个文案提取关键词,确定各个文案对应的文案关键词与多个场景相关词汇的词汇匹配度,并将词汇匹配度大于匹配度阈值的文案确定为相关文案。
在一个实施例中,装置700还包括筛选单元(未示出),配置为在匹配单元71匹配到多个相关文案后:
将匹配到的相关文案分别输入预先训练的分类模型,以确定各个相关文案的文案类别;
从所匹配到的相关文案中筛除文案类别不是预定类别的文案。
其中,文案类别可以包括但不限于以下至少一种:新闻文案、资讯文案、政治文案、营销文案、农业文案,等等。
在一个实施例中,生成模型包括编码神经网络和解码神经网络,模型训练模块73基于生成模型的输出结果与目标序列的对比,调整模型参数包括:
将编码神经网络接收的源序列及根据源序列得到的输出结果在各个时刻向解码神经网络的神经元传递,同时,将前面添加一个序列开始标识后的目标序列按照时间顺序依次输入解码神经网络;
将解码神经网络在各个时刻的预测词汇分别与在后面添加一个序列结束标识的目标序列中对应各个时刻的词汇进行对比,调整编码解码网络的模型参数。
在进一步的实施例中,解码神经网络在第一个时刻的输出结果是预定数量的词汇,解码神经网络在其他时刻的输出结果是预定数量的词汇序列;解码神经网络在各个时刻的输出结果基于根据注意力机制确定的词表中当前的词汇分布概率确定。
假设第一时刻的指针分布权重与当前时刻的神经元状态、当前时刻神经元输出、当前时刻的输入词汇的加权值正相关,各项的加权权重是模型参数,根据一个可能的设计,模型训练模块通过指针分布对词表中的词汇概率分布进行调整包括:
将指针分布权重作为词表中词汇的词汇分布概率的权重系数,将1与指针分布权重的差,作为当前时刻编码神经网络所接收词汇的词汇分布概率的权重系数。
可选地,指针分布权重中的权重系数根据加入当前注意力值与历史注意力值总和的相似惩罚的损失函数调整,损失函数与当前注意力向量与历史注意力向量总和的相似度正相关。
值得说明的是,图7所示的装置700是与图2示出的方法实施例相对应的装置实施例,图2示出的方法实施例中的相应描述同样适用于装置700,在此不再赘述。
根据另一方面的实施例,还提供一种推送信息的生成装置。图8示出根据一个实施例的用于推送信息的生成装置800的示意性框图。如图8所示,装置800包括:获取单元81,配置为获取用户针对待推送目标提供的多个关键词;确定单元82,配置为确定各个关键词分别对应的词向量;预测单元83,配置为依次将各个词向量输入预先训练的生成模型,以预测出预定数量的词汇序列作为候选文案,其中,生成模型是编码解码网络,在预测词汇序列过程中,通过指针分布对词表中的词汇概率进行调整,使得多个关键词出现在预测结果中的概率增大;选择单元84,配置为从候选文案中选择出符合条件的文案作为待推送目标的推送信息。
根据一个实施方式,编码解码网络包括编码神经网络和解码神经网络,编码神经网络用于将输入的词汇序列转化成语义向量,解码神经网络用于基于语义向量预测出预定数量的字符序列,编码神经网络或解码神经网络分别为循环神经网络、双向循环神经网络、门控循环单元、长短期记忆模型中的一个。
在进一步的实施例中,解码神经网络基于语义向量预测出预定数量的字符序列包括:
根据语义向量和序列开始标识,通过解码神经网络的神经元在第一时刻预测预定个数的首词汇;
在第t时刻,针对与第t-1时刻预测的、与各个首词汇一一对应的各个词汇序列,通过解码神经网络的神经元,根据语义向量,分别确定当前概率最大的词汇,和已预测到的相应词汇序列组成当前词汇序列,作为t时刻预测到的词汇序列。其中,t取自然数,表示生成模型在当前的词汇序列预测过程中的时刻序号,而不表示具体的时间。
在一个实施例中,从候选文案中选择出符合条件的文案作为待推送目标的推送信息包括:
通过预先训练的语言模型,预测各个字符序列分别作为句子出现的各个概率;
按照各个概率选择满足以下条件之一的字符序列,作为待推送目标的推送信息:属于预定数量概率最大的字符序列、概率超过预设概率阈值。
值得说明的是,图8所示的装置800是与图6示出的方法实施例相对应的装置实施例,图6示出的方法实施例与装置800的描述相互适应,在此不再赘述。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2或图6所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2或图6所述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书的技术构思所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本说明书的技术构思的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书的技术构思的具体实施方式而已,并不用于限定本说明书的技术构思的保护范围,凡在本说明书的技术构思的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的技术构思的保护范围之内。