使用LSTM进行诗歌创作(pytorch版本)

数据集来源:GitHub - chinese-poetry/chinese-poetry: The most comprehensive database of Chinese poetry 🧶最全中华古诗词数据库, 唐宋两朝近一万四千古诗人, 接近5.5万首唐诗加26万宋诗. 两宋时期1564位词人,21050首词。

 这里仅仅选用了其中的唐诗部分进行训练:chinese-poetry/全唐诗/

原始数据:

在原始数据中包含作者,内容,标题,id四个部分,这里使用内容进行训练

 

 数据预处理

首先将所有唐诗的诗句合并成一个长文本

import numpy as np
import json
import torch
import os
import pkuseg


# 读取 json 文件
def get_json(path):
    with open(path, 'r', encoding='utf-8') as f:
        data = json.load(f)
    return data

# 对 ./tang/ 文件夹下的所有 json 文件进行遍历
# 获取文件夹下的所有文件名
def get_file_name(path):
    file_name = []
    for root, dirs, files in os.walk(path):
        for file in files:
            file_name.append(file)
    return file_name


file_name_ls = get_file_name('./tang/')

ret_ls = []

for file_name in file_name_ls:
    ls = get_json('./tang/' + file_name)
    n_ls = len(ls)

    for i in range(n_ls):
        para = ls[i]['paragraphs']
        para = ''.join(para)
        ret_ls.append(para)

n_poet = len(ret_ls)  # 一共 57607 首诗歌
# 全部合并成一个 string
str_all = ''.join(ret_ls)

接着对其分词,我这里里使用了torchtext库,在代码中使用了collections.Countertorchtext.vocab.Vocab来构建中文字符级别的词汇表,并将文本转换为整数序列。

在这段代码中,首先定义了一个字符级别的分词器chinese_char_tokenizer,它将文本拆分为单个字符。接下来,使用该分词器对所有文本进行分词处理,并使用Counter统计

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值