微软对联服务器关闭了吗,【第2编辑室】不知道你有没有玩过“微软对联”,现在他们又推出了“微软绝句”...

“日出江花红胜火”是白居易回忆江南美景的词作《忆江南》中的句子,如果你还记得这首词,应该知道下一句是“春来江水绿如蓝”。对仗工整,意境也美,顺利成章就引出了“能不忆江南?”的感概。

如果这不是一首词,而是一副对联,用下面的句子你觉得怎样呢?日出江花红胜火,

月明春水绿如烟。

对仗同样工整,只不过意境上变得没有那么生机盎然了。但是,如果这是由计算机自动生成的,你会不会对它宽容许多呢?

实际上,这正是微软亚洲研究院自然语言计算组研发的计算机自动对联系统,输入不超过10个字的上联,无论是用户自拟的文字,还是古诗名句,系统都能自动提供若干下联供用户选择。而早在2008年,这个系统就问世了,当时大家就进行了各种调戏,“火车失火,救火车救火车”,对联系统也能给出“路人挡路,赶路人赶路人”的佳句。

而就在上个月,微软亚洲研究院自然语言计算组对这个系统又进行了升级,加入了“律诗绝句”的功能。用户可以选择五言诗句或七言诗句,同样可以自行创作,或者填上古诗名句。我同样以“日出江花红胜火”为开头,勉强凑出了这么一首“诗”:a1d2cc710f0cffb280f95ab05ce40c92.png

除此之外,你还可以选择主题词,不同的主题词下,系统对应的下句也完全不同。主题词分类包括丽人类、仕宦类、君道类等等,每个分类下又对应小的分类,例如仕宦类之下,又细分为仕宦、贵显、放逐、门第等小的分类。

微软微软亚洲研究院自然语言计算组介绍,当前绝句生成使用的主题词来源于清代学者刘文蔚创作的《诗学含英》一书,包含了二级分类,收集了《声韵启蒙》、《训蒙骈句》、《笠翁对韵》三本训练对偶技巧和声韵格律的工具书,包含若干主题,例如天文、时令、节序、地舆、楼馆、人伦、文学、游眺、饮食、器用、花草、竹木、飞禽、走兽等,对常见的古体诗有很好的覆盖,用户在作诗的过程中可以在这些类中选择主题。ee491883ec425f670e67942163810586.png

试想一下,如果在古代,私塾的小朋友有了这等“神器”,作对吟诗简直不在话下。我想起了周星驰电影《唐伯虎点秋香》里唐伯虎和“对王之王”对穿肠的一番激战,可惜的是这些对联的上下联基本都超过了10个字,只能尝试下最短的一副对联:26e38f0ce5ca2f30d96cff759a2a898f.png

微软对联洋洋洒洒立刻对出了30个下联。看来如果我们穿越回去,足以叫“对王之王”吐血三十升。0059c522f6357589d57f25d913648cd6.png

不知道有没有激起你的创作欲望?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,首先我们需要安装一些必要的库,包括tkinter、jieba和gensim。如果您还没有安装这些库,可以使用以下命令进行安装: ``` pip install tkinter jieba gensim ``` 接下来,我们可以编写一个简单的界面,让用户输入对联上联: ```python import tkinter as tk window = tk.Tk() window.title("自动生成对联") window.geometry("300x150") label = tk.Label(window, text="请输入对联上联:") label.pack() entry = tk.Entry(window, width=30) entry.pack() def generate(): # TODO: 生成对联下联 pass button = tk.Button(window, text="生成对联", command=generate) button.pack() window.mainloop() ``` 现在,我们可以在generate函数中编写代码来生成对联下联。我们可以使用jieba分词和gensim的Word2Vec模型来生成下联。以下是代码示例: ```python import tkinter as tk import jieba from gensim.models import Word2Vec window = tk.Tk() window.title("自动生成对联") window.geometry("300x150") label = tk.Label(window, text="请输入对联上联:") label.pack() entry = tk.Entry(window, width=30) entry.pack() def generate(): # 加载预训练Word2Vec模型 model = Word2Vec.load("word2vec.model") # 对上联进行分词 words = jieba.lcut(entry.get()) # 随机选择一个词 target_word = words[-1] # 生成下联 try: similar_words = model.most_similar(target_word) for word, similarity in similar_words: if word != target_word and len(word) == len(target_word): result = "".join(words[:-1]) + word break except: result = "对不起,生成失败,请重试" # 显示下联 result_label.config(text=result) button = tk.Button(window, text="生成对联", command=generate) button.pack() result_label = tk.Label(window, text="") result_label.pack() window.mainloop() ``` 以上代码会读取预训练的Word2Vec模型来生成对联下联。需要注意的是,预训练的模型需要提前准备好,可以使用gensim库来训练。在这里,我们使用了一个已经训练好的模型,保存在名为“word2vec.model”的文件中。如果您没有预训练好的模型,可以使用以下代码训练一个模型: ```python from gensim.models import Word2Vec # 读取语料库 sentences = [] with open("corpus.txt", "r", encoding="utf-8") as f: for line in f: sentences.append(line.strip().split()) # 训练Word2Vec模型 model = Word2Vec(sentences, size=100, window=5, min_count=5) model.save("word2vec.model") ``` 其中,“corpus.txt”是您的语料库文件。训练好的模型可以使用`model.save()`方法进行保存,以便后续使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值