Firefox 嗅覚系機能拡張
Foxnose
2007年2月25日公開
Firefox 1.5 以降対応
20〜30MBのメモリを占有します
表示中のページのトピックを推定して、画面上部に表示します。厳密には、「ページ内で使われている言葉の傾向が2ちゃんねるのどの板と似ているか」を計算することで文書のテーマを嗅ぎつけるというしくみです。
さらに、好きな話題の含まれていそうなページを読み込むと強調表示しておしらせします。
ダウンロード
辞書同梱 XPI ファイル foxnose.xpi
(Firefox 1.5 以降対応、機能拡張としてインストール)
自動更新用の update.rdf は更新止めてあります。上書きすると保存した辞書とかも上書きされてしまうので、install.js の上手い書き方を調べてるとこです。
つかいかた
トピックの表示
ウェブブラウジング中に、表示中のページのトピックを推定して表示します。ただし表示されるのは「2ちゃんねるの中で、どの板に似ているか」なので、ときどき独特の言葉が混じってきます。殆どは「数学」「データベース」「B級グルメ」など、ふつうの人がふつうに理解できる言葉なので、2ちゃんねるに距離をおいている人でも大丈夫です。
あと、ヤバそうなページをタブで開く→ようすをみる、という使いかたもできるかも。
表示部分はこのようになっています。各部分には以下のような意味があります。
- 判定モード on/off の切替。Firefox 起動時にはオフになっています。最初にオンにするときは、辞書ファイルの読み込みで数秒かかりますが、あとはほぼストレスなく使えるはずです。
- 表示欄。そのページに似ていると判断された板名が最大6個並びます。ただし、あまりにも短いページ、日本語以外のページ、フレーム内のページは判定不能です。ごめんなさい。
- キーワード。マウスカーソルを板名に重ねると、どのキーワードが効いてその板と似ていると判断されたかが表示されます。
- 設定画面を開きます。設定については後述。
- このバーを消します。邪魔だと思ったときに押してください。
後述の手順で設定をしておくと、アラート対象に設定してある板との類似度が高いと判断されたときに、指定した色で強調表示されます。さらに、「アラートを点滅させる」にチェックが入れてある場合は、ぴこぴこと点滅します。
ヒットした板名は太字で表示されます。
下の画面は、チェックしておいた「土木・建築」板との類似度が高いと判断されて強調表示されている場面。
設定
「ツール」メニュー、もしくは「設定」ボタンから、設定画面を開きます。

