mixiの司書コミュでのOPACについての議論の中であった、「自分では選ばないような本との出会いができるOPAC」というご意見を参考に、また「はてラボ」(http://hatelabo.jp/)のプロジェクトの一つ、「はてなWordLin」(http://wordlink.hatelabo.jp/)にインスパイアされて、図書館の新着図書・雑誌情報のタグクラウドのようなものを作ってみました。
お試しはこちらから:
新着図書の海へ
細かいところでは謎の単語があったり解析しきれていなかったりとβ版な状態ですが、頻出単語のフォントサイズを大きく見せるなど、それらしいものに仕上がりました。リンクは弊社OPACへの検索へと繋がります。
プログラム言語にはPerlを使用していますが、リファクタリング必死な素人コーディングです。なのでコードは内緒。
以下、処理の概要です。
- LWP::Simple::getで各拠点図書室56個所の新着図書/雑誌受入情報RSSフィード112を取得、XML::RSSでitem要素のうちtitle(書誌名)だけを抽出。
- 抽出したtitleを形態素解析器 MeCab ( http://chasen.org/~taku/software/mecab/ )を使用して単語と品詞を解析。
解析の例は上記のURLをご参照ください。
出力パターンをカスタマイズして、このうち表層形(単語)と品詞のみを出力させています。
- 解析した品詞のうち名詞だけを抽出し、重複している単語の数をカウント。
- 使用している単語でこちらのOPACへの検索式が投げられるようURLを生成、単語からリンク。
getメソッドでqueryを投げられるのはこういう時楽です。URLに埋め込む検索語はURLエンコードしています。
- 単語の使用回数に応じて、スタイルシートで <span style="font-size : 3em">単語</span> のようにして各単語のフォントサイズを決定。
いろいろ試行錯誤して調整してみましたが、見やすさを考え、4回以下、5~9回、10~20回、21回以上でそれぞれ1~4emにしています。
- 単語とリンク部分をJavaScriptで書き出し、ocean.htmlから呼び出す方法を採用。
この方法ですと、他のサーバのページからも自由に呼び出すことができます。(今回の場合はニーズは少なそうですが) JavaScript自体は毎朝cronで更新します。
件名なりその他利用できそうなデータが入っていれば、もっと使い出があるとかもしれませんが、今回は新着図書/雑誌中の単語からOPAC全体を検索させることで、「意外な資料との出会い」の場のような感覚を持ってもらえるかもしれません。
あとは、解析の基礎になる辞書の精度向上などの部分がまだ未完成ですかねえ。明らかに分かち書きしていない単語もありますし。英単語が「感動詞」扱いで拾えていなかったり。もうちょっと工夫する余地はありそうです。
このデータのRSSフィードによる再配信も考えましたが、頻出単語ばかり送るのも飽きられそうですし、ここはやはりlongtail狙いであえて出現頻度の少ないキーワードを配信するのがGoodでしょうか。
以前のエントリのOPAC2.0についても再考中ですが、今日はこんなところで。