米乐m6官网.神经网络在诗词自动生成方面的研究

来源:米乐m6官方网址 作者:米乐app官网登录正版下载发布时间:Friday 17th of May 2024 08:45:57 PM

  自《诗经》起,经汉乐府的发展和历代演变,诗词在唐宋达到顶峰,被后世广为传颂,明清直至近现代,人们对古典诗词的热爱经久不衰。

  加之近年来,随着国学的复兴和诗词大会的持续升温,古典诗词走进千家万户。聆听经典、唱诵古诗成为一大乐事。诗词之美,在格律、在意象、在赋比兴。

  然而,优秀的中文古典诗词作品,需要诗人的文学功底厚积而薄发,感世间百态、书千古韵事、作风流文章。

  普通百姓对于诗词的热爱虽盛,却往往止步于欣赏和背诵名作名篇。读诗尚可、品诗亦自得其乐,谈及写诗、作诗则敬而远之。

  突破性的便是,随着大数据、语料库和统计科学的发展,我们可以获取的诗词资源是海量的,能够有效挖掘中文古典诗词的宝库,从中学习古诗词的量化和统计规律,以及经典名篇中的行文和句法技巧,意象及铺陈规则,加上古诗词特有的平仄韵律,我们是否可以让诗词创作“飞入寻常百姓家”?

  倘若古诗文中的上述特征提取,不是人工标注,不依赖于专家知识,在大数据、神经网络和图型处理单元(Graphics Processing Unit,GPU)广泛普及的今时今日,由机器完成提取特征、自动迭代、推演填词、谱写校对的过程,计算机必将辅助人类诗人的创作,涌现出更多更好的诗词作品,来丰富我们日益增长的经典文化和国学艺术需求。

  也因此自然而然的,对于“机器作诗”的研究也应运而生,成为研究计算机自动分析、理解和使用人类语言的一个重要切入点。

  而在此之后,统计”机器学习方法”也被陆续用到诗歌生成上。Levy和Manurung先后探索利用遗传算法来进行诗歌生成。

  与此同时,一些研究者也开始利用其他类型的文本生成模型。比如,Yan等人提出利用自动文本摘要的方式进行诗歌生成,将诗歌的生成过程看作是从整个古诗库进行摘要的过程。

  此外,在诗歌生成任务上提升显著的模型是统计机器翻译(Statistical Machine Translation,SMT)模型。Jiang和Zhou首先将SMT模型用于中文对联的生成,取得了良好的效果。随后,He进一步将此模型应用于中文绝句的生成。

  随着人工神经网络在机器翻译方面的突破性进展,研究者从统计模型和对联生成研究逐渐过渡到基于翻译机制的网络模型来进行计算机诗词创作取得了一定的成就。

  方法为,使用了一个编码器(encoder)加上一个(decoder)的结构,将生成的每句诗向量化,然后压缩到一个上下文向量中,用以捕捉诗歌的上下文信息。

  RNN的网络结构和时间序列展开式,如图1所示,其中每个圆圈可以看作是一个单元,而且每个单元内部完成的任务都是一样的,因此可以折叠为左侧的循环结构。用一句话解释RNN,就是单元结构的重复使用。

  循环神经网络提供按时间步长的联合处理有益于大多数序列标记任务,包括文本分类、情感识别、语言生成等具体应用常见的循环神经网络改进结构主要包含长短时记忆网络(Long Short-Term Memory,LSTM)和门限递归单元(Gated Recurrent Units,GRU)结构。

  以产生梯度长时间持续流动的路径是初始化LSTM模型的核心贡献。它由Hochreiter等1997年首次提出,一个关键的扩展是采用“门”来控制循环的权重,积累的时间尺度也可以动态的改变。

  在这种情况下,即使是具有固定参数的LSTM,积累的时间尺度也可以因为输入序列而改变。如图2展示了一个标准的LSTM结构。

  当输入序列信息过长时,LSTM可以解决普通循环神经网络模型带来的梯度爆炸和弥散的问题。它将传统的神经元替换成有记忆系统的神经元(被称作记忆神经元),可以较好地解决RNN模型会丢弃甚至无法处理长序列信息的问题。

  双向长短时记忆神经网络(BiLSTM)是在所述的LSTM基础上,通过构建两个并行的隐藏层同时从正序和逆序两个方向处理序列信息,具体的网络结构如图3所示。

  具体而言,给出一个词和这个词的位置,需要从这个词开始向前向后个字生成几个字,最后合起来一共7个字,所以需要一个向前生成和一个向后生成的模板。

  向后生成:例如“黄河远上白云间”,如果我们给出了“远上”这个词,那么就需要向后生成“白云间”这三个字。

  所以对于这种向后生成的情况,我们给出一个向后的训练方式,就是给出x为远上那么对应的v为白,接下来给出x“上白”,对应y为“云”,以此类推训练出一个模板,这样就可以向后生成。

  向前生成:就是给出远上需要生成前面的,所以我们给出训练方式,x“上远”,对应y“河”,接着x“远河”,对应v黄,这样就可以向前生成。

  RNN模型大致如上,而其中还有一个概念“词向量”也极为关键。词向量是将文本分词后,以向量的形式表示每一个词语,这种转换方式称为词嵌入(Word Embedding)。

  早期的词嵌入是通过One-hot Representation来表示词向量,例如:春眠不觉晓,处处闻啼鸟。分词结果如下:“春眠\不\觉\晓\,\处处\闻\啼鸟。”

  分词后用向量表示每一个词语,去掉标点,词语的总数量即为词典维度,每一个词所在位置为1,为0,如:春眠=[1,0,0,0,0,0,0],不=[0,1,0,0,0,0,0],……,鸟=[0,0,0,0,0,0,1]。

  二是没有体现词语之间的关联性。为了能够在低维向量空间中表示词语,Mikolov提出了Word2vec来实现高效的低维词向量训练方法,它对序列局部数据有着很好的解释。

  Word2vec在千万数量级的词典和上亿的数据集上面进行高效地训练,并且得出词嵌入的结果,可以很好地度量词与词之间的相似性。

  有了大量的诗词语料基础,我们同样可以构建出适合诗词文本的向量表示。在一首包含n个词或者汉字的诗词作品中,wi表示第i个字的向量,那么整首诗词作品可以表示为:P={W1,W2,…,Wn}。

  我们可以用此进行文本分类、新闻推荐、情感分析等工作。也为后期能将文本数据输入到CNN或者RNN以及各种复杂模型做好了充足的准备。同时,该方法对语言进行各种语义组合提供了很大的帮助。

  然而在Word2vec模型中,同一个词是有相同的词向量的,但是在日常生活中,同一个词有着不同的语义,如果用同一组词向量表示具有不同语义的词,则会出现很多不必要的错误。

  对于左侧下方的“川”字来说,它与对应神经元以及由前方传来的信息计算以后得到向量V3,而后V3作为输入通过LSTM预测下一个字,此时就可以将V3当作是“川”这个字的向量,同时,右侧反向也会得到一个相应的向量v3′,将v3和v3′组合起来就得到了这一层中这个字的向量。

  同理,第二层也会得到一组与第一层表示同一个字的向量,于是设置参数a,b使得这个字的向量最终表示为:v=a*v1+b*v2。

  原理分析完毕,然而当时Zhang和Lapata最早应用的RNN模型较为简单,为了提升诗词的连贯性和通顺。

上一篇:中华诗词学会朗诵艺术专业委员会在京成立 下一篇:唐朝的诗歌之所以璀璨竟源于这些西域“瑰宝”