カテゴリと板が左に表示されます。「表示」のチェックをはずした板は、トピックの判定から除外されます。興味がないものは外してしまうことができます。
(デフォルトでは "2ch運用情報" 関係がオフになっています。)
逆に、興味のある板は「アラート」のほうにチェックを入れておくと、傾向の似たページを閲覧しているときに強調表示されます。
右のカラーパレットから、通常表示と強調表示の色をそれぞれ選べます。さらに、「アラートを点滅させる」にチェックを入れておくと、ヒットしたときに強調色で数回点滅します。
辞書の更新
設定画面の「辞書管理」タブを開くと、辞書の更新ができます。
半手動。更新をチェックし、新しい辞書がサーバ (ここです) にアップロードされているのを確認してダウンロードできます。
判定には、「2ちゃんねる」「まちBBS」の板リスト、および各板で使われている言葉の傾向を集計したデータを使います。
2ちゃんねるには時々新しい板が加わることもあります。また、新しい話題に反応したスレッドがどんどん作成されます。
2ちゃんねるで扱われている話題の広さ・深さ・新しさに注目して作った機能拡張なので、ときどき辞書を更新していれば最新のキーワードに対する感度が保持できるというわけです。こういう新しい情報を反映した辞書を、作者が手動で、しかも気まぐれで更新します。そのうち自動で定期更新するかも。
誤認識もけっこう発生しますので、あくまで目安としてご利用ください。たとえば、漫才関係のページを見たときに、「ネタ」という言葉がたくさん出てくるのに対応して「おすし」などが出てくる場合もあります。
しくみ
元となったネタ、拙作ふいんきり〜だ〜と殆ど同じ仕組みです。
- 2ちゃんねるの各板のスレッドタイトルを集めます。RSS 配信が当たり前になる前の時代から、加工しやすく、軽い形でサイトサマリーを提供していたのが2ちゃんねる。
- 形態素解析 して、板ごとに頻度を集計します。
- ……が、これだけでは「人」「ニュース」などのありふれた語の数が多くなってしまうので、TF-IDF という計算方法で「重み付け」を行い、形態素ごとのスコアを出します。
- ここまでの計算結果をまとめたものを、データベースとして利用します。www.madin.jp 上で提供している辞書に含まれています。(機能拡張の XPI ファイルに同梱されています。「設定」画面から最新辞書を取得できます。活発な掲示板サイトをソースとしているだけに、時事ネタもにも敏感に反応してくれるはずです。)
- で、ここから先がクライアントサイドの処理。ニセ形態素解析を行い、2ちゃんねるの各板に対して行ったのと同様の方法で重み付けをします。
- 各形態素をひとつの軸・スコアをその軸の成分とし、高次元のベクトルと考えます。内積をとって、余弦値を計算。余弦の値が大きい (完全に同じ方向だと cos(0) = 1 になります。これが最大)ほど「類似度が高い」ということにします。
- 類似度ランキング上位6位までを表示します。ついでに、類似度に大きく寄与した要素も記憶していますので、「キーワード」も抜き出せるというわけです。
言葉の切り分けはエブログ:JavaScript で形態素解析もどきを参考にさせていただきました。
(JavaScript 経由で ChaSen とかが使えるともっといいんだけど。)
機能拡張をつくるのははじめてだったので、ほかにも多くのサイトを参考にさせていただきました。これは勉強になるなと思ったところは、私のはてなブックマークにJavaScript・Firefox・XUL あたりのタグをつけてメモしてあります。
あと、感想・要望などがあったらblog のほうにツッコミとして書いていってください。
更新履歴
- 1.0.4
- 使用メモリを約2/3に減らす。一部環境で設定ウィンドウの下がはみ出すので若干サイズ変更。
- 1.0.3
- H1〜H6、strong、em タグ内の文字列に重み付けするよう改良。
- 1.0.2
- 起動前に「設定」窓を閉じようとすると例外が発生するのを修正。
- 1.0.1
- 最初に「トピック表示モード」を起動した窓を閉じたあとでほかの窓で「トピック表示」を起動した場合、メモリを食いすぎるバグを修正。
- 1.0.0
- 公開
- 0.x
- 作者が一週間くらい自分で使っていたもの。現行版とぜんぜん違うもので超シンプル。封印した。
今後
たぶん、この続きをどんどんやります。
- 次は Plagger に組み込めるようなものとして移植作業。色んなフィードの中から、興味ある分野のものをピックアップできたりして便利じゃん。……というわけで、これから Plagger を勉強します。がんばります。
- 同時に、フィルタコマンド化。
標準入力から読みこんだ文書を解析し、標準出力に結果を出す。使いようによっては、ちょっとしたスクリプトと組みあわせ、大量のテキストファイルをジャンル分け……とかできて超便利。
- さらに、それ使ってニュース・ブックマークを分類して提供するサービスをやる。
ほどよい粒度でクラスタ分けしたニュースサイトが作れるという寸法。
SBM でタグ追っかけていくと、どうも分類が細かすぎるので……。
- 日本語以外にも対応したい。慣れていない言語こそこういう機能は必要なはずです。ただ、2ch のデータだけだと精度が出せないので、なにかいい方法を考えます。ちょっと待って。
- 日本語を母語としない人が日本で情報収集するときに補助になるような、もっとまじめなツールに改良するといいかも。
慣れない言語で長い文書読んだのに興味ない内容ばかりだったりすると、凄くがっかりするから。
- エロ語が大量に並ぶのもアレだなあと思って BBSPINK は外しているんですが、これを含めることでエロサイトフィルタとして活用できるかも。ちょっと検討。エロサイト回避したい人にも、むしろ率先して見たい人にも便利。
- キーワードの前後を抜きだして表示できるともっといいかも。検討。
タグで重みづけすることも考えたほうがいいかも。たとえば、strong やem や h1, h2, h3 なんかはポイント二倍、とか。実装しました。
- 少し精度を下げてメモリを節約することも考える。辞書を大中小用意して、
選択できるとか。
- もちろん現行版に不具合があったら直す。
- 作者本人の鼻が悲惨なことになってきたので、本気で花粉症対策。
おまけ
Firefox 麦畑。これはすごい。
ごうだまりぽ/ Mariko GODA
mailto : madin[at]madin.jp
http://www.madin.jp/
はてなポイントで寄付受け付てます。