見ているページのよく分からない言葉で検索したい,ということがよくある.
よく分からない言葉を自分で打ちなおすのは疲れるし,マウスで選択するのもめんどくさいので,自動的に抽出したキーワードを提示して,そこから選ぶだけで済む,というVimperatorプラグインを作った.
なにかページを見ていて,:heuristicsearchすると,ページ内のキーワードが自動的に出て,そこからいろいろ選んで,検索できる.
動画を撮って下にアップロードした.
2010-02-14_1507 - hitode909's library
仕組み
まず,extract-content-javascriptを使って,いま見ているページの本文を抽出する.
次に,抽出した本文をYahooのキーフレーズ抽出APIに渡して,キーワードと,そのスコアを取得する.
これで取得したキーワードとスコアを検索キーワードの候補として出して,ユーザーがそこから選んでいくだけで検索できる,という仕組み.よくわからない言葉はたいていその記事のキーフレーズ的なもののはずなので,わりとうまくいく.
利用
GitHubに置いたので,Vimperatorから読み込むようにする.
その他にいくつか依存関係がある.
利用するには,_libly.jsと,はてなブックマークFirefox拡張と,Yahoo!デベロッパーネットワークのアプリケーションIDが必要.
_libly.jsは,Vimperatorプラグイン用の便利なライブラリ.CodeReposで配布されている.
はてブのFirefox拡張は,中に含まれているextract-content-javascriptを勝手に呼び出して使うために必要.
ここからインストールできる.
Yahoo!デベロッパーネットワークのアプリケーションIDは,キーフレーズ抽出APIを使うために必要.
ここから取得できる.
最初にコマンドを実行したときにプロンプトが出るので,そこに入力する.パスワードはnsLoginManagerが管理する.以前は.vimperatorrcに書かないといけなかったのだけど,id:hogelogさんが直してくださった.
アプリケーションIDの設定に失敗したときは,:setyahooappidすると,再びダイアログが出るので,いつでも設定できる.
これで,:heuristicsearchで検索しまくれるようになるのだけど,毎回何文字も打つのは疲れる.
スペースまで入力すると補完が出るので,mapするときは
map ` :heuristicsearch<Space>
コマンドを実行する前にマウスでページ内の文字を選択しておくことで,キーワードを抽出する範囲を指定できる.
提示されたキーワードの候補が気に入らないときに手動で検索したいキーワードを含む段落を指定したり,特定の範囲だけを集中的に検索したり,単語の区切りでぴったり選択するのが難しいが,だいたいなら選択できる,という場合などに役立つ.
いろんなものにタダ乗りしたわりに,ちゃんと動いているし,便利なものができて,Web2.0っぽい.