如何用textgenrnn处理中文

1. 什么是textgenrnn?

textgenrnn是建立在Keras和TensorFlow之上的,可用于生成字级别词级别文本。网络体系结构使用注意力加权来加速训练过程并提高质量,并允许调整大量超参数,如RNN模型大小、RNN层和双向RNN。对细节感兴趣的读者,可以在Github上或类似的介绍博客文章中阅读有关textgenrnn及其功能和体系结构的更多信息。

Github项目地址: https://github.com/minimaxir/textgenrnn

介绍博客(英文原版): Generating Text with RNNs in 4 Lines of Code

介绍博客(中文简译): 仅用四行代码实现RNN文本生成模型

该Github项目的README以及各介绍博客中,都是基于英文文本进行处理的,少有文章介绍如何将textgenrnn应用到中文文本,所以我fork了原项目并添加了中文数据的训练与测试Demo,详见: https://github.com/cheesezh/textgenrnn

2. 如何用textgenrnn处理中文?

2.1. 准备中文数据

本文采用2600首与相关的五言诗作为训练数据。部分数据示例:

春眠不觉晓,处处闻啼鸟。夜来风雨声,花落知多少。
慈母手中线,游子身上衣。谁言寸草心,报得三春晖。
好雨知时节,当春乃发生。晓看红湿处,花重锦官城。
红豆生南国,春来发几枝。愿君多采撷,此物最相思。
国破山河在,城春草木深。白头搔更短,浑欲不胜簪。

可以在我的Github上边下载本文实验数据:与“春”相关的五言诗与“春”相关的七言诗

2.2. 训练模型

from textgenrnn import textgenrnn
textgen = textgenrnn(name="my.poem") # 给模型起个名字,比如`my.poem`, 之后生成的模型文件都会以这个名字为前缀
textgen.reset() # 重置模型
textgen.train_from_file( # 从数据文件训练模型
file_path = '../datasets/cn/5_chars_poem_2600.txt', # 文件路径
new_model = True, # 训练新模型
num_epochs = 30, # 训练轮数
word_level = False, # True:词级别,False:字级别
rnn_bidirectional = True, # 是否使用Bi-LSTM
max_length = 25, # 一条数据的最大长度
)

还有其他的模型参数可以配置,主要包括以下几项:

config = {
'rnn_layers': 2,
'rnn_size': 128,
'rnn_bidirectional': False,
'max_length': 15,
'max_words': 10000,
'dim_embeddings': 100,
'word_level': False,
'single_text': False
}

2.3. 生成数据

from textgenrnn import textgenrnn

textgen = textgenrnn(
name="poem",
weights_path='./poem_weights.hdf5',
config_path='./poem_config.json',
vocab_path='./poem_vocab.json'
)
textgen.generate(20, temperature=1.0)

生成数据样例:

傍海皆荒服,分符重汉臣。连年不见雪,到处即行春。

上喜老闲身,春来不得迷。章闲闲异意,亦随到情诗。

湖上花开尽,初度莫愁春。俗书百胜境,无哲老离秋。

三月小春来,闲人惊物华。且问听下意,多事翦彩光。

居春心在别,多是梅庭空。水梅人一梦,愁。场言诚微。成手。

南国无多雪,江春别离肠。非离菘楼畔,不殊问来花。

田家春事起,丁壮就东坡。予意在耕稼,因君问土宜。

春偏当春日,当桥如草心。如如如青我,当人有思生。

早春遥闻好,风晚景和。放诗此东方来,惟是日有情。

閒花淡心事,不作柳春枝。幸见散花里,何声满尔闻。

傍海皆荒服,分符重汉臣。连年不见雪,到处即行春。

子知千里,何年草旧居。遥知春还后日,何处二三难。

从生成的五言诗数据来看,大部分诗看上去还是比较正常的,但是也有一些不合理的数据,比如:

居春心在别,多是梅庭空。水梅人一梦,愁。场言诚微。成手。

子知千里,何年草旧居。遥知春还后日,何处二三难。

春偏当春日,当桥如草心。如如如青我,当人有思生。

