【相关问题解答2】bert中文文本摘要代码:结果输出为一些重复的标点符号和数字

【相关问题解答2】bert中文文本摘要代码

  • 写在最前面
  • 问题1:tokenizer.py中encode函数,不能使用lower操作
    • 关于提问
    • 问题描述1
    • 一些建议1
    • 问题更新2:结果输出为一些重复的标点符号和数字
    • 一些建议2
      • 1. 数据检查和预处理
      • 2. 模型和训练配置
      • 3. 过拟合和欠拟合
      • 4. 检查训练过程
      • 5. 进行实验和记录
  • 问题2:结果输出为一些重复的标点符号和数字
    • 问题描述
    • 一些建议
      • 1. 检查模型输入
      • 2. 检查预训练模型和权重
      • 3. 检查模型配置
      • 4. 调试代码
      • 5. 代码和数据问题
      • 6. 运行示例数据
      • 7. 查找错误信息


请添加图片描述

🌈你好呀!我是 是Yu欸
🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~
🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!

前些天发现了一个人工智能学习网站,内容深入浅出、易于理解。如果对人工智能感兴趣,不妨点击查看。

写在最前面

感谢大家的支持和关注。

最近好多人咨询之前博客【bert中文文本摘要代码】的相关代码报错问题,由于报错有一定的相似性,因此这里统一进行答复

之前的相关博客链接,感兴趣的uu可以点击跳转:
bert中文文本摘要代码(1)
bert中文文本摘要代码(2)
bert中文文本摘要代码(3)
【相关问题解答1】bert中文文本摘要代码:import时无法找到包时,几个潜在的原因和解决方法
【相关问题解答2】bert中文文本摘要代码:结果输出为一些重复的标点符号和数字

问题1:tokenizer.py中encode函数,不能使用lower操作

关于提问

题外话:这样清晰的提问真的爱了,描述的特别清晰,也方便根据我的一点经验给出一写些可供参考的想法建议

有些uu提问,让我回想起之前自己请教大佬hh
我的视角like:其实特别想给出点建议,但是有点“抽象”,描述的问题不具体
再加上可能我也没学到位,所以很难给出对应的问题解决方案,有点爱莫能助

让我想起了之前写的一篇博客笔记,感兴趣的uu可以看看:开发中遇到问题如何更好地提问

问题描述1

您好,我想请教一个问题,在tokenizer.py中,关于encode函数这里,将first_text先转为小写是为什么,我在调试时发现first_text类型为int,不能使用lower操作,请问应该怎么操作能行得通,还是我其他地方出了问题?

encode函数

    @classmethod
    def encode(cls, first_text, second_text=None, max_length=512):
        first_text = first_text.lower()
        first_text = unicodedata.normalize('NFD', first_text)

        first_token_ids = [cls.word2idx.get(t, cls.unk_id) for t in first_text]
        first_token_ids.insert(0, cls.cls_id)
        first_token_ids.append(cls.sep_id)

        if second_text:
            second_text = second_text.lower()
            second_text = unicodedata.normalize('NFD', second_text)

            second_token_ids = [cls.word2idx.get(t, cls.unk_id) for t in second_text]
            second_token_ids.append(cls.sep_id)
        else:
            second_token_ids = []

一些建议1

encode函数中遇到的问题可能是因为,您的使用场景和函数预期的输入类型不匹配。

encode函数设计的目的是对文本进行编码。函数中使用first_text.lower()是为了将输入文本统一转换为小写,这样做的目的是为了减少单词的变体数量,从而增强模型对不同形式的相同单词的识别能力。同时,使用unicodedata.normalize('NFD', first_text)是为了将文本规范化,这有助于统一字符的表示(例如,去除重音符号等)。

如果在您的调试过程中发现first_text的类型为int而不是预期的字符串类型,这很可能是因为在调用encode方法前,传入的参数类型不正确。要解决这个问题,请检查以下几个方面:

  1. 调用encode函数的位置: 确保在调用此函数之前,传入的first_textsecond_text参数确实是字符串类型的文本。如果您在使用过程中某个地方传入了整数(int),请仔细检查为什么会出现这种情况。

  2. 数据处理流程: 回顾和检查整个数据处理流程,确认在传入encode函数之前,所有的文本数据都正确地以字符串形式处理和传递。这可能涉及到对数据源和预处理步骤的审核。

  3. 参数检查: 为了提高代码的健壮性,您可以在encode函数的开头添加参数类型检查的代码。如果发现参数类型不符,可以抛出异常或转换类型。例如:

    if not isinstance(first_text, str):
        raise ValueError(f"Expected first_text to be a str, got {type(first_text)} instead.")
    

