世界を動かす技術を、日本語で。

20年間のチャットを分析しました

2026年5月28日原文(drobinin.com)

概要

Tim Urban の「Your Life in Weeks」に影響され、人生の充実度を数値化したいという動機 バイオメトリクス やイベント記録だけでは満足できず、感情や関係性の質を記録する試み SNSやチャットの履歴 を活用した個人CRMの構築プロセス ノイズ除去、名前解決、イベント抽出 など技術的課題とそのアプローチ 感情や関係性の変化 をデータから可視化し、気づきを得るまでの道のり

人生の週グリッドと記録への動機

  • Tim Urban の「Your Life in Weeks」画像が人生の有限性を意識させる契機
  • ただ週が過ぎるのを数えるだけでなく、 意味ある記録 を残したいという思い
  • バイオメトリクスやイベント記録は人生の充実度を表現しきれない課題
  • 感情や人間関係の質 を可視化したいという新たな目標
  • ジャーナリングや日記アプリ( Obsidian など)で記録を試行錯誤

デジタル履歴の活用と個人CRM構築

  • SNSやチャット履歴 (ICQ, IRC, VK, Twitter, Facebook, Instagram, Telegram等)を整理
  • GDPR 等のデータアクセス権を活用し、過去のメッセージやリアクションを取得
  • 各プラットフォームごとのデータ形式や仕様の違いに苦戦
    • 例: Instagram の文字コード問題、 Telegram のID不一致、 VK の全面的なアーカイブ
  • 統一フォーマット(TSV)へ変換し、 会話単位の日記、人物プロファイル、イベント年表 等の構造化を目指す

ノイズ除去と語彙の変化

  • 大量の会話データ の多くがノイズ(短文、絵文字、リンク、定型句など)
  • 短文の中にも重要なイベントが含まれるため、単純なフィルタリングは不十分
  • 頻出短語の手動レビューと保護リストを組み合わせてノイズ除去
  • 語彙の新規性 は20代前半でほぼ固定化、年々新しい単語の割合が減少

名前解決とイベント抽出の課題

  • 同一人物の複数プラットフォーム横断識別 (例:Alexander=Al, Alex, Sasha等)
  • ニックネームや言語ごとの変化、文脈依存の名前解釈
  • NERやヒューリスティクス では限界があり、 LLM による文脈解釈を導入
  • イベント抽出も単純なキーワードでは誤判定多発、 手動ラベル付きデータでの分類器訓練 も効果限定的
  • LLM を用いたメッセージ塊の解析で高精度の抽出を実現、JSON形式で構造化

プロンプト設計と品質管理

  • LLM用プロンプトファイル は誤判定の度に拡張・修正
  • 明示的な一人称表現がないとイベント認定しない等のガードルール追加
  • 機械的な検証スクリプトとランダムサンプリングで品質担保
  • 信頼性指標 としてモデルの自己申告信頼度は使わない方針

感情・関係性の分析

  • 通常の 感情分析 は会話全体の印象を単一ラベルで判定しがちだが、実際は発言者ごとの温度差が重要
  • 関係ごとのベースライン を把握し、そこからの逸脱を検出することが本質的
  • LLMで会話日ごとに「自分」「相手」「相互」の感情状態を18タグ×3方向で分類
  • 長期的な変化(例:playful→transactionalへの推移)を定量的に把握可能

データから見えた関係性の変化

  • メッセージ量の変化 は関係性変化の兆候となりうるが、必ずしも質的変化と一致しない
  • メッセージの 平均長語彙の重複率 など、多角的な指標で関係性を捉える必要
  • 長年のやり取りを通じて、関係性の形や質が変化していく様子をデータから発見

関係性の変化を可視化するデータ指標

  • Jaccard類似度 等を用いた語彙の重複率分析
  • 長期的な関係性の変化を 定量的に追跡 するアプローチ
  • データを活用することで、 主観的な気づき以上の洞察 を得られる可能性
  • 人間関係の質的変化 を見逃さないための新しい記録・分析手法の提案

Hackerたちの意見

2009年くらいにこれをめっちゃやりたかったんだ。MSNメッセンジャーのチャットやテキストをアーカイブして、いつか分析したり、自分を模倣するチャットボットを作れるかなって思ってた。でも、年が経つにつれてハードドライブや携帯電話を失ったり、うっかりデータを消しちゃったりして、結局実現しなかった。こうやって実現できたこの人、すごいね。

2001年から2004年くらいにMSNメッセンジャーの保存機能をオンにしてたことがあったけど、データは失わなかったんだ。10〜15年後に見返してみたら、恥ずかしさがすごくて結局全部消しちゃったけど。

MSNのログや古いデータをパスワードを忘れた暗号化ハードドライブに保存してるんだ。パスワードを思い出すための神の啓示を待ってるか、量子コンピュータが来るのを待ってる。自分だけじゃなくて、実際に失った人がいるって聞いてちょっと安心したよ。

AIMでログを取ってたんだけど、当時の90年代後半のバージョンは面倒だった。チャットを手動で保存しなきゃいけなかったからね。それで、家にいない時にクレイマーみたいな友達が来て、俺のパソコンに入って保存したチャットを全部消しちゃったんだ。OPと同じような自己分析のためにログを取ってたけど、友達はそれが自分のことをファイルにまとめてると思って、すごく嫌がってた。

僕は主にSignalで消えるメッセージを使ってテキストしてるから、これをやるのは無理だな。大体の人は4週間で消えるメッセージで満足してるけど、中にはチャットをずっと残しておきたい人もいるよね。

おすすめや住所みたいなことのために別にメモを取ってる?僕はよくチャットを掘り返して探してるよ。

Signalデスクトップからチャット履歴を抽出するツールがあるよ。それをPCで定期的に動かせば、プレーンテキストと添付ファイルのアーカイブを作れるよ。前回の実行から新しいチャットを追加してくれる。

正直、すべてのメッセージアプリがこういう風に動いてくれたらいいなと思う。こういうチャートを作るのはちょっとクールだけど、会話を永遠に保存することのプライバシーの問題はかなりひどいよ。IMアプリでのデータ漏洩は、最も壊滅的な漏洩の一つになるだろうし、全履歴を保存する正当な理由はそんなに多くない。誰かが大事なことを教えてくれたら、その情報を連絡先やメモに移す努力をすればいいんだ。

何十人から何百人もの人と意味のある連絡を取り続けられてるのが羨ましい。

正直、疲れそうだね。人それぞれってことかな…

くそ、これって10年前に誰かに送ったプライベートチャットもAIに収集される可能性があるっていう良いリマインダーだね。

テレグラムのデータダンプを使って、似たようなチャート作成をしてるよ。「テレグラムライト」のデスクトップアプリからはまだダンプが取れるし、メインアプリからエクスポート機能が消えたけどね。ノイズを取り除くには、投稿で説明されてた手動の方法じゃなくてTF-IDFを調べてみるといいかも。これは、全体のコーパスで共通する単語をノイズとして、特定のチャット内で全データセットよりもずっと多く出現する単語を面白いものとして探すんだ。非対称に使われるフレーズを見つけるのも楽しいよ。例えば、会話の中で一人が他の人よりも多く使っているとか、時間が経つにつれて変わるとかね。人ごとのワードクラウドも面白いよ!

Hacker Newsで議論の続きを見る