【ZH奶酪】如何用textgenrnn处理中文的更多相关文章

  1. ZH奶酪:Ubuntu 14.04配置LAMP(Linux、Apache、MySQL、PHP)

    ZH奶酪:Ubuntu 14.04安装LAMP(Linux,Apache,MySQL,PHP) 之前已经介绍过LAMP的安装,这边文章主要讲解一下LAMP的配置. 1.配置Apache (1)调整Ke ...

  2. 【ZH奶酪】如何用sklearn计算中文文本TF-IDF?

    1. 什么是TF-IDF tf-idf(英语:term frequency–inverse document frequency)是一种用于信息检索与文本挖掘的常用加权技术.tf-idf是一种统计方法 ...

  3. ZH奶酪:中文依存句法分析概述及应用

    句法分析是自然语言处理领域的一个关键问题,如能将其有效解决,一方面,可对相应树库构建体系的正确性和完善性进行验证;另一方面,也可直接服务于各种上层应用,比如搜索引擎用户日志分析和关键词识别,比如信息抽 ...

  4. 【ZH奶酪】如何用Python计算最长公共子序列和最长公共子串

    1. 什么是最长公共子序列?什么是最长公共子串? 1.1. 最长公共子序列(Longest-Common-Subsequences,LCS) 最长公共子序列(Longest-Common-Subseq ...

  5. 【ZH奶酪】如何用Python实现编辑距离?

    1. 什么是编辑距离? 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符, ...

  6. ZH奶酪:Ionic中(弹出式窗口)的$ionicModal使用方法

    Ionic中[弹出式窗口]有两种(如下图所示),$ionicModal和$ionicPopup; $ionicModal是完整的页面: $ionicPopup是(Dialog)对话框样式的,直接用Ja ...

  7. ZH奶酪:LAMP环境中如何重新部署一个Yii2.0 web项目

    使用Yii2.0 framework开发的项目,使用Github进行版本控制,现在要把这个项目部署到一个新的电脑/系统中: (1)安装LAMP (2)在/var/www/html目录下执行 git c ...

  8. ZH奶酪:哈工大LTP云平台标记含义及性能

    从官网搬过来的 囧rz 哈工大讯飞语言云 由哈工大 和科大讯飞 联合研发的中文自然语言处理云服务平台.结合了哈工大“语言技术平台——LTP” 高效.精准的自然语言处理核心技术和讯飞公司在全国性大规模云 ...

  9. ZH奶酪:PHP图片压缩(TinyPNG在线API)和(使用Imagick扩展)

    1.调用TinyPng网站提供的API 1.1.须知 (1)tinypng的官网:https://tinypng.com/ 不知道国内访问会不会很慢,在Singapore打开这个网站很流畅: (2)A ...

随机推荐

  1. sharding-jdbc结合mybatis实现分库分表功能

    最近忙于项目已经好久几天没写博客了,前2篇文章我给大家介绍了搭建基础springMvc+mybatis的maven工程,这个简单框架已经可以对付一般的小型项目.但是我们实际项目中会碰到很多复杂的场景, ...

  2. bootstrap改变上传文件按钮样式,并显示已上传文件名

    参考博文: html中,文件上传时使用的<input type="file">的样式自定义 html中<input type="file"&g ...

  3. 【深入spring】IoC容器的实现

    本文乃学习整理参考而来 IoC概述: 在spring中,IoC容器实现了依赖控制反转,它可以再对象生成或初始化时直接将数据注入到对象中,也可以通过将对象引用注入到对象数据域中的方式来注入方法调用的依赖 ...

  4. 4.Django|ORM模型层

    ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...

  5. 004 Spark中的local模式的配置以及测试

    一:介绍 1.Spark的模式 Local:本地运行模式,主要用于开发.测试 Standalone:使用Spark自带的资源管理框架运行Spark程序,30%左右 Yarn: 将spark应用程序运行 ...

  6. 文件流 io.StringIo()

    import io f = io.StringIO() f.write("") f.getvalue() f.close 二进制 f = io.Bytesio()

  7. MAC OS X下配置PHP开发、调试环境

    操作系统:MAC OS X 工具:MAMP.PhpStorm.xdebug.chrome 1.下载MAMP 2.安装比较简单,安装完成后,应用程序中会增加如下4个应用 MacGDBp是PHP调试器,使 ...

  8. poj2184 Cow Exhibition【01背包】+【负数处理】+(求两个变量的和最大)

    题目链接:https://vjudge.net/contest/103424#problem/G 题目大意: 给出N头牛,每头牛都有智力值和幽默感,然后,这个题目最奇葩的地方是,它们居然可以是负数!! ...

  9. 多线程学习笔记九之ThreadLocal

    目录 多线程学习笔记九之ThreadLocal 简介 类结构 源码分析 ThreadLocalMap set(T value) get() remove() 为什么ThreadLocalMap的键是W ...

  10. nodejs那些事儿

    http://www.nodeclass.com/ https://cnodejs.org/ 当前版本,v6.11.2 安装node时,牵扯features的选择,在不了解的情况下,我选择了第1个.网 ...