通过这些步骤,应该能够识别出问题所在,并确保encode函数能够接收正确类型的文本数据进行处理。
如果在检查和调整后仍然遇到问题,请仔细检查调用encode函数的上下文,确保没有其他地方错误地修改了数据类型。

问题更新2:结果输出为一些重复的标点符号和数字

我是在test.py中遇到的上述问题,后来我尝试使用str将其变为字符串类型,能够顺利运行了,但是test的结果很糟糕,形式为:“摘要:,,,,,,,”,就基本都是标点符号,不只是逗号还有句号问好等,甚至出现好几行的“的”,并没有出现摘要表情包,不知道是不是我的训练出了问题,训练结果的损失值也比较大,可能是参数调的不对,还请您提点我一下

一些建议2

看来已经解决了之前遇到的运行错误,但现在的问题是模型的测试结果不理想,主要输出是重复的标点符号和“的”字,没有生成有效的摘要。

这种情况通常指向几个潜在的问题,包括模型训练不足、数据处理不当或参数配置不适当。以下是一些改进模型表现和调试的建议:

1. 数据检查和预处理

  • 数据质量:确保训练数据质量高,数据中的文本摘要对应关系准确无误。数据的噪声和错误会直接影响模型的学习。
  • 数据预处理:确保文本数据的预处理步骤正确执行,包括但不限于分词、去除无关字符、文本规范化等。不恰当的预处理会导致模型无法学习到有效的信息。

2. 模型和训练配置

  • 参数调优:可能需要调整模型的学习率、批处理大小、训练周期数等参数。过大或过小的学习率都可能导致训练结果不佳。
  • 模型结构:确认模型结构是否适合您的任务。对于文本摘要任务,可能需要特定的注意力机制或更深的网络结构来捕捉长距离依赖关系。
  • 损失函数:检查使用的损失函数是否适合文本摘要任务,以及是否正确实现和应用。

3. 过拟合和欠拟合

  • 过拟合:如果训练数据很少,模型可能会过拟合,即只学习到训练数据上的特定模式,而无法泛化到未见过的数据。尝试增加数据量,或使用正则化技术如dropout。
  • 欠拟合:如果模型太简单或训练不足,可能会欠拟合,表现为训练和测试性能都不佳。增加模型复杂度或延长训练时间可能有所帮助。

4. 检查训练过程

  • 损失值监控:密切监控训练和验证损失值,以判断模型是否在学习。如果损失值减少很慢或不减少,可能需要调整学习率或其他参数。
  • 早期停止:如果验证损失开始增加,即出现过拟合,考虑使用早期停止来终止训练过程。

5. 进行实验和记录

  • 实验记录:记录每次实验的配置、训练过程和结果,以便比较不同配置的效果,找出最佳实践。
  • 逐步调整:一次只调整一个参数,这样可以更清楚地看到每个变更对模型性能的影响。

如果在调整以上方面后模型性能仍未改善,可能需要回到数据集和任务定义上来,重新审视数据集的质量和适用性,或考虑是否需要更多的数据或不同类型的数据来改进模型。

如果还有问题,欢迎继续交流探讨 ~

问题2:结果输出为一些重复的标点符号和数字

问题描述

题外话:如果方便的话,除了报错截图,还可以私信,把输出复制给我
(因为有些之前也没遇到过,方便百度、问gpt哈哈)

请教一下bert中文文本摘要的代码,我copy运行出来了,但是它是这样的

(venv) (base) Ps C:\UserslgiuyiminglDesktoplpython object\4-5.Bert-seg2seg> python ,\predict.py
Load Model config from file: /saved_models\config.json
Load Model weights from file: ./saved_models\pytorch_model.bin
,,,,1 1 ,,

在这里插入图片描述

一些建议

