首页 >>  正文

微信聊天记录编辑修改

来源:baiyundou.net   日期:2024-07-24

本文来自微信公众号:超级王登科(ID:superwdk),作者:DK本人,原文标题:《我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI》,头图来自:《机械纪元》剧照

除了开飞机,做出完美的烤肋排,获得6块腹肌以及让公司赚大钱之外,我一直以来也想做成的一件事,是实现一个聊天机器人。

和多年前简单通过关键词匹配来回复的小黄鸡,到现在已经堪比人类智慧的 chatgpt,聊天AI一直在进步,但它们和我想的都有一些区别。

我在微信上和很多人聊天,有的人聊得多,有的人聊得少,我在群里也会说话,我还会写博客和公众号,我会在很多地方留下评论,我也会发微博,这些是我在网络世界留下的痕迹,某种程度上这些东西构成了世界对我的认知,从这个角度上,也就构成了我。将这些数据——我对不同消息的回复,我写的每一篇文章,每一句话,我发过的每一条微博等,全部汇入一个神经网络模型之中,去更新其中的参数,理论上就可以获得一个我的数字拷贝。

从原理上,这和对 ChatGPT说“请扮演一个叫小王的人,他的经历是XXX”不同,虽然以 ChatGPT 的智慧,这样的扮演毫不费力且可能以假乱真,但其实 ChatGPT的参数并没有改变,这更像是“扮演”而非“重塑”,ChatGPT 的上千亿个参数并没有改变一个,它从你之前的文本中获取一些信息,然后用它的智慧来应对你。

我喜欢在文章里写一些没有太大用处的比喻,并喜欢在最后做一些总结,跟人聊天的时候,我喜欢用“可以的”来敷衍,同时用“卧槽”来表示惊讶,我某些时候少言寡语,另一些时候则滔滔不绝,这是我自己能够感知的一些特点,此外还有更多我自己都无法察觉的固定习惯,但这些微妙又模糊的东西,我无法告诉 ChatGPT,这就像你做自我介绍,可以介绍得很丰富,但和真正的你,依然差之千里,甚至有时候截然相反,因为当我们意识到自己的存在的时候,我们其实是在表演自己,只有在我们没有意识到自己的存在,而融入生活的时候,我们才是真正的自己。

在 ChatGPT发布之后基于兴趣去学习文本大模型的技术原理,对个人爱好者来说,做出在任何方面或更细小的垂直领域超越 ChatGPT的可能性已经不存在了,同时它又不开源,除了使用,没有别的可打的主意。

但最近2个月出现的一些开源文本预训练模型,例如大名鼎鼎的 llama 和 chatglm6b,让我那个克隆自己的想法又开始蠢蠢欲动起来,上周,我准备试试看。

首先我需要数据,足够多且全部都由我产生的数据,最简单的数据来源是我的微信聊天记录和博客,因为没有完全清空微信聊天记录,从 2018 年到现在,我手机里的微信占了80G的储存空间,对此我一直有一种家里被人强占一块地儿的感觉,现在如果能把这里的数据利用起来,我会和这80G冰释前嫌。

我在几年前曾经备份过我的微信聊天记录,我又找到了当年使用的工具,是一个在 github 开源的工具,叫做 WechatExporter,链接我会放到文末,使用这个工具,可以实现在 Windows 电脑上备份 iPhone 中的手机微信的所有聊天记录,并导出成纯文本格式,这是一个需要耐心的操作,因为首先需要将整个手机备份在电脑上,然后这个工具会从备份文件中读取到微信的记录,并导出。

我大概花了4个小时备份,然后很快导出了我所有的微信聊天记录,其按照聊天对象,被导出到了许多个文本文件中。

这里面包括了群聊和一对一的聊天。

然后我开始做数据清洗,大多数群我都是潜水比较多,我筛选出一些我比较活跃的群,此外还筛出了一些和个人的聊天记录,我和他们聊天很多,同时他们也愿意我把聊天记录拿来这么做,最后大概50个聊天的文本文件够我使用。

我写了一个 python 脚本,遍历这些文本文件,找出我的所有发言,以及上一句,做成对话的格式,然后存入 json,这样,我就拥有了一个我自己的微信聊天数据集。

此时我也让同事用爬虫爬取了我自己的所有博客文章,他爬完发给我之后我才想起来,我其实可以用博客后台内置的导出功能直接导出。博客数据虽然也很干净,但我一开始并不知道如何利用,因为我要训练的是聊天的模型,而博客文章是一大段一大段的话,并不是聊天,所以我第一次训练,只用了微信的这些纯聊天记录。

