【大模型应用开发】基于微信聊天数据的大模型微调

目录

项目背景

一、获取微信聊天数据

 二、处理csv数据

1、文件编码转换

2、特征抽取

3、数据清洗

4、缺失值处理

5、特征编码

6、特征合并

7、保存清洗后的数据文件

8、csv转json

三、使用unsloth微调大模型

1、加载数据集

 2、数据格式转换

3、测试模型进行问答

​编辑 4、保存模型并上传到huggingface

5、从hugging加载模型并使用


项目背景

        你是否觉得与大模型的聊天方式太过于人机没有人情味儿?你是否想微调一个属于自己的大模型能用你的聊天风格去让人真假难辨?如果你也有类似的想法,此篇文章将将你的idea转化成现实、

        首先你需要具备科学上网的能力。其次依次实现以下三个步骤:

  • 第一步,在github上下载一个软件可以导出微信的聊天数据。
  • 第二步,将导出的数据转化成可以进行模型微调的数据格式。
  • 第三步,使用Unsloth和Huggingface微调你的大模型。

一、获取微信聊天数据

我使用的github软件如下:

GitHub - LC044/WeChatMsg: 提取微信聊天记录,将其导出成HTML、Word、Excel文档永久保存,对聊天记录进行分析生成年度聊天报告,用聊天数据训练专属于个人的AI聊天助手

 

往下滑,找到下载地址

点击下载即可。

 

使用方式也非常简单:

首先在电脑登录微信。

其次将手机上到聊天记录迁移到电脑。

我——>设置——>通用——>聊天记录迁移与备份——>迁移——>迁移到电脑。

最后打开刚刚下载好的软件实现聊天记录导出。

在工具栏:点击获取信息——>然后解析数据,微信信息回自动填写。

在聊天栏:选择对应的聊天记录,然后选择导出格式即可。

我这里的导出格式为csv,因为方便我对数据进行处理。

 二、处理csv数据

一开始,我的数据用编译器打开有很多乱码,因为编码格式的问题,用记事本打开csv数据,右下角显示ANSI,属于gbk编码,不是utf8格式,需要进行编码类型转换。

1、文件编码转换

import pandas as pd
import numpy as np
import re
# 假设你知道原文件的编码是 'ISO-8859-1',请根据实际情况调整
original_encoding = 'gbk'
input_file_path = '../data/chat.csv'
output_file_path = '../data/chat_utf8.csv'

# 读取CSV文件
df = pd.read_csv(input_file_path, encoding=original_encoding)

# 将DataFrame保存为UTF-8编码的CSV文件
df.to_csv(output_file_path, index=False, encoding='utf-8')

2、特征抽取

删除没用的列。

# 选择StrContent和Remark作为特征。
new_df = df[['StrContent','Reamark']]
new_df

3、数据清洗

将数据中非中文的字符去掉。

# 将new_df中StrContent列中所有与中文不相关字符删除(只保留中文汉字)
# 定义一个函数,用于仅保留中文字符,并且安全处理非字符串类型的数据
def retain_chinese(text):
    if pd.isna(text) or not isinstance(text, str):  # 如果是 NaN 或者不是字符串,则直接返回
        return text
    # 这个正则表达式将仅保留中文字符
    return ''.join(re.findall(r'[\u4e00-\u9fff]+', text))

# 应用该函数到 StrContent 列
new_df['StrContent'] = new_df['StrContent'].apply(retain_chinese)

new_df.head(10)

4、缺失值处理

查看整体情况

new_df.info()

发现缺失值

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码骑士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值