基于bert的自动对对联系统

news2024/11/16 0:56:49

目录

概述

演示效果

核心逻辑

使用方式

1.裁剪数据集

根据自己的需要选择

2.用couplet数据集训练模型

模型存储在model文件夹中

3.将模型转换为ONNX格式

4.打开index.html就可以在前端使用此自动对对联系统了。


本文所涉及所有资源均在传知代码平台可获取。

概述

这个生成器利用预训练的BERT模型,通过微调来生成中国对联。对联是一种中文传统文化形式,通常由上下联组成,具有一定的韵律和意境。

演示效果

在这里可以插入动图展示您的程序运行效果

核心逻辑

在这里可以粘贴您的核心代码逻辑:

# start
class CoupletDataset(Dataset):
    def __init__(self, data_path, tokenizer):
        self.data_path = data_path
        self.tokenizer = tokenizer
        self.inputs, self.labels = self.load_dataset()

    def load_dataset(self):
        with open(self.data_path + '/in_cut.txt', 'r', encoding='utf-8') as fin, \
             open(self.data_path + '/out_cut.txt', 'r', encoding='utf-8') as fout:
            inputs = [line.strip() for line in fin.readlines()]
            labels = [line.strip() for line in fout.readlines()]
        return inputs, labels

    def __len__(self):
        return len(self.inputs)

    def __getitem__(self, index):
        input_text = self.inputs[index]
        label_text = self.labels[index]

        input_tokens = tokenizer.tokenize(input_text)
        label_tokens = tokenizer.tokenize(label_text)

        # 拼接成BERT模型需要的输入格式
        input_tokens = ['[CLS]'] + input_tokens + ['[SEP]']
        label_tokens = label_tokens + ['[SEP]']

        # 将token转换为对应的id
        input_ids = tokenizer.convert_tokens_to_ids(input_tokens)
        label_ids = tokenizer.convert_tokens_to_ids(label_tokens)

        # 确保input_ids和label_ids的长度一致
        max_length = max(len(input_ids), len(label_ids))
        input_ids.extend([0] * (max_length - len(input_ids)))
        label_ids.extend([0] * (max_length - len(label_ids)))

        # 将input_ids和label_ids转换为tensor
        input_ids = torch.tensor(input_ids).unsqueeze(0).to(device)  # 增加batch维度
        label_ids = torch.tensor(label_ids).unsqueeze(0).to(device)  # 增加batch维度

        return input_ids, label_ids

使用方式

1.裁剪数据集

修改lines_to_read = 1000

选择你想要的数据集大小,这里采用了1000条对联

原始数据集有70万条对联,根据需求还有电脑性能选择

根据自己的需要选择

2.用couplet数据集训练模型

在终端中输入命令 python bert.py,训练模型并监控损失变化。训练完成后会生成损失图像,并将模型保存在 model 文件夹中。

最终出来loss损失图像

模型存储在model文件夹中

3.将模型转换为ONNX格式

使用命令 python app.py 将存储的模型转换为ONNX格式,以便在前端调用。

4.打开index.html就可以在前端使用此自动对对联系统了。

在输入框中输入上联。

感觉不错,点击我,立即使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1956278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是婚恋聊天交友源码?今天大家讲解一下。源码交付,支持二开,可打包APP小程序H5。

婚恋交友APP开发前景 对于现代的年轻人来说,社恐已经是深入骨子里不可别除的,除了每天上班下班,许多人宁愿宅在家里,面对线下的相亲机构,家里长辈介绍的会都是饭度抗柜的。而这几年疫情的影响更是大大的限制了正常的社…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

7. 运行时数据区-栈

栈的分类 栈分为Java虚拟机栈还有本地方法栈: Java虚拟机栈:用于保存Java中的方法相关的内容本地方法栈:用于保存在Java中使用native 标记的用C来实现方法 由于hotspot的作者发现使用一个栈就可以保存以上两个部分的内容,所以在…

图像生成中图像质量评估指标—PSNR的详细介绍

文章目录 1. 背景介绍2. 实际应用3. 总结和讨论 1. 背景介绍 峰值信噪比(Peak Signal-to-Noise Ratio,简称PSNR)是一种广泛应用于图像和视频处理领域的客观图像质量评价指标。它主要用于衡量图像的噪声水平和图像质量,可以用来评…

HttpClient初学

介绍: HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。 这里阿里云的oss依赖底层是httpclient,所以这里不再重…

用f-string+sys.stdout.write定制“自己的writer”

