Python程序写诗【训练1分钟】古诗生成

原创AI程序写诗:训练 一分钟,诗词一秒成!
先看看写出来什么诗~
在这里插入图片描述

来看看程序

from gensim.models import Word2Vec  # 词向量
from random import choice
from os.path import exists
from warnings import filterwarnings
filterwarnings('ignore')  # 不打印警告


class CONF:
    path = '古诗词.txt'  # 语料路径
    window = 16  # 滑窗大小
    min_count = 60  # 过滤低频字
    size = 125  # 词向量维度
    topn = 14  # 生成诗词的开放度
    model_path = 'word2vec'  # 模型路径


class Model:
    def __init__(self, window, topn, model):
        self.window = window
        self.topn = topn
        self.model = model  # 词向量模型
        self.chr_dict = model.wv.index2word  # 字典

    """模型初始化"""
    @classmethod
    def initialize(cls, config):
        if exists(config.model_path):
            # 模型读取
            model = Word2Vec.load(config.model_path)
        else:
            # 语料读取
            with open(config.path, encoding='utf-8') as f:
                ls_of_ls_of_c = [list(line.strip()) for line in f]
            # 模型训练和保存
            model = Word2Vec(ls_of_ls_of_c, config.size,
                             window=config.window, min_count=config.min_count)
            model.save(config.model_path)
        return cls(config.window, config.topn, model)

    """古诗词生成"""
    def poem_generator(self, title, form):
        # list_of_tuples --> list_of_strings 并过滤标点符号
        filter = lambda lst: [t[0] for t in lst if t[0] not in [',', '。']]
        # 标题补全
        if len(title) < 4:
            if not title:
                title += choice(self.chr_dict)
            for _ in range(4 - len(title)):
                chrs = self.model.similar_by_word(title[-1], self.topn // 2)
                chrs = filter(chrs)
                char = choice([c for c in chrs if c not in title])
                title += char
        # 文本生成
        seq = list(title)
        for i in range(form[0]):
            for _ in range(form[1]):
                chrs = self.model.predict_output_word(
                    seq[-self.window:], max(self.topn, len(seq) + 1))
                chrs = filter(chrs)
                char = choice([c for c in chrs if c not in seq[len(title):]])
                seq.append(char)
            seq.append(',' if i % 2 == 0 else '。')
        # 返回标题+主体
        length = form[0] * (form[1] + 1)
        title = '《%s》' % ''.join(seq[:-length])
        poem = ''.join(seq[-length:])
        return title + '\n' + poem


def main(config=CONF):
    form = {'五言绝句': (4, 5), '七言绝句': (4, 7), '对联': (2, 9)}
    m = Model.initialize(config)
    while True:
        title = input('输入标题:').strip()
        try:
            poem = m.poem_generator(title, form['五言绝句'])
            print('\033[031m%s\033[0m' % poem)  # red
            poem = m.poem_generator(title, form['七言绝句'])
            print('\033[033m%s\033[0m' % poem)  # yellow
            poem = m.poem_generator(title, form['对联'])
            print('\033[036m%s\033[0m' % poem)  # purple
            print()
        except:
            pass


if __name__ == '__main__':
    main()

语料下载地址

https://gitee.com/arye/dl/tree/master/NLP/gensim%E6%96%87%E6%9C%AC%E7%94%9F%E6%88%90

关于程序的一些基础

猛戳→gensim词向量基础

更多诗词创作

山水田园

在这里插入图片描述
在这里插入图片描述

宫廷

在这里插入图片描述

别塞战争

在这里插入图片描述

抒情

在这里插入图片描述
在这里插入图片描述

春节

在这里插入图片描述

### 回答1: 很高兴为您服务!Python程序可以用来将一首古诗加上拼音。您可以使用Python内置的拼音库,如pypinyin、snowpinyin等,来实现这一目的。您也可以使用拼音转换器,比如搜狗拼音、百度拼音等,自动将古诗转换为拼音。 ### 回答2: Python程序古诗加拼音是通过利用Python代码编写一个自动加拼音的程序,使得输入的古诗文本能够自动添加对应的汉语拼音。这样可以方便读者更好地理解和朗读古诗。 要实现这个功能,首先需要使用Python的文本处理库,如jieba和pypinyin来切分诗句并将汉字转换为相应的拼音。 1. 使用jieba库对古诗进行分词,将每个汉字分开,并形成一个词的列表。 2. 使用pypinyin库将每个词转换成拼音。 3. 将转换后的拼音与原始的古诗文本进行合并,生成一个带有拼音的古诗文本。 4. 输出带有拼音的古诗文本,以便读者更好地理解和朗读古诗。 这个程序可以应用在很多不同的场景中,比如电子书、学习教材、文化活动等方面。通过为古诗添加拼音,可以帮助读者更好地理解诗歌的意境和韵律,也让古诗更加易读与传播。 总之,Python程序可以很好地实现为古诗加拼音的功能,通过使用jieba和pypinyin这两个文本处理库,我们可以方便地将古诗转换为带有拼音的文本,从而提供更好的古诗阅读体验。 ### 回答3: Python程序可以通过使用拼音库,为古诗添加拼音。拼音库通常包含拼音字典和转换函数。 首先,我们需要导入拼音库,并加载拼音字典。可以使用Python的pip包管理器来安装拼音库,例如pypinyin。 接下来,我们需要读取古诗的文本文件,并将每一行文本提取出来。可以使用Python的文件操作函数来读取文件内容,并使用字符串操作函数将文本分割为行。 在处理每一行文本之前,我们可以使用正则表达式或字符串操作函数来去除特殊符号、空格和换行符等干扰因素。 然后,我们可以遍历每一行文本,并使用拼音库的转换函数将每个汉字转换为对应的拼音。转换函数通常可以指定拼音输出的格式,例如使用带声调的拼音或数字表示声调。 最后,我们可以将转换后的拼音与原始文本进行组合,并将结果写入新的文本文件或输出到控制台上。 通过上述步骤,我们可以使用Python程序古诗添加拼音。这使得读者在阅读古诗时可以更好地理解每个字的发音,提高对古诗的欣赏和理解程度。
评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值