python编写程序输出诗句_python基于词向量的古诗生成器
python基于词向量的古诗生成器
from gensim.models import Word2Vec # 词向量
from random import choice
from os.path import exists
import warnings
warnings.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):
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)):
similar_chr = self.model.similar_by_word(title[-1], self.topn // 2)
similar_chr = filter(similar_chr)
char = choice([c for c in similar_chr if c not in title])
title += char
# 文本生成
poem = list(title)
for i in range(form[0]):
for _ in range(form[1]):
predict_chr = self.model.predict_output_word(
poem[-self.window:], max(self.topn, len(poem) + 1))
predict_chr = filter(predict_chr)
char = choice([c for c in predict_chr if c not in poem[len(title):]])
poem.append(char)
poem.append(',' if i % 2 == 0 else '。')
length = form[0] * (form[1] + 1)
return '《%s》' % ''.join(poem[:-length]) + '\n' + ''.join(poem[-length:])
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()
PS:源码、word2vec和古诗词.txt文件将在Github上提供下载。
2018年5月1日
标签:poem,title,python,self,生成器,chr,古诗,model,config
来源: https://blog.csdn.net/weixin_43907422/article/details/89738097
python编写程序输出诗句_python基于词向量的古诗生成器相关推荐
- python编写程序输出诗句_Python一日一练02----诗词生成器
要求 编写一段程序,可以自动生成小诗. 格式如下 源码 import random import sys articles = ["the", "a", &qu ...
- python编写程序输出诗句_Python学习笔记(一)-- print语句
print语句可以向屏幕上输出指定的文字.比如输出'hello, world',用代码实现如下: >>> print 'hello, world' 注意: 1.当我们在Python交 ...
- python编写程序输出诗句_Python文本处理简介:44行代码编写一个简单的隐藏诗生成器,python,入门,藏头诗...
想必最近大家家庭群里最近都会看到这么一张图: 一惊,这什么玩意儿???后来一搜会发现里面不同的诗句来自于不同的古诗,嘛,这不是很好玩的一件事情吗?这次我们使用Github的唐诗宋词dataset:ht ...
- python基于词向量的古诗生成器
python基于词向量的古诗生成器 from gensim.models import Word2Vec # 词向量 from random import choice from os.path im ...
- python编写程序输出诗句_闲来无事能干嘛 用Python来玩诗歌接龙
闲来无事能干嘛 用Python来玩诗歌接龙 作为一个懂Python爬虫的运维狗,闲来无事的时候总要找点乐子(睡觉不香么),哈哈,就是这么的敬业(其实是无聊).今天网盾科技给大家讲讲怎么用Python爬 ...
- python编写程序输出诗句_RPA交流——使用 python 写出诗一样的代码 (一)
原标题:RPA交流--使用 python 写出诗一样的代码 (一) 下载RPA请访问:www.i-search.com.cn 学习RPA请访问:https://support.i-search.com ...
- python编写程序输出诗句_编程小白是这样用python把唐诗玩坏的
最近对编程比较感兴趣,于是请教程序猿朋友们,最后都推荐我学习Python.翻看教程几天后,碰巧遇到有朋友在玩唐诗乱搭的游戏,于是我就写了一段python程序(对于能否叫程序我一直很怀疑),挑了了很多的 ...
- python编写程序接收字符串_Python字符串操作
a = 'Hello' b = 'Python' 一.字符串运算符 1.字符串连接(+) '字符串1' + '字符串2' >>>print(a + b) HelloPython 2. ...
- 怎么用python编写程序计算标准差_python 标准差计算的实现(std)
numpy.std() 求标准差的时候默认是除以 n 的,即是有偏的,np.std无偏样本标准差方式为加入参数 ddof = 1: pandas.std() 默认是除以n-1 的,即是无偏的,如果想和 ...
- python编写程序输出斐波那契数列的前20项_C语言 写程序,输出斐波那契数列的前20项,每行输出4个数...
展开全部 方法一for循环 publicclassFeiBoMethod{ 定义三个变量方法 publicstaticvoidmain(String[]args){ inta=1,b=1,c=0: S ...
最新文章
- TensorFlow人工智能引擎入门教程之十 最强网络 RSNN深度残差网络 平均准确率96-99%
- 计算机网络 物理层链路层
- OVS DPDK vhost-user详解(十一)
- iOS之深入解析App启动dyld加载流程的底层原理
- php 正则表达式验证金额,php 正则表达式验证数字
- html字符实体标签语法,HTML字符实体与文本格式化标签
- 转 docker 部署 kafka
- echarts画中国地图!
- Python学习 资料[转]
- java7 新特性官方介绍_java7 新特性 总结版
- ws2812 c语言程序,STC15单片机驱动WS2812B七彩LED(汇编混合编程)
- WPS简历模板的图标怎么修改_简历无话可说怎么办?复试、调剂简历模板分享!...
- meta分析 2. 固定效应和随机效应
- 全国计算机二级重难点,计算机二级office重难点.doc
- 伊利诺伊香槟大学计算机专业排名,伊利诺伊大学香槟分校专业排名一览及最强专业推荐(QS世界大学排名)...
- xbox360 IX1.60 引导盘制作
- Elasticsearch 7.10 之 Indexing pressure
- 常用荧光染料的激发和发射波长
- 每日新闻:今日头条正式发布小程序;甲骨文云服务营收未达预期
- GITHUB实用有趣工具推荐
热门文章
- 新仙剑奇侠传完美攻略
- 问:舵机可以作为智能小车的驱动轮吗
- 41、财务总账科目余额表,三栏式总账,三栏式明细账 查询条件科目增加多选查询
- C# chart实时曲线
- 将论文奇数页与偶数页页眉添加不同的下划线
- eclipse的复活
- 实操:将C盘用户配置文件移动到非系统盘(windows10系统)
- win10怎么更改c盘用户计算机名,详解win10系统更改c盘用户名文件夹名称的设置技巧...
- 蜡笔小新模拟器汉化版_蜡笔小新历险记PC电脑版-蜡笔小新历险记电脑版下载v1.12.20 官方最新版-西西软件下载...
- 丽江,清晨的小巷在哭泣