我分析了20年的聊天记录
速览
本文作者对自己长达20年的聊天记录进行了系统性分析。通过挖掘这些数字足迹,作者试图从海量数据中识别出个人的行为模式、情感变化及沟通习惯。这一过程不仅是对个人历史的回顾,也展示了大数据分析在理解个体生活轨迹方面的独特意义。
AI 深度解读
我分析了20年的聊天记录:从120万条消息中重构生活图谱
背景
2014年,Tim Urban在《WaitButWhy》博客上发表了《你的一生以周计算》(Your Life in Weeks)一文。文章展示了一个网格图,每个方格代表一周生命,而大多数方格已被填满。这张图片多年来一直困扰着作者,促使他开始追踪生活中的数据。他的初衷并非仅仅为了倒计时,而是希望这个网格能赋予生命某种意义。
然而,传统的生物识别数据或生活事件记录(如工作、旅行、学校、婚姻)虽然易于标记,却无法真实反映一个人在那些周里的感受,以及他在人际关系中的角色。传统的日记形式(从纸质到Obsidian笔记)虽然记录了当下的想法,却遗漏了那些被遗忘的对话和当时无法察觉的缓慢变化的模式。
鉴于自己在维持人际关系方面的拖延症,作者决定利用过去几十年在互联网上留下的海量数字足迹,构建一个基于记录而非记忆的“个人CRM”(客户关系管理系统),试图通过数据来弥补人际互动的不足。
核心内容
作者将其在线存在大致划分为三个时代,并收集了相应的数据档案:
- 2000年代:ICQ、IRC、DC++。这些午夜频道的聊天记录大多已消失,且作者认为那个十岁的自己不需要结构化归档。
- 2010年代:VK(在后苏联地区流行的社交网络,数据可追溯至2008年)、Twitter、Facebook。涵盖了学校、大学及职业生涯早期。
- 2010年代至2020年代:Instagram和Telegram。尽管作者很少在Instagram发帖,但私信(DM)成为联系人的主要方式,且越来越多的人从WhatsApp转向Telegram。
借助GDPR和数据访问权,作者获取了包含所有消息、反应和社交图谱的档案。
数据清洗与解析的挑战 解析JSON和HTML文件并不困难但也不愉快。不同平台的数据结构差异巨大:Instagram对西里尔字母进行了双重编码;Telegram在不同日期的导出中分配不同的内部消息ID;Facebook引入端到端加密导致同一消息出现在三个不同文件夹中;VK导出一切而不询问;Instagram不区分广播频道和个人聊天。
最终,数据被统一解析为制表符分隔格式。Telegram和VK主要提供私信数据;Instagram增加了故事互动和粉丝图谱;Twitter则较为特殊,独立推文构成发布语料库,而私信多为支持请求或会议协调,因此需要回复/提及图谱来捕捉真实信号。
噪音过滤 在分类之前,必须处理数据中的噪音。在作者与伴侣长达十年、包含48.6万条消息的最长对话线程中,仅有28.4%是填充性短句,58.7%是实质性文本,其余为链接、媒体和纯表情符号。这意味着约41%的数据对于此次分析而言是噪音。
过滤短消息中的填充词极具挑战性,简单的字数限制(如少于3个词)会误删重要信息(如“他死了”),而建立黑名单(如“hahaha”)在多语言环境下效果不佳。最终方案是从聊天中五个偏移位置采样,频率统计短令牌,人工审查前80个,并将黑名单与保护集(用于包含生活事件的短消息)配对。
清洗后的语料库包含约52,000个唯一词元(lemmas)。新颖率(即以前从未在任何聊天中使用过的词汇比例)自2008年以来持续下降,并在六年前稳定在6%。这表明作者的大部分词汇库在20岁出头时已固定。
实体解析与分类难题 清洗后的消息需要分类:什么是生活事件?什么是闲聊?谁被提及?情感温度如何?
- 身份识别(Which Sasha?):许多人跨平台使用不同用户名,且昵称繁多(如Alexander可变为Al, Alex, Xander, Sandy, Alec, Sasha等)。在斯拉夫语系中,“Sasha”甚至可以是中性昵称。启发式规则和NER(命名实体识别)模型无法处理群组聊天中成千上万仅包含名字提及的情况。虽然可以用BERT微调训练分类器,但这需要大量人工标注,违背了作者避免手工劳动的初衷。
- 事件分类:基于第一人称动词(如“搬家”)和NER提取实体会产生大量误报。“I moved”在发给母亲的消息中可能指搬家,在朋友聊天中可能指室内设计,在分手后则可能指情感里程碑。微调分类器在单一领域专业标注语料上最高仅能达到75.6%的F1分数,而在多语言闲聊和小样本标注下表现更差。在120万条消息中,即使1%的误报率也意味着12,000个虚假事件。
LLM的介入 最终,作者使用大型语言模型(LLM)进行名称解析和分类。
- 成本:总共运行了200多个会话,包含约150-200亿个token(含上下文)。使用Opus模型成本约为1.5万美元;若在本地M5 Pro 32GB机器上通过MLX运行Qwen3-30B-A3B,则需连续推理10-15周。
- 流程:LLM不直接写入档案,而是读取消息块并生成结构化的JSON清单(包含每日笔记要点、实体档案事实、生活时间线事件、地点更新及未解决的歧义列表)。
- 验证:在低于6,000条消息的块处理中,与200个事件的保留集相比,误报率低于1%。
- 存储:确定性脚本读取JSON并注入要点,每个要点都带有指向源头的来源标记(provenance marker),存储在SQLite来源库中。
关键要点
- 数据价值重构:传统的生活记录(网格图)侧重于重大事件,而聊天记录能更真实地反映个人的情感带宽、亲昵周期(endearment cycles)和友谊的半衰期。
- 数据异构性:不同社交平台的数据导出格式差异巨大,需要复杂的预处理才能统一。例如,Instagram的双重编码、Facebook的加密文件夹分裂等问题。
- 噪音占比高:在长期对话中,实质性文本仅占约58.7%,其余为链接、媒体、表情符号和填充词。过滤噪音需要结合频率统计和人工审查,而非简单的规则匹配。
- 词汇固化:作者的新词率自2008年起下降,六年前稳定在6%,表明其核心词汇量在20多岁时已基本定型。
- 实体解析困境:跨平台用户名不一致和昵称多样性使得自动身份识别极为困难,传统的NER模型无法有效处理仅含名字的提及。
- 分类准确性瓶颈:基于规则或传统机器学习的事件检测在多语言、非正式语境下准确率有限(F1约75%),容易产生大量误报。
- LLM作为解决方案:使用LLM进行结构化提取和分类,虽然成本高昂(Opus模型约1.5万美元)或耗时极长(本地推理10-15周),但能将误报率控制在1%以下,并生成带有来源追踪的结构化数据。
意义与影响
这项实验揭示了数字足迹在个人生活分析中的巨大潜力,同时也暴露了当前技术处理非结构化、多语言、跨平台社交数据的局限性。
- 个人知识管理的范式转移:从被动记录转向主动的数据挖掘。通过构建个人CRM,个体可以更客观地审视自己的社交模式和情感投入,从而“赢得朋友并影响他人”(借用卡耐基书名),或者至少更清晰地了解自己的情感带宽和友谊维持能力。
- 数据隐私与访问权的实践:作者利用GDPR等法规获取数据,展示了个人数据主权的重要性。然而,这也引发了关于数据集中存储、隐私保护以及平台数据垄断的讨论。
- AI在个人数据分析中的角色:实验表明,传统NLP技术在处理日常闲聊、歧义和跨语言昵称时力不从心,而LLM虽然成本高,但在语义理解和结构化提取上具有显著优势。这为未来个人AI助手的开发提供了参考:即利用LLM作为“中间件”,将原始数据转化为可操作的结构化知识。
- **
