1.项目背景:
对联,又称对偶、门对、春贴、春联、对子、楹联等,是写在纸、布上或刻在竹子、木头、柱子上的对偶语句。对联对仗工整,平仄协调,是一字一音的汉语独特的艺术形式。对联是中国传统文化瑰宝。当代,对联也经历了创新和变革。 人们以网络为媒介,发挥创意和智慧,创作出既有韵味又充满深意的对联。 例如,上联“小偷偷偷偷东西”引发了网友们的创意,他们纷纷提供了下联,如“大网网网网鱼虾”,勾画出渔民的日常生活画面。 这种创新使对联文化更加丰富多彩,也为每个春节增添了一份独特的乐趣。
2.项目简介:
项目基于Transformer模型训练了一个自动对下联的模型,即你出上联,模型预测并给出下联,如下:
上联: <start>门迎春夏秋冬福<end>
真实的下联: <start>户纳东西南北福<end>
预测的下联: <start> 家 聚 五 湖 四 海 喜<end>
上联: <start>风弦未拨心先乱<end>
真实的下联: <start>夜幕已沉梦更闲<end>
预测的下联: <start> 月 影 犹 怜 梦 已 空 <end>
3.环境信息:
- paddle系列:组装数据集、搭建模型框架
- numpy: NumPy (Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库
- functools:主要使用partial,用于数据集的构建工作
- random: 随机函数库
- matplotlib.pyplot:画图使用
- tqdm: 绘制进度条
-
Python:3.7.4
import paddle
import paddlenlp
import tqdm
import numpy as np
import string
import random
import matplotlib.pyplot as plt from functools
import partial
4.数据集 :
使用的数据集地址:【NLP】对联数据集_数据集-飞桨AI Studio星河社区 (baidu.com)https://aistudio.baidu.com/datasetdetail/110057/1
5.加载数据集:
data_in_path="/home/aistudio/data/data110057/fixed_couplets_in.txt" # 上联路径
data_out_path="/home/aistudio/data/data110057/fixed_couplets_out.txt" # 下联路径
- data_in_path和data_out_path这两个变量分别存储了上联和下联文件的路径。这些文件包含了对联的文本数据。
def openfile(src):
with open(src,'r',encoding="utf-8") as source:
lines=source.readlines()
return lines
data_in=openfile(data_in_path)
data_out=openfile(data_out_path)
all_data_lines=len(data_in)
- openfile(src):用于从指定的文件路径src读取数据。它使用with open(src, 'r', encoding="utf-8")打开文件,其中"r"表示以只读模式打开,encoding="utf-8" 确保文件以UTF-8编码读取。
- lines = source.readlines():这行代码读取文件的所有行,并将它们存储在列表line中。每行代表一个对联的上联或下联。
- data_in