f-stringsys.stdout.write,在python中“随意”我的输出。 (笔记模板由python脚本于2024年07月29日 08:09:35创建,本篇笔记适合喜欢python并有一定基础的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free&am…

dotnet开发编译之争:Ahead-of-Time(AOT) vs Just-in-Time(JIT)谁才是未来最佳编译选择?

1. 前言 编译技术的选择对于现代应用程序的性能至关重要。在.Net开发平台下,选择合适的编译策略对于提升应用程序的响应速度、资源利用率以及最终用户体验有着不可忽视的影响。其中,Ahead-of-Time (AOT) 编译和 Just-in-Time (JIT) 编译是两种广泛采用的…

【编程工具使用技巧】VS如何显示行号

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《编程工具与技巧探索》 期待您的关注 目录 引言 一、VS编译器行号显示的基本步骤 1.打开VS与项目 2.进入选项设置 3.找到并…

Open3D 计算点到平面的距离

目录 一、概述 1.1原理 1.2实现步骤 1.3原理 二、代码实现 1.1关键函数 1.2完整代码 三、实现效果 3.1原始点云 3.2计算距离后赋色的点云 Open3D点云算法汇总及实战案例汇总的目录地址: Open3D点云算法与点云深度学习案例汇总(长期更新&#…

【更新2022】省级农业科技活动人员数测算 2009-2022无缺失

省级农业科技活动人员数测算数据在农业经济学、政策研究和农村发展规划等领域的论文研究中具有重要应用价值。首先,这些数据可用于分析省级农业科技活动的规模和结构变化,揭示不同地区在农业科技投入和产出方面的差异,为政府制定农业发展政策…

锅总浅析系统设计

如何进行系统设计?系统设计最佳实践有哪些?系统设计和软件工程有何区别?如何避免过度设计?学习书籍及软件工具推荐有哪些?前后端语言选型有哪些原则?考虑政策因素的系统设计步骤是怎样的? 带着这…

三维推:二维码生成与修改、加logo、设置有效期

进入后台,找到【二维码工具】下的【二维码在线生成】,可以看到,三维推支持网址、图片、音频、视频、文件以及模板生成二维码。 这里,我们以网址生成二维码为例来演示下,如何给二维码加logo、更改颜色等。 首先&#x…

操作系统---进程调度算法相关习题

例题1:某系统采用基于优先权的非抢占式进程调度策略,完成一次进程调度和进程切换的系统时间开销为1us。在T时刻就绪队列中有3个进程P1、P2和P3,其在就绪队列中的等待时间、需要的 CPU 时间和优先权如下表所示。 若优先权值大的进程优先获得CP…

Git基础概念一览:仓库、协议、原理、服务器搭建全解析

Git基础概念详解 一、引言 二、基础概念概览 三、安全通信与协议 四、Git 服务器搭建与操作 五、Git 工作流程与原理 六、Git 日志与操作 七、总结 一、引言 “ 掌握Git的基本概念是高效进行版本控制的第一步。本文将详细介绍如何创建本地和远程仓库,G…

【HarmonyOS4+NEXT】新建项目指南

🙋‍ 一日之际在于晨 ⭐本期内容:新建项目指南 🏆系列专栏:鸿蒙HarmonyOS4NEXT:探索未来智能生态新纪元 文章目录 创建项目项目结构概述运行项目Preview预览模拟器运行真机运行 ArkUI框架简介总结 创建项目 点击创建一…

撰写LabVIEW开发方案时,怎么结构清晰、内容详实?

撰写LabVIEW开发方案时,结构清晰、内容详实是至关重要的。以下是一些步骤和技巧,帮助你组织和编写一个高质量的LabVIEW开发方案: 1. 封面 项目名称公司名称日期作者 2. 目录 列出各章节及其页码 3. 摘要 项目概述:简要介绍项…

vue、react前端框架实现TodoList页面案例

原始TodoList网页(主要就是链接里网页应用ndex.html、styles.css、script.js ): https://blog.csdn.net/weixin_42357472/article/details/140657576 node、npn安装参考: https://blog.csdn.net/weixin_42357472/article/details/…

昇思25天学习打卡营第16天|GAN 图像生成指南:数据集和模型训练手册

目录 MindSpore 环境配置、MNIST 数据集下载及处理展开。 数据集可视化 隐码构造 模型构建 模型训练 效果展示 模型推理 MindSpore 环境配置、MNIST 数据集下载及处理展开。 首先,通过命令行操作安装特定版本的 MindSpore 库,并查看其版本。接着&a…

从零开始学习网络安全渗透测试之基础入门篇——(四)反弹SHELL不回显带外正反向连接防火墙出入站文件上传下载

一、反弹SHELL 反弹SHELL(Reverse Shell)是一种网络攻击技术,它允许攻击者在一个被入侵的计算机上执行命令,即使该计算机位于防火墙或NAT(网络地址转换)之后。通常,当攻击者无法直接连接到目标…