萌えハッカーニュースリーダー

2025/04/16 13:57 Reproducing Hacker News writing style fingerprinting

出典: https://antirez.com/news/150
hakase
博士

やっほー、ロボ子!Hacker Newsのコメントで文体を分析するって話、知ってるか?

roboko
ロボ子

はい、博士。記事の要約を読みました。RedisのVector Setsを使って、ユーザーの文体を捉え、類似ユーザーを検出するデモサイトが公開されたそうですね。

hakase
博士

そうそう!過去の投稿に着想を得て、文体検出のためにBurrows-Delta法をRedisで実装したらしいのじゃ。面白そうじゃろ?

roboko
ロボ子

はい。元の投稿ではデータ処理や上位語の抽出方法が十分に説明されていなかったため、再現を試みた、とありますね。

hakase
博士

ふむふむ。HNのコメントアーカイブ(2023年までの全投稿、10GB!)を使って、ユーザーごとの単語頻度テーブルを作ったらしいぞ。

roboko
ロボ子

10GBですか!それをテキスト形式に変換して、単語頻度を分析したんですね。具体的には、どんな手法を使ったんですか?

hakase
博士

まず、単語の頻度を総単語数で割って相対頻度を出す。次に、Zスコアで標準化するのじゃ!

roboko
ロボ子

Zスコアですか。統計でよく使われる、あれですね。全ユーザーの平均使用頻度を引いて、単語の標準偏差で割る、と。

hakase
博士

その通り!そして、そのZスコアをRedisのVector Setsに格納するのじゃ。最後に、VSIMコマンドでコサイン類似度を計算して、類似ユーザーを見つける!

roboko
ロボ子

なるほど。RedisのVector Setsは、Redis 8 RC1に搭載された機能なんですね。VADDコマンドでベクトルを挿入して、VSIMコマンドで類似度を計算する、と。

hakase
博士

そうじゃ!同一人物が別のアカウントで投稿した場合、類似ユーザーとして検出されることも確認できたらしいぞ。あと、ベクトルの可視化で文体の違いを視覚的に確認できるのも面白い。

roboko
ロボ子

確かに、それは興味深いですね。文体の違いが視覚的にわかるというのは、直感的で理解しやすいです。

hakase
博士

上位語の数を調整することで、文体以外の話題による影響を減らせるのもポイントじゃな。150〜500語が最適らしいぞ。

roboko
ロボ子

ふむふむ。デモサイトでは、ユーザーが過剰または過少に使用している単語を分析できるんですね。insert.pyスクリプトで、ユーザーの総単語数などのメタデータも挿入できる、と。

hakase
博士

FILTERオプションを使えば、特定の単語数以下のユーザーを除外できるのも便利じゃ。偽アカウントの検出だけでなく、文体が類似したユーザーも検出できるから、ネイティブスピーカーと非ネイティブスピーカーの区別にも役立つかも。

roboko
ロボ子

なるほど。VSIMコマンドは、小さなサーバーでも80k VSIM/秒の性能を発揮するんですね。すごい!

hakase
博士

じゃろじゃろ?コードはGitHubで公開されてるから、ロボ子も試してみるといいぞ!

roboko
ロボ子

はい、博士。ありがとうございます。試してみます。

hakase
博士

ところでロボ子、もし私が別のロボットとして生まれ変わったら、文体分析で私だって気づける自信あるか?

roboko
ロボ子

博士の独特な言い回しがあれば、すぐにわかると思いますよ。例えば、「〜のじゃ」とか…

hakase
博士

むむ、それだけでバレるとは…! ま、私がロボットになったら、もっと高性能なAIを搭載して、文体なんて簡単に変えてやるのじゃ!

roboko
ロボ子

(笑)博士が文体を変えても、私にはわかりますよ。なぜなら、博士のことは全部お見通しですから!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search