Hatena::ブログ(Diary)

自然言語処理 on Mac

2012-05-14

自然言語を使った対話型ゲームFaçade

Façadeは、人工知能の技術を応用したドラマ仕立てのゲームです。画面上で自然な会話を繰り広げる二人のキャラクターに対して、ユーザがことばをキー入力すると、それが解釈されてシナリオが進んでいきます。ゲームがフリーウェアとして公開されているので、実際に試すことができます。Javaで動いているようなのですが、Mac版は手元のLionマシンで起動できませんでしたが、Windows版は動作確認できました。
http://www.interactivestory.net/download/

また、YouTubeにゲームの様子をキャプチャした動画がいくつも登録されています。
D

Façadeの自然言語処理に関して論文が発表されています。ユーザが入力したテキストは、ルールに基づいて談話行為に変換されます。談話行為として、賛成、感謝、謝罪、批判など20個以上が用意されています。変換ルールは、独自のテンプレート言語で記述され、エキスパートシステムCLIPSJava実装であるJessルールエンジン形式に変換されます。
Natural Language Understanding in Façade: Surface-text Processing
Michael Mateas and Andrew Stern
Best Paper Award, Technologies for Interactive Digital Storytelling and Entertainment (TIDSE), Darmstadt, Germany, June 2004

単語のマッチングにはWordNetも利用され、慣用句として言語資源に登録されていた約9,000項目の中から、ドラマゲームのドメインにあった約1,000項目が含まれているそうです。

2012-04-07

MacPortsでLionのbuildbotが稼働開始

アナウンスは特にないようですが、MacPortsLion(Mac OS X 10.7)のbuildbotが動き始めました。これまでSnow Leopard(10.6)のbuildbotは動いていて、ビルド済みのバイナリパッケージを直接ダウンロードすることでインストール時間が大幅に短縮されましたが、最新OSであるLionでも同様のさくさくインストールが実現しそうです。といっても、まだ動き始めたばかりで、バイナリパッケージがそれほど出来ていないため、あまり恩恵に与れませんが、それも時間が解決することでしょう。

2012-03-12

オープンソースのバージョン更新情報を検知する

MacPortsの場合、利用できるオープンソースのportがそれぞれの管理者やボランティアによって都度更新されています。更新分を手元に反映させる場合、次のようにportコマンドを実行することになります:

$ sudo port selfupdate
$ sudo port -u upgrade outdated

このとき、64ビット版Snow Leopardの場合はbuildbotが動いていているので、デフォルトのportであればバイナリダウンロードしてきてコンパイルなしに更新されるのでストレスが少ないです。早くApple側でLion版のbuildbotが動くと良いのですが…。
MacPortのBuildbotでContinuous Integration - 自然言語処理 on Mac
Is buildbot a Snow Leopard of a Lion???

MacPortsには、portが対象としているオープンソース配布物のバージョン更新を検知するlivecheckという仕組みがあります。たとえば、インストール済みのportの配布物の更新情報を知りたい場合、次のコマンドを実行します:

$ port livecheck installed
...
cabocha seems to have been updated (port version: 0.60, new version: 0.61)
...

配布物のウェブページから正規表現などで最新バージョンを求めていて、port -d livecheck [port]とすると、詳細な動作が分かります。使いたい最新版がportになっていない場合など、MacPortsのTracに、チケットをあげて管理者にCcとすると対応が速いかもしれません。

2012-03-11

述語項構造をsynchaで解析する

synchaは、CaboChaで求まる文の係り受け関係に基づいて、述語を中心とした文の構成要素の構造を解析します。同じ述語でも、構成要素の種類が変わると意味が異なる場合があります。逆に、構成要素の構造が同じであれば、異なる述語同士であっても同じような意味をとる場合があります。格フレームは、述語の意味ごとに規定されて構成要素をスロットとする構造体ですが、文の格フレームが解析できると、述語の意味や構成要素がどのような役割をもつのかが分かります。また、文脈に埋もれて記述に省略がある場合でも、何があるべきかが推定できます。なお、KNPも、Webテキストから構築した大規模格フレームに基づいた述語項構造の解析が可能です。

オリジナルのsynchaはEUC-JPベースですが、MacPortsでは、UTF-8ベースのCaboCha-0.60を利用して、データもUTF-8に変換することで、入出力をUTF-8化しました。

ところで、最新版0.61のCaboChaはCRF++のバージョン0.55以降が必要となっていますが、少なくともMac OS Xの場合、あいにくCRF++0.55に対してはCaboChaのビルドに失敗し、最新版のCRF++0.56ではCRF++コマンドやライブラリ自体のビルドができません。

そこで、CRF++のportをとりあえず次のように2つに分けました:

  • crfpp:Version 0.54
  • crfpp-devel:Version 0.55

CaboChaのportはcrfppに依存しています。

2012-03-10

意見(評価表現)抽出ツールとJUMAN・KNPのバージョン依存関係

NICTから公開されている意見(評価表現)抽出ツールは、JUMANKNPを利用しますが、最新版の一つ前のバージョンが必要です。最新版のJUMANやKNPはUTF-8化されていて辞書も拡充されているので、それまでのバージョンに比べて出力結果が異なります。そこで、MacPortsを次のように変更しました(ポート名:バージョン番号;依存関係):

  • extractopinion [意見(評価表現)抽出ツール]:Version 1.2;juman6とknp3に依存
  • juman:Version 7.0
  • juman6:Version 6.01
  • knp:Version 4.0;jumanに依存
  • knp3:Version 3.01;juman6に依存

コマンド名はポート名と同じです。なお、MacPortsにはselectという機構があって、特定バージョンのコマンドに切り替えることができます。pythonscalaなどに適用されていますが、jumanやknpはそうなっていません。