宋词自动生成

article/2025/9/9 8:02:18

利用宋词语料库,通过单双词的组合与模板的匹配,实现指定词牌宋词的生成

import random
import tkinter as tk
import re
from tkinter import messageboxlist = []class Window:# 界面设计def __init__(self, root):label1 = tk.Label(root, text='输入词牌名')label1.place(x=5, y=5)label2 = tk.Label(root, text='宋词生成结果')label2.place(x=5, y=70)self.entryCp = tk.Entry(root)self.entryCp.place(x=120, y=5)self.text = tk.Text(root)self.text.place(y=100)self.get = tk.Button(root, text='生成宋词', command=self.songci)self.get.place(x=120, y=40)exit = tk.Button(root, text="退出程序", command=root.destroy)exit.place(x=200, y=40)# 生成宋词def songci(self):# 获取词牌名name = self.entryCp.get()# 读取源文件file = open('Ci.txt', 'r', encoding='utf-8')for line in file.readlines():line = line.strip()list.append(line)# 匹配索引位置,遇空则继续s = list.index(name) + 1while list[s] == '':s += 1# 去掉分隔符,生成新列表cut = re.split('[,。、]', list[s])newcut = ['' for s in range(len(cut))]for i in range(len(cut)):for j in range(len(cut[i])):if '\u4e00' <= cut[i][j] <= '\u9fa5':newcut[i] += cut[i][j]temp = ''for i in range(len(newcut)):sum = 0n = 1sum = sum + ntemp = temp + str(n)while len(newcut[i]) - sum > 1:# n = random.randint(1, 2)sum = sum + ntemp = temp + str(n)if len(newcut[i]) - sum == 1:temp = temp + str(1) + '/'if len(newcut[i]) - sum == 0:temp = temp + '/'temp = temp[:-1]# 读入单双词语料file1 = open('Ciout1.txt', 'r', encoding='utf-8')file2 = open('Ciout2.txt', 'r', encoding='utf-8')list1, list2 = [], []# 去掉逗号,向新列表中加入元素# 单词line1 = re.split('[(,)]', file1.read())for i in range(int((len(line1) - 1) / 3)):for j in range(int(line1[i * 3 + 2])):list1.append(line1[i * 3 + 1])# 双词line2 = re.split('[(,)]', file2.read())for i in range(int((len(line2) - 1) / 3)):for j in range(int(line2[i * 3 + 2])):list2.append(line2[i * 3 + 1])# 输出内容content = ''for i in temp:if i == '1':content = content + list1[random.randint(0, len(list1) - 1)]elif i == '2':content = content + list2[random.randint(0, len(list2) - 1)]else:content = content + '/'print(content)self.text.insert(tk.END, content)file.close()file1.close()file2.close()root = tk.Tk()
root.title("宋词自动生成器")
root.geometry("350x300+500+250")window = Window(root)
root.minsize(550, 250)
root.mainloop()

实现效果:
在这里插入图片描述在这里插入图片描述


http://chatgpt.dhexx.cn/article/btnKUoLj.shtml

相关文章

基于Python的宋词生成器

资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/85631523 1. 背景 我有两个爱好&#xff0c;一个是传统文化&#xff0c;另一个是高新技术。 传统文化&#xff0c;我喜欢唐诗宋词、笔墨丹青&#xff0c;高新技术我则从事前沿的IT编程&#xff0c;喜…

基于java的古诗词生成管理系统

10161-古诗词生成管理系统 开发工具 eclipse tomact mysql jdk 功能详情&#xff1a; 古诗搜索、古诗问答、机器回复、古诗管理&#xff08;添加古诗、古诗分类、古诗标签、古诗列表&#xff09;、用户管理

田字格字帖生成器、孩子取名系列工具

大家好&#xff0c;我是小寻&#xff0c;欢迎关注公众号:工具优选&#xff0c;免费领取优质项目源码和常用工具&#xff0c;还可以加入我的交流群! 这是是一款2013年上线的在线小工具集&#xff0c;包括了 13 款中文学习工具&#xff0c;有田字格字帖、拼音田字格、古诗词字帖…

有趣的深度学习——使用TensorFlow 2.0 + RNN 实现一个古体诗生成器

一、前言 很早之前&#xff0c;我曾经写过一个古体诗生成器&#xff08;详情可以戳TensorFlow练手项目二&#xff1a;基于循环神经网络(RNN)的古诗生成器&#xff09;&#xff0c;那个时候用的还是Python 2.7和TensorFlow 1.4。 随着框架的迭代&#xff0c;API 的变更&#x…

现在还可以一键自动生成古诗词,你知道吗?

人类在漫长的历史长河中&#xff0c;一直在探索着各种各样的美好&#xff0c;不断地追求着更高的境界。而如今&#xff0c;随着科技的不断发展&#xff0c;人工智能已经成为了我们得力的伙伴之一&#xff0c;为我们带来了更多的便利和可能性。尤其是在艺术和文化领域&#xff0…

古诗词在线起名 - 一刀工具箱