我选择了 chatglm-6b 作为预训练模型,一方面它的中文效果已经被训练得足够好了,另一方面它的参数是 60 亿,我的机器能不太费力地跑起来,还有个原因是,在 github 已经有好几个对其进行微调训练的方案了(我会一起列在文末),此外它还可以简称为 6B,和我做的 6pen 都姓 6,这也让我更倾向于用它。

考虑到我的微信聊天数据最终可用大约 10 万条,我设置了比较低的学习率,同时增加了epoch,在几天前的一个晚上,睡前,我写完训练脚本,并开始运行,然后我就开始睡觉,希望睡醒之后能跑完,但那个晚上我差不多每隔一个小时就醒一次。

早上起来之后,模型训练完了,遗憾的是 loss 下降得并不好,也就意味着12个小时训练出来的模型,并不算好,但我是个深度学习的菜鸡,能跑完不报错我已经谢天谢地了,所以我并没有感到失望,而是开始用这个模型来跑对话。

为了增加一点仪式感,我不想用 jupyter 笔记,或在黑黢黢的终端里去聊天,我找了个开源的前端聊天页面,略做修改,然后把模型部署起来,封装了 API ,然后用前端页面去调用这个 API,于是就可以实现比较像那么回事的聊天了。

请不要笑话我,我用自己的 10 万条微信聊天记录,训练出的模型,以下是我和他(或者它?)的第一次对话:

我又试了下,结果依然不是很好,我不是那种不优化到极致就不好意思拿出手的人,因此我毫不害羞地直接发给了几个朋友,他们给我的反馈是,有点像你,同时他们给我返了对话截图。

第一个版本,这个模型确实具备某些跟我比较类似的点,我说不好,但有一点这种感觉。

如果你问他,你哪里读的大学,或者你老家是哪里,他并不会回答出准确的信息,并且肯定说的是错的,因为我的聊天记录中并不会有很多人这么问我,从某种角度上,这个模型并不了解我,他像是一个克隆。

当我收到一条微信消息,内容为 A,我回复了 B,那么这里是有一些原因的,这些原因中的一部分,储存在我物理脑袋的七八十亿个神经元里,理论上,如果我产生的数据足够多,也许几千亿条,那么一个参数够大的人工智能模型,就能非常接近我的脑子,10万条也许少了一些,但也足以让模型的60亿个参数里改变一部分,使其相较于原始的预训练模型,更接近我一点。

此外他还有个更大的缺点,就是蹦不出来几个字,回答非常简略,这虽然符合我很多时候的微信聊天风格,但并不是我想要的,我想要他说更多话。

此时我忽然想到了我的博客,如何能把这些博客转换为问答呢,我想到了 ChatGPT,在我精心构造的 prompt 之下,他成功把我博客文章的一段文本,变成了多个对话形式的问答:

某些时候 ChatGPT会返回一些不符合格式的内容,所以我写了一个校对脚本,来将各种不符合规则的返回,统统修改为标准的json,且字段名不变。

然后我将其封装为一个接口,放在了香港的服务器上,并在我的电脑上写了一个脚本,把我的博客文章按照500字划分,拿去批量转成问答,受限于chatgpt的接口速度,我差不多又花了一晚上,才把我的两百多篇博文,转换成了差不多 5000 个对话数据集。

此时我面临一个选择,如果将博客对话加到微信对话数据集里去训练,那么博客对话占比太低,可能影响会非常小,也就是说跟之前的模型差别不大;另一个选择是单纯用文章的这些数据,去训练一个新模型。

我向 6pen 的算法老哥寻求帮助,在确定模型权重可以融合并想办法从他那顺到融合脚本后,采用了后一种方式。

5000个问答,训练速度很快,一两个小时就够了,下午我一边写文档一边瞅一眼训练进度,下班之前训练完毕,我开始进行模型的融合,让之前的用微信聊天记录训练的模型,和用我的博客训练的模型进行融合。

两个模型的权重可以自由配置,我尝试了多种不同的比例,考虑到模型收敛过程中 loss 还有一些反弹,我还尝试了不同步数的模型版本。

我整晚和这些模型对话,找到效果最好的,但我发现,我似乎很难找出来,这些模型,有一些不同的表现,有的会比较暴躁,有的像舔狗一样,有些特别高冷,有些则很热情,然后我意识到,某种程度上,这或许是我的不同面,这么理解虽然肯定会让搞深度学习,并对其中原理烂熟于胸的人嗤之以鼻,但不失一些浪漫。

最终我发现,聊天和文章两个模型,权重比为 7 比 2 ,且采用第 6600 步保存的模型,融合效果在更多时候,都要更好一点,当然也可能是那个时候已经半夜两点,我的判断力有所下降,但无论如何,我就把他确定为最终模型了。