出现这种情况可能有几个原因,导致在运行BERT中文文本摘要代码时只得到了一些重复的标点符号和数字。

这里提供几个可能的解决方案和检查点,希望能帮助解决问题。

1. 检查模型输入

  • 确保输入数据格式正确,且已经按照模型要求进行了适当的预处理。例如,文本是否已经正确分词,是否添加了必要的特殊标记(如CLS、SEP等)。
  • 确认输入的文本不是空的或仅包含标点符号。

2. 检查预训练模型和权重

  • 确认您加载的预训练模型和权重文件是完整的,没有损坏,且与您的任务相匹配。损坏的模型文件或不匹配的模型权重可能导致输出异常。
  • 如果可能,尝试重新下载或使用不同的预训练模型进行测试。

3. 检查模型配置

  • 查看config.json文件,确认模型配置(比如词汇表大小、隐藏层维度等)是否与预训练模型一致。
  • 确认模型配置是否适合您的特定任务,比如文本摘要。

4. 调试代码

  • predict.py中添加打印语句,以便在模型推理过程中观察输入数据、模型输出以及任何中间变量的状态。这可以帮助您确定问题发生的具体位置。
  • 检查是否有任何数据处理或模型输出处理的步骤被错误实现或遗漏。

5. 代码和数据问题

  • 如果您是从网络上复制的代码,可能存在代码的版本不兼容或依赖库版本问题。确认您的环境与原代码的环境设置相匹配。
  • 确认输入数据的质量。如果输入数据不适合模型或存在问题,可能会导致输出结果异常。

6. 运行示例数据

  • 尝试使用原作者提供的示例数据或已知能正常工作的数据运行模型,以确定问题是出在数据还是代码上。

7. 查找错误信息

  • 如果程序产生了任何错误信息或警告,请仔细阅读这些信息,它们可能会提供问题的线索。

如果还有问题,欢迎继续交流探讨 ~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

罐头鱼AI短视频矩阵获客|AI视频批量生成

罐头鱼AI传单功能操作说明,智能化提升您的视频营销效率! 在这个信息爆炸的时代,短视频已成为企业营销的重要方式之一。而为了更高效地进行视频营销,罐头鱼AI传单功能应运而生,为您提供全方位的视频管理和发布服务。 首…

华为车控面试前后

个人经历: 秋招未接受其他公司offer,all in华子。 ->秋招失败0 offer 年前被车bu捞后入池开始审批。 ->等待超过1个月,陷入煎熬。 ->终于等到意向书。 分享时间线: 10月 笔试和3面入池2012 1月 收到车bu捞人电话解…

【OpenGL手册13】 光照贴图

目录 一、说明二、漫反射贴图三、镜面光贴图四、采样镜面光贴图练习 一、说明 在上一节中,我们讨论了让每个物体都拥有自己独特的材质从而对光照做出不同的反应的方法。这样子能够很容易在一个光照的场景中给每个物体一个独特的外观,但是这仍不能对一个…

10、设计模式之外观模式(Facade)

一、什么是外观模式 这个大家一定是经常使用的,外观模式(门面模式)是一种结构型设计模式。它提供一个统一的接口,用于访问子系统中的一组接口,隐藏了系统的复杂性。最简单的应用就是,当controller层的逻辑处…

ArcGIS JSAPI 学习教程 - ArcGIS Maps SDK for JavaScript 不同版本4.8-4.28(最新版)离线部署

ArcGIS JSAPI 学习教程 - ArcGIS Maps SDK for JavaScript 不同版本4.8-4.28(最新版)SDK离线部署 测试资源4.18 以及之前版本4.19 以及之后版本 接触一段时间 ArcGIS JSAPI 之后,整体感觉还好,后来需要解决不同版本问题&#xff0…

php apache 后台超时设置

最近在写一个thinkphp项目的时候,发现Ajax从后端请求数据时间比较长,大概需要45秒左右,但是一旦请求时间超过40s,页面就会超时500了,一开始以为是ajax请求时间不能太长,后来将Ajax请求改为同步且timeout设置…

休闲食品类目电商数据分析

食品的受众群里非常高,所以各品牌竞争也非常大,休闲食品作为人们闲余品味之物,也包揽了各大电商平台的主要流量,随着经济水平的提升,休闲食品类目的销售也随之不断增加,下面我们结合一些数据,去…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的商品识别系统(深度学习+UI界面+训练数据集+Python代码)

