美文网首页嵌牛IT观察
使用RNN模型实现文本自动生成

使用RNN模型实现文本自动生成

作者: 单行车jing | 来源:发表于2017-12-18 00:18 被阅读0次

转载自http://mp.weixin.qq.com/s/0j7605kNtMgvGmAYGWBRWg

【嵌牛导读】:在自然语言处理中,另外一个重要的应用领域,就是文本的自动撰写。关键词、关键短语、自动摘要提取都属于这个领域中的一种应用。不过这些应用,都是由多到少的生成。这里我们介绍其另外一种应用:由少到多的生成,包括句子的复写,由关键词、主题生成文章或者段落等。

【嵌牛鼻子】:文本生成;RNN

【嵌牛提问】:什么是RNN呢?又如何使用 RNN 模型实现文本自动生成呢?

【嵌牛正文】:

1. 基于关键词的文本自动生成模型

基于关键词生成一段文本的一些处理技术。其主要是应用关键词提取、同义词识别等技术来实现的。下面就对实现过程进行说明和介绍。

使用RNN模型实现文本自动生成

2. 场景

在进行搜索引擎广告投放的时候,我们需要给广告撰写一句话描述。一般情况下模型的输入就是一些关键词。比如我们要投放的广告为鲜花广告,假设广告的关键词为:“鲜花”、“便宜”。对于这个输入我们希望产生一定数量的候选一句话广告描述。

对于这种场景,也可能输入的是一句话,比如之前人工撰写了一个例子:“这个周末,小白鲜花只要99元,并且还包邮哦,还包邮哦!”。需要根据这句话复写出一定数量在表达上不同,但是意思相近的语句。这里我们就介绍一种基于关键词的文本(一句话)自动生成模型。

3. 原理

模型处理流程如图1所示。

使用RNN模型实现文本自动生成

01首先根据输入的数据类型不同,进行不同的处理。如果输入的是关键词,则在语料库中选择和输入关键词相同的语句。如果输入的是一个句子,那么就在语料库中选择和输入语句相似度大于指定阈值的句子。

02对于语料库的中句子的关键词提取的算法,则使用之前章节介绍的方法进行。对于具体的算法选择可以根据自己的语料库的形式自由选择。

使用RNN模型实现文本自动生成

                                  图2

03 语句相似度计算,这里按照图2左边虚线框中的流程进行计算:

04 首先对待计算的两个语句进行分词处理,对于分词后的语句判断其是否满足模板变换,如果满足则直接将语句放入候选集,并且设置相似度为0。如果不满足则进入到c)步进行计算。

05 判断两个语句是否满足模板变换的流程图,如图2中右边虚线框所标记的流程所示:(1)首先判断分词后,两个句子的词是不是完全一样,而只是位置不同,如果是则满足模板变换的条件。(2)如果词不完全相同,就看看对不同的词之间是否可以进行同义词变换,如果能够进行同义词变换,并且变换后的语句两个句子去公共词的集合,该集合若为某一句话的全部词集合,则也满足模板变换条件。(3)如果上述两个步骤都不满足,则两个句子之间不满足模板变换。

06 对两个句子剩余的词分别两两计算其词距离。假如两个句子分别剩余的词为,句1:“鲜花”、“多少钱”、“包邮”。句2:“鲜花”、“便宜”、“免运费”。那么其距离矩阵如下表所示:

使用RNN模型实现文本自动生成

07 得到相似矩阵以后,就把两个句子中相似的词替换为一个,假设我们这里用“包邮”替换掉“免运费”。那么两个句子的词向量就变为:句1:<鲜花、多少钱、包邮>,句2:<鲜花、便宜、包邮>。

08 对于两个句子分别构建bi-gram统计向量,则有:(1)句1:< begin,鲜花>、<鲜花,多少钱>、<多少钱,包邮>、<包邮,end>。(2)句2:< begin,鲜花>、<鲜花,便宜>、<便宜,包邮>、<包邮,end>。

这两个句子的相似度由如下公式计算:

所以上面的例子的相似度为:1.0-2.0*2/8=0.5。

完成候选语句的提取之后,就要根据候选语句的数量来判断后续操作了。如果筛选的候选语句大于等于要求的数量,则按照句子相似度由低到高选取指定数量的句子。否则要进行句子的复写。这里采用同义词替换和根据指定模板进行改写的方案。

