Keras—AI写诗

该博客介绍了如何用Keras结合LSTM模型处理中文文本,通过jieba分词和one-hot编码进行数据预处理,建立神经网络模型进行古诗生成。文章详细阐述了数据读入与分词、词索引的生成、神经网络模型构建以及训练数据的处理过程。
摘要由CSDN通过智能技术生成

Keras—AI写诗

LSTM、 中文文本生成、jieba分词、one-hot编码

数据库下载自:基于PaddlePaddle框架利用RNN(循环神经网络)生成古诗句
代码参考:deep-learning-with-python

一、数据处理

1)中文文本,txt格式,使用jieba库分词的的结果进行one-hot编码。
2)需要将原始文本所有的标点符号替换为空格。每一行不能以空格开头

1、文本数据读入与分词

1)读入 .txt 格式的训练数据,并进行分词。
2)以分行符为标准将分词结果整理为一个二维数组。

import jieba

# 读取原始文本
file_src = open("../../poetrys.txt", "r", encoding="utf-8")

file_txt = file_src.read()
file_src.close()
# 使用jieba分词
file_word = jieba.lcut(file_txt)
del file_txt

# 对文本进行整理,使用samples存储所有的词语,每一句作为一个独立元素
# 以'\n'作为断句标准
samples = []
sentence = []
length_text = 0         # 记录总的词语数量
for word in file_word:
    if word == ' ':
        continue;
    else:
        if word == '\n':
            samples.append(sentence)
            sentence = []
        else:
            length_text = length_text + 1
            sentence.append(word)
del file_word
print("总词数:", length_text)
2、生成词索引

1)建立字典,为每个独立的词语建立一个唯一的索引值。注:由于此处所使用数据由原作者处理为了每个字之间都有空格,因此在此的jieba分词结果也是每个字独立的,所以实际上是基于字的文本生成,而非基于词语的文本生成
2)建立训练数据集、预测数据集。其中seq_length为训练数据集每一组所有的词语数,step为隔step个词语采样一个新的序列。如,有数据 “路 漫 漫 其 修 远 兮 吾 将 上 下 而 求 索”,建立的数据集为:

sentences next_words
路 漫 漫 其 修 远 兮
漫 其 修 远 兮 吾 将
修 远 兮 吾 将 上 下
兮 吾 将 上 下 而 求
# 为文本中所有词语设置索引
token_index = {
   }

# 数据整形,将文本整形为7个词为一个序列的形式,方便作为输入
step = 2            # 每隔一个词组采样一个新序列
seq_length = 7      # 7个词语为一个序列
sentences = []      # 训练数据集
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值