摘要:在零售行业的技术进步中,开发商品识别系统扮演着关键角色。本博文详细阐述了如何利用深度学习技术搭建一个高效的商品识别系统,并分享了一套完整的代码实现。系统采用了性能强劲的YOLOv8算法,同时对YOLOv7、YOLOv6、YOLOv5等…

web项目抢购模块测试

web项目抢购模块测试 抢购模块(先测后台,再测前台)流程抢购用例编写测试点--后台抢购用例编写测试点--前台用例设计 面试题1: 当你发现研发实现的结果与需求不一致时怎么办? 需求评审的时候:需要确认所有输入类型的校验是针对单独的输入框做的还是在最终提交时校验 抢购模块 需…

深入挖掘C语言之——联合

目录 联合的定义 联合的特点 联合的应用场景 在C语言中,联合(Union)是一种特殊的数据结构,它允许在同一内存地址存储不同类型的数据。与结构体(Struct)不同的是,联合中的所有成员共享同一块内…

算法(结合算法图解)

算法简介简单查找二分查找法 选择排序内存的工作原理数组和链表数组选择排序小结 递归小梗 要想学会递归,首先要学会递归。 递归的基线条件和递归条件递归和栈小结 快速排序分而治之快速排序合并排序时间复杂度的平均情况和最糟情况小结 散列表散列函数缓冲小结性能…

科研三维模型高精度三维扫描服务3d逆向测绘建模工业产品抄数设计

三维抄数技术在科研三维模型的应用已经日益广泛,其高精度、高效率的特点使得科研工作者能够更快速、更准确地获取和分析数据。这一技术的核心在于通过专业的三维扫描仪对实物进行高精度测量,再将这些数据转化为三维数字模型,为后续的研究提供…

深入浅出计算机网络 day.2 概论⑤ 计算机网络的性能指标

请等一等, 用一个完整的春天 捣碎麦田 —— 24.3.10 一、计算机网络的性能指标 上 计算机网络的性能指标被用来从不同方面度量计算机网络的性能 常用的八个计算机网络性能指标 速率 比特(bit)是计算机中数据量的基本单位,一个比特…

智能商品管理系统:驱动零售盈利型的数据利器

在数字化浪潮席卷全球的今天,零售业正面临着前所未有的变革。智能商品管理系统作为零售业的“数据利器”,正在以其强大的数据分析能力和智能化的管理手段,助力零售企业实现盈利增长和业务创新。 智能商品管理系统通过集成大数据、云计算、人…

MySQL教程-安装与卸载

MySQL官网 https://www.mysql.com MySQL 官方提供了两种不同的版本: 社区版 MySQL Community Server,免费,但不提供任何技术支持商业版 MySQL Enterprise Server,收费,官方可提供技术支持 本教程采用MySQL的社区版作…

零基础如何入门ai编程?小白必看!

当我们谈到人工智能编程时,很多人可能会感到有些困惑和无措。但是,其实只要有一定的学习兴趣和基础知识,任何人都可以开始学习AI编程。本文将为零基础的读者介绍如何入门AI编程,并提供详细的步骤。 ▶ 第一步:理解人工…

深入理解 Vuex:从基础到应用场景

前言 在之前的文章中,我们已经对 Vue.js 有了一定的了解。今天我们要对Vue官方的状态共享管理器Vuex进行详细讲解,将其基本吃透,目标是面对大多数业务需求; 一、介绍 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用…

【Power Apps】响应式布局与布局容器

做响应式布局之前要先把这里关掉呦。 这里我可能要先简单说一下什么是响应式布局,说白了就是咱们做出来的应用的界面可以根据当前窗口的大小来自适应地调整内部组件的大小、位置等属性,这样我们只需要做一套页面,就可以既在桌面端使用&#x…

linux-MDK can电机带导轨

确保接线正确,这个带导轨的电机需要24V的电压 $ ls /dev //查看端口是什么$ sudo slcand -o -s6 /dev/ttyACM0 can0 //将端口封装为can0 $ sudo ip link set can0 up //打开端口 按照电机说明书,按照需要的指令计算检验和&#xf…