首页 > 其他分享 >聊天机器人羲和的代码04。1

聊天机器人羲和的代码04。1

时间:2024-10-28 13:44:53浏览次数:5  
标签:py 04 max self 机器人 item length 聊天 data

项目目录结构
code
XihuaChatbot/
├── data/
│ └── train_data.jsonl
├── logs/
│ └── (自动创建的日志文件)
├── models/
│ └── xihua_model.pth
│ └── bert-base-chinese/
├── icons/
│ └── icon.ico
├── src/
│ ├── init.py
│ ├── dataset.py
│ ├── model.py
│ ├── gui.py
│ └── main.py
└── requirements.txt
目录说明
XihuaChatbot/: 项目根目录。
data/: 存放训练数据文件,例如 train_data.jsonl。
logs/: 存放日志文件,自动创建。
models/: 存放模型文件,例如 xihua_model.pth 和预训练模型文件夹 bert-base-chinese。
icons/: 存放图标文件,例如 icon.ico。
src/: 存放源代码文件。
init.py: 使 src 成为一个 Python 包。
dataset.py: 定义数据集类 XihuaDataset。
model.py: 定义模型类 XihuaModel。
gui.py: 定义图形用户界面类 XihuaChatbotGUI。
main.py: 主入口文件,启动应用程序。
requirements.txt: 列出项目依赖的库。
文件内容
src/dataset.py
python

import os
import json
import jsonlines
from difflib import SequenceMatcher

class XihuaDataset:
    def __init__(self, file_path, tokenizer, max_length=128):
        self.tokenizer = tokenizer
        self.max_length = max_length
        self.data = self.load_data(file_path)

    def load_data(self, file_path):
        data = []
        if file_path.endswith('.jsonl'):
            with jsonlines.open(file_path) as reader:
                for i, item in enumerate(reader):
                    try:
                        if self.validate_item(item):
                            data.append(item)
                    except jsonlines.jsonlines.InvalidLineError as e:
                        logging.warning(f"跳过无效行 {
     i + 1}: {
     e}")
        elif file_path.endswith('.json'):
            with open(file_path, 'r') as f:
                try:
                    data = [item for item in json.load(f) if self.validate_item(item)]
                except json.JSONDecodeError as e:
                    logging.warning(f"跳过无效文件 {
     file_path}: {
     e}")
        return data

    def validate_item(self, item):
        required_keys = ['question', 'human_answers', 'chatgpt_answers']
        if all(key in item for key in required_keys):
            return True
        logging.warning(f"跳过无效项: 缺少必要键 {
     required_keys}")
        return False

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

    def __getitem__(self, idx):
        item = self.data[idx]
        question = item['question']
        human_answer = item['human_answers'][0]
        chatgpt_answer = item['chatgpt_answers'][0]

        try:
            inputs = self.tokenizer(question, return_tensors='pt', padding='max_length', truncation=True, max_length=self.max_length)
            human_inputs = self.tokenizer(human_answer, return_tensors='pt', padding='max_length', truncation=True, max_length=self.max_length)
            chatgpt_inputs = self.tokenizer(chatgpt_answer, return_tensors='pt', padding='max_length', truncation=True, max_length=self.max_length)
        except Exception as e:
            logging.warning(f"跳过无效项 {
     idx}: {
     e

标签:py,04,max,self,机器人,item,length,聊天,data
From: https://blog.csdn.net/weixin_54366286/article/details/142759911

相关文章

  • ROS2在MyCobot320Pi2022和PC之间通讯(都是Ubuntu20.04系统)
    参考:RunningROSacrossmultiplemachineshttp://wiki.ros.org/ROS/Tutorials/MultipleMachinesSLAM+语音机器人DIY系列:(五)树莓派3开发环境搭建——4.PC端与robot端ROS网络通信https://www.cnblogs.com/hiram-zhang/p/10410168.html在多台PC上进行ROS通讯(在多台远程机器人......
  • 川崎机器人故障报警代码维修排除方法
    川崎机器人故障排除参考方法 首先,第一时间做好系统数据备份工作。了解故障现象,通过现场一些设备的基本现象和现场技术人员的描述进行判断,这样机器人维修起来会比较有效率,。 例如,根据一位现场工程师的描述“川崎控制器偶发会产生自动重启现象,这个重启过程中会看到快要启动时,......
  • 强化学习的数学原理-04值迭代与策略迭代
    目录ValueiterationalgorithmPolicyiterationalgorithmTruncatedpolicyiterationalgorithmValueiterationalgorithm\[v_{k+1}=f(v_k)=\max_{\pi}\left(r_{\pi}+\gammaP_{\pi}v_k\right)\:,\:k\:=\:1,2,3,...\]算法可以被分为两步去做:\(Step1......
  • 新安装的Ubuntu20.04 系统没有声音怎么办?
    问题描述:新安装的Ubuntu20.04系统没有声音怎么办?问题解答:第一步,下载pavucontrol音频播放工具。sudoaptinstallpavucontrol第二步、设置工具。首先在配置里面将HDANVidia设置为关闭。(我的ubuntu安装时候汉化了,所以软件也是汉语,有的人可能是英文的)。其次,将内置音频......
  • ubuntu24.04安装完以后发现硬盘空间少一半
    1、查看现在硬盘情况root@ubuntu:~#df-hFilesystemSizeUsedAvailUse%Mountedontmpfs1.6G1.1M1.6G1%/runefivarfs256K64K188K26%/sys/firmware/efi/efivars/dev......
  • 【最新华为OD机试E卷-支持在线评测】机器人活动区域(200分)多语言题解-(Python/C/Java
    ......
  • 104. 相机控件MapControls
    地图导航相机控件MapControls,你可实现一个类似百度地图的3D导航功能。MapControls使用操作你可以打开课件案例源码测试下效果。平移:鼠标左键拖动旋转:鼠标右键拖动缩放:鼠标中键滚动引入相机控件MapControls引入相机控件MapControls类,旧版本是通过扩展库文件MapControls.js......
  • Navicat连接数据库,报错信息:1045 -Access denied for user 'root'@'localhost'(using p
    错误解析错误信息:无法通过Navicat连接MySQL数据库。原因:MySQL服务未启动。解决方法检查MySQL服务状态打开“服务”管理器(可以在Windows中通过搜索“服务”来找到)。查找MySQL相关的服务,通常名称为MySQL或带有版本号的名称(如MySQL507)。启动MySQL服务如果发现MySQL......
  • PbootCMS 系统 404 错误出现的原因及解决方法
    在使用PbootCMS系统时,404错误通常由以下两种原因引起:当前栏目调用的页面模板不正确,导致链接不存在。伪静态设置不正确或未设置。解决方法检查后台栏目是否调用错误的页面模板,或者检查后台是否存在调用的模板文件。如果没有,添加相应的模板文件即可。步骤:登录PbootC......
  • 【java】java的基本程序设计结构04-数值类型的转换
    类型默认值int, short, long, byte 的默认值是0。char 的默认值是 \u0000(空字符)。float 的默认值是 0.0f。double 的默认值是 0.0d。boolean 的默认值是 false。引用类型(类、接口、数组)的默认值是 null。引用类型在Java中,引用类型的变量非常类似于C/C++的指针......