4. 拓展

本节处理的场景是:由文本到文本的生成。这个场景一般主要涉及:文本摘要、句子压缩、文本复写、句子融合等文本处理技术。其中本节涉及文本摘要和句子复写两个方面的技术。文本摘要如前所述主要涉及:关键词提取、短语提取、句子提取等。句子复写则根据实现手段的不同,大致可以分为如下几种。

使用RNN模型实现文本自动生成

基于同义词的改写方法。这也是本节使用的方式,这种方法是词汇级别的,能够在很大程度上保证替换后的文本与原文语义一致。缺点就是会造成句子的通顺度有所降低,当然可以结合隐马尔科夫模型对于句子搭配进行校正提升整体效果。

基于模板的改写方法。这也是本节使用的方式。该方法的基本思想是,从大量收集的语料中统计归纳出固定的模板,系统根据输入句子与模板的匹配情况,决定如何生成不同的表达形式。假设存在如下的模板。

rzv n, a a ——> a a, rzv n

那么对于(输入):

这/rzv, 鲜花/n, 真/a, 便宜/a

就可以转换为(输出):

真/a, 便宜/a, 这/rzv, 鲜花/n

该方法的特点是易于实现,而且处理速度快,但问题是模板的通用性难以把握,如果模板设计得过于死板,则难以处理复杂的句子结构,而且,能够处理的语言现象将受到一定的约束。如果模板设计得过于灵活,往往产生错误的匹配。

基于统计模型和语义分析生成模型的改写方法。这类方法就是根据语料库中的数据进行统计,获得大量的转换概率分布,然后对于输入的语料根据已知的先验知识进行替换。这类方法的句子是在分析结果的基础上进行生成的,从某种意义上说,生成是在分析的指导下实现的,因此,改写生成的句子有可能具有良好的句子结构。但是其所依赖的语料库是非常大的,这样就需要人工标注很多数据。对于这些问题,新的深度学习技术可以解决部分的问题。同时结合知识图谱的深度学习,能够更好地利用人的知识,最大限度地减少对训练样本的数据需求。

R

相关文章

  • 使用RNN模型实现文本自动生成

    转载自http://mp.weixin.qq.com/s/0j7605kNtMgvGmAYGWBRWg 【嵌牛导读...

  • 文本自动生成模型

    在自然语言处理中,另外一个重要的应用领域,就是文本的自动撰写。关键词、关键短语、自动摘要提取都属于这个领域的一种应...

  • LSTM网络拆解举例分析

    RNN神经网络可以对图像生成描述,对文本进行分类,实现机器翻译,视频解说等,而在该过程中,普通RNN的信息不能长久...

  • The Basic Concepts of Summarizat

    文本摘要技术是利用计算机自动实现文本分析、内容归纳和摘要自动生成的技术。 文本自动摘要的基本分类 文本自动摘要的分...

  • JS盒子模型常用属性

    JS盒子模型常用属性 CSS如下: HTML如下: 小技巧:自动生成随机文本 使用方法:在div元素中书写lore...

  • Tensorflow-3-使用RNN生成中文小说

    这篇文章不涉及RNN的基本原理,只是从选择数据集开始,到最后生成文本,展示一个RNN使用实例的过程。 对于深度学习...

  • 用Keras实现RNN+LSTM的模型自动编写古诗

    记录下用Keras实现LSTM模型来自动编写古诗的过程查看原文代码地址: Github 简介 目前RNN循环神经网...

  • 订阅功能

    模型 老师模型 订阅模型 喊单模型 模型属性 老师模型 id(老师id,不使用,自动生成) name(老师名称) ...

  • RNN生成模型的采样策略

    查看原文 RNN卷积神经网络可以用来做生成模型,目前已经有很多很成熟的应用,比如几个词生成一首古诗、一幅图片自动生...

  • 仅用四行代码实现RNN文本生成模型

    摘要:想要在没有任何问题的情况下生成文本,而无需自己构建和调整神经网络吗?赶紧来看看textgenrnn项目吧,它...

网友评论

    本文标题:使用RNN模型实现文本自动生成

    本文链接:https://www.haomeiwen.com/subject/xnmapxtx.html