我和他聊了很多。

很明显,他和 ChatGPT差得极远,没办法帮我写代码,或者写文案,也不够聪明,因为训练用的数据不包含多轮对话,所以多轮对话的理解力更差,与此同时,他对我也不算特别了解,除了知道自己的名字(也就是我的名字),我的其他很多信息,他其实并不能准确回答,但是,他经常会说一些简单的几个字,让我有一种熟悉的感觉,也可能是错觉,谁知道呢。

总的来说,现在存在的所有广为人知的文本大模型,都是用海量的数据训练的,训练过程会尽可能包含全人类所产生的所有信息,这些信息让模型的亿万参数得以不断优化,例如第2043475个参数增加4,第9047113456个参数减少17,然后得到更聪明的神经网络模型。

这些模型变得越来越聪明,但它们更像是人类的,而非个体的,当我用我自己的这些数据去重新训练模型时,我能得到完全不一样的东西,一个更靠近个体的模型,虽然无论是我产生的数据量,还是我采用的预训练模型的参数量和结构,可能都无法支撑起一个能够和我的脑子差不多的模型,但对此进行的尝试,依然非常有意思。

我将这个网页重新部署了一下,并在中间加了一层 serverless 做保护,因此,现在所有人都可以去试试和这个我的数字版聊天,服务由我的祖传V100服务器提供,并且只有一台,所以如果人多的话,可能会有各种问题,链接我会放在最下面。

积极的,发自内心地产出更多的数据,就越有可能在未来获得更接近你的数字拷贝,这或许会有一些道德,甚至伦理问题,但这是大概率会发生的事情,之后我的数据积累得更多,或有更好的预训练模型,训练方式,我可能随时都会重新再次尝试训练,这不会是一个盈利,或任何跟商业沾边的项目,这在某种程度上算是我自己追寻自己的一种方式。

这样一想,人生似乎都少了一些孤独感。

附,我的数字克隆在线聊天:

https://ai.greatdk.com

我使用和参考的项目:1.WechatExporter:https://github.com/BlueMatthew/WechatExporter2.chatglm-6b:https://github.com/THUDM/ChatGLM-6B3.zero_nlp:https://github.com/yuanzhoulvpi2017/zero_nlp4.chatglm_finetuning:https://github.com/ssbuild/chatglm_finetuning5.MoeChat:https://github.com/Fzoss/MoeChat6.Alpaca: https://crfm.stanford.edu/2023/03/13/alpaca.html7.LLAMA:https://github.com/facebookresearch/llama

本文来自微信公众号:超级王登科(ID:superwdk),作者:DK本人

本内容为作者独立观点,不代表虎嗅立场。未经允许不得转载,授权事宜请联系[email protected]

如对本稿件有异议或投诉,请联系[email protected]

End

","gnid":"97c331b45f766b839","img_data":[{"flag":2,"img":[{"desc":"","height":"605","title":"","url":"https://p0.ssl.img.360kuai.com/t01eb8b44477af36174.jpg","width":"1080"},{"desc":"","height":"899","title":"","url":"https://p0.ssl.img.360kuai.com/t01df2512770442b209.jpg","width":"724"},{"desc":"","height":"377","title":"","url":"https://p0.ssl.img.360kuai.com/t0101b7454a0f85b727.jpg","width":"414"},{"desc":"","height":"782","title":"","url":"https://p0.ssl.img.360kuai.com/t0122f47e52918e9ec9.jpg","width":"1000"},{"desc":"","height":"884","title":"","url":"https://p0.ssl.img.360kuai.com/t01e57b4524922b4df9.jpg","width":"1000"},{"desc":"","height":"687","title":"","url":"https://p0.ssl.img.360kuai.com/t019e6dd98ab13530b7.jpg","width":"843"},{"desc":"","height":"1425","title":"","url":"https://p0.ssl.img.360kuai.com/t017db98d5c662fa37c.jpg","width":"1000"},{"desc":"","height":"1054","title":"","url":"https://p0.ssl.img.360kuai.com/t01420be2a53b71aac8.jpg","width":"1000"},{"desc":"","height":"892","title":"","url":"https://p0.ssl.img.360kuai.com/t012283c42a26f05855.jpg","width":"986"},{"desc":"","height":"512","title":"","url":"https://p0.ssl.img.360kuai.com/t01eee78b3a03cb3c5a.jpg","width":"1000"},{"desc":"","height":"274","title":"","url":"https://p0.ssl.img.360kuai.com/t011e981e1a386f939b.jpg","width":"548"},{"desc":"","height":"275","title":"","url":"https://p0.ssl.img.360kuai.com/t0105e4192d5cc7cbf2.jpg","width":"622"},{"desc":"","height":"919","title":"","url":"https://p0.ssl.img.360kuai.com/t0114368d43350b51d6.jpg","width":"593"},{"desc":"","height":"366","title":"","url":"https://p0.ssl.img.360kuai.com/t0135cdd66e3b83b5d6.jpg","width":"596"},{"desc":"","height":"814","title":"","url":"https://p0.ssl.img.360kuai.com/t01f370ce3598c4af74.jpg","width":"617"},{"desc":"","height":"339","title":"","url":"https://p0.ssl.img.360kuai.com/t01f23fda9571c8dc5e.jpg","width":"601"},{"desc":"","height":"892","title":"","url":"https://p0.ssl.img.360kuai.com/t016696969b868fcd80.jpg","width":"618"},{"desc":"","height":"688","title":"","url":"https://p0.ssl.img.360kuai.com/t01c35702d314c37f58.jpg","width":"588"},{"desc":"","height":"899","title":"","url":"https://p0.ssl.img.360kuai.com/t01bc4ccb7b3411a877.jpg","width":"590"},{"desc":"","height":"896","title":"","url":"https://p0.ssl.img.360kuai.com/t0134b625d7fa8336c1.jpg","width":"350"},{"desc":"","height":"283","title":"","url":"https://p0.ssl.img.360kuai.com/t012e2ad863eab1f0d7.jpg","width":"793"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"hbase","pub_time":1681135391000,"pure":"","rawurl":"http://zm.news.so.com/93ce2eaa5197c28271600b80346d3121","redirect":0,"rptid":"b285b92864e57ee4","rss_ext":[],"s":"t","src":"虎嗅APP","tag":[{"clk":"ktechnology_1:聊天记录","k":"聊天记录","u":""}],"title":"我用10万条微信聊天记录和280篇博客,拷贝了一个“我”