古诗词名字生成器帮助你在线生成古诗词名字&#xff0c;包含&#xff1a;诗经、楚辞、唐诗、宋词、辞赋等古风的名字&#xff0c;这些名字都非常的优美好听&#xff0c;希望你们能够喜欢这款古诗词起名工具。 代码片段 async subName() {let name_arr Object.keys(this.userN…

NLP入门 - 基于Word Embedding + LSTM的古诗生成器

一共实现三个功能&#xff1a; 1. 续写五言诗 2. 续写七言诗 3. 写五言藏头诗 之前用这个做Intro to Computer Science的期末项目折腾太久&#xff0c;不想赘述&#xff0c;内容介绍及实现方法可参考期末presentation的slides&#xff1a; https://docs.google.com/presen…

基于古诗词的名字生成器

数据集 因为数据量庞大&#xff0c;使用本地的 CSV 数据进行测试。 后续改进 CSV 文件保存到 mongodb 数据库&#xff0c;便于聚合查询。 数据分词 我们需要一个分词器将这些数据进行分词&#xff0c;用到的是 Golang 版的 jieba 库如下&#xff1a; "github.com/go-e…

基于LSTM + keras 的古诗生成器

1.语料准备&#xff1a;包含 5.5 万首唐诗、26 万首宋诗、2.1 万首宋词和其他古典文集。诗人包括唐宋两朝近 1.4 万古诗人&#xff0c;和两宋时期 1.5 千古词人。数据来源于互联网。每行一首诗&#xff0c;标题在预处理的时候已经去掉了。2.模型参数配置&#xff1a;预先定义模…

唐诗生成器

使用唐诗语料库&#xff0c;经过去噪预处理、分词、生成搭配、生成主题等过程&#xff0c;生成唐诗。 csdn下载地址&#xff1a;http://download.csdn.net/detail/lijiancheng0614/9840952 github上repository地址&#xff1a;https://github.com/lijiancheng0614/poem_genera…

JQuery中的val()函数

JQuery中的val()函数相当于Javascript中的value属性&#xff0c;可以用来设置和获取元素的值。 下面用一个简单的邮箱登陆界面来举个例子&#xff1a; 在默认情况下邮箱的地址输入框和密码输入框都有相应的提示。 要求&#xff1a;当鼠标聚焦在邮箱地址输入框时&#xff0c;提…

【Python】sklearn中的cross_val_score()函数参数

sklearn 中的cross_val_score函数可以用来进行交叉验证&#xff0c;因此十分常用&#xff0c;这里介绍这个函数的参数含义。 sklearn.cross_validation.cross_val_score(estimator, X, yNone, scoringNone, cvNone, n_jobs1, verbose0, fit_paramsNone, pre_dispatch‘2*n_job…

sklearn交叉验证函数cross_val_score用法及参数解释

文章目录 一 、使用示例二、参数含义三、常见的scoring取值1.分类、回归和聚类scoring参数选择2.f1_micro和f1_macro区别3.负均方误差和均方误差 一 、使用示例 import numpy as np from sklearn.model_selection import train_test_split from sklearn import svm from sklea…

java val_Java中是否有val()函数?

慕尼黑的夜晚无繁华 很少有实际用例能够评估String作为Java代码的一个片段是必要的或可取的。也就是说&#xff0c;询问如何做到这一点实际上是XY问题&#xff1a;你实际上有一个不同的问题&#xff0c;可以用不同的方法来解决。先问问自己&#xff0c;这是怎么回事String你想要…

c语言val函数用法,函数VAL()什么意思怎么用啊?/

满意答案 Dickyshe 2013.03.22 采纳率&#xff1a;50% 等级&#xff1a;12 已帮助&#xff1a;12551人 将一个数据行变量转换成数字长整型变量如 text1.text "10" text2.text "11" text3.text text1.texttext2.text 按道理应该得到10&#xff0b;11(…

mysql中val是什么意思_val是什么函数

val是将由数字符号组成的字符型数据转换成相应的数值型数据的函数&#xff0c;其语法是“Val(S,V,Code)”&#xff0c;若字符串内出现非数字字符&#xff0c;那么只转换非数字字符前面的部分&#xff1b;若字符串的首字符不是数字符号&#xff0c;则返回数值零&#xff0c;但忽…

抽象方法的访问修饰符

抽象方法不能使用private修饰符&#xff0c;也不宜使用默认修饰符&#xff08;default&#xff09; &#xff08;1&#xff09;如果使用private修饰符 public abstract class SuperClass {/** The abstract method test in type SuperClass can only set a visibility modifi…

Java之访问修饰符

1.访问修饰符 java提供四种访问修饰符&#xff0c;用于控制方法和属性&#xff08;成员变量&#xff09;的访问权限 四种分别是 公开级别&#xff1a;public&#xff0c;对外公开 受保护级别&#xff1a;protected&#xff0c;对子类和同一个包的类公开 默认级别&#xff…

Java-访问修饰符

目录 一、private(私有权限) 二、default(默认权限) 三、protected(受保护权限) ​四、public(公共权限) 五、总结 示意图 private(default)protectedpublic本类YesYesYesYes同包的类NoYesYesYes不同包的父子关系NoNoYesYes不同包的非父子关系NoNoNoYes 注意点&#xf…