ATOKダイレクトAPI 使ってみた
さて、冬学期の授業でPlanetLabと言う分散アプリケーションを使ってネットワークプログラミングを行うプロジェクトがあったので、うちのチームはATOKダイレクトAPIを使って、分散ネットワーク辞書を構築するということをやっている。
と言うか、チーム各員で分散アプリケーションについて考えてみたのだけれども結局ネタ何も出てこず、ATOKダイレクト 開発者ブログも盛り上がっていることだし、公開されたばかりのATOKダイレクトAPIを使ってみたかったと言う個人的な理由でやることに。
id:nokunoさんのSocialIMEが先行例としてはある訳だけれども、今回のプロジェクトは既存のオフライン辞書における以下の問題点の解決を目的とした。
- 辞書ファイルが現状では肥大化しつつあることで、候補が膨大になる
- 所属する組織(と言うか、ゆるやかな意味でのグループ)によって使う語彙は異なる
- 固有名詞と秘密個人情報を結びつけて入力することが出来ない(ex顧客氏名→顧客住所)
- 使用頻度のグループとしての重みづけ
これらの問題点に基づいて、辞書ノードを複数用意するというこで辞書の分散化をしつつ、グループでの辞書共有を行ったのが今回のプロジェクトの特徴。簡単に図にするとこんな感じ。
クライアント側からある辞書ノードに問い合わせて候補が見つからなかった場合、他のノードに再帰的に問い合わせることでなるべく変換出来るような仕組みも設けている。もちろん、秘密情報の場合は別ノードには出さない。
また、現状ではノード群が固定のリングネットワークを構成しているけれど、辞書の類似度からノード間の繋がりを再構成するような仕組みも出来たらいいなと考えている。
構成としては、
と言った状態で動かしている。入力語からパターンマッチで候補を選んでいるので、Anthyとか検索エンジンは使ってない。単語しか変換出来ないという話もあるけれど、授業のプロジェクトだし気にしない。
で、授業の一貫なので期限までにやればいいやとだらだらしてしまって真面目に実装していなかったら、『ATOKダイレクトAPIで共有辞書(たま)プラグインを作ってみた』と言うことで、id:yawhooさんに先を越されてしまった(笑)
やっぱ、こういうのはささっと作るのが重要ですね。
しかし、このプロジェクトの問題点は「それ、PlanetLabじゃなくても出来るじゃん!」と言われてしまうことに耐え続けることだったり…。
とりあえず既に動いている状態なので公開してみたいのだけれども、最終発表前なので公開はちと無理かも。最終発表後に出せるといいな。
ATOKダイレクトAPIを使ってみた感想としては、やはりプラグインを誰でも作れるのは非常に便利!
だけれども、辞書としては決定した語句というのも非常に重要なので(重み付けとかに)、今後の改良でATOKが決定語句をプラグイン側に返してくれるようになると非常にありがたいです。
どうか、id:ATOKDirect様方よろしくお願いします!