文友依4029如何改变微信已发信息内容 -
米尝符19635378781 ______ 微信发出的内容是不可以更改的,但是你可以在规定的时间内,点击发出去的消息,然后点撤回消息.赶着升级,如果满意请采纳

文友依4029微信聊天记录是否可以修改 -
米尝符19635378781 ______ 记录本身是无法修改的,不过截图可以通过Photoshop等软件来修改.

文友依4029发出去的微信聊天内容怎么修改 -
米尝符19635378781 ______ 1.不能修改,因为消息发现出去后会存在服务器,而服务器自动按照指令会发到你指定的好友那.2.微信现在暂时没开发出发出去修改文字的功能,像skype有这个功能.3.不过,如果是在发出去的2分钟内,可以撤回重发.

文友依4029什么软件可以修改微信聊天的数字 -
米尝符19635378781 ______ 1、《聊天记录管家》这个软件可以修改微信聊天的数字在社交工具中产生的聊天记录是比较难以处理的,而拥有它,就能够让用户有效的去进行快速的编辑,各类语音聊天文件,可以随时听取,对于聊天的图片和视频等,也支持一键导出和删除,让重要的数据不会出现丢失的情况.

文友依4029微信聊天记录可以修改吗?想跳到过去时间可以吗 -
米尝符19635378781 ______ 微信聊天记录不可以修改,也不能跳过期时间. 微信聊天只能撤回在2分钟内发出去的消息,超过2分钟就无法撤回了. 对于不能撤回的消息,可以删除后重发.

文友依4029请问怎样修改微信聊天记录请教怎样修改微信聊天记录和图片,具体操作
米尝符19635378781 ______ 文字的聊天记录是加密的,无法修改.语音和图片的聊天记录可以用premiere和photoshop修改.

文友依4029怎样把微信中很长的聊天记录缩短然后显示“更多信息”? -
米尝符19635378781 ______ 在微信中,当聊天记录较长时,为了方便浏览呈现,“更多信息”的功能使得我们可以把聊天记录进行“展开”与“收起”的操作,以便更好的查看和管理.如果您想在微信中对很长的聊天记录进行缩短以“更多信息”的方式显示,可以按照以...

文友依4029怎么修改微信历史聊天记录的信息内容/怎么修改微信 -
米尝符19635378781 ______ 可以改变,一是连接修改,二是传真来修改.图片数字都是可以通过这样的方法来完成修改的,操作简单,大多小6也需要用到这样来修改.

文友依4029怎么伪造微信聊天记录时间和内容 -
米尝符19635378781 ______ 亲,你好,很高兴为您解答伪造微信聊天记录时间是方法一、修改手机系统时间进入手机设置,找到时间和语言,将自动设置取消,再根据你要修改的时间来选择地区.再进入微信进行聊天,这样手机上所发送或接收的所有信息的时间就改成了...

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024