2012年08月02日のツイート

多目的かつ高速軽量な自然言語処理ツールSENNA

昨年米国で開催されたTAC 2011 RTE-7では、NECのシステムが第一位を獲得したそうです:
NECのテキスト含意認識技術がNIST主催の評価タスクで第一位を獲得(2012年4月13日): プレスリリース | NEC
IKOMA at TAC2011: A Method for Recognizing Textual Entailment using Lexical-level and Sentence Structure-level features

このシステムのテキスト解析にはSENNA (Semantic/syntactic Extraction using a Neural Network Architecture) というツールが利用されています。SENNAは、多層ニューラルネットに基づいて、品詞タグ付け、チャンキング、固有名抽出、意味役割ラベリング、構文解析といった様々な機能を実現しています。特徴的なのは、タスクに特化した素性設計などをしていない点で、その代わり大量のラベルなしテキストデータの言語モデルを利用して各タスクを統合的に学習することで、ベンチマークに匹敵する性能を達成しているそうです。また、解析速度や使用メモリは他のシステムよりも高速軽量とのことです:
Natural Language Processing (Almost) from Scratch

プログラムをダウンロードして試すことが出来ますが、大変手軽に意味役割解析結果まで出力されるので驚きです。

ちなみに、RTEに触発されてNTCIRで始まったテキスト含意認識タスクRITE第2回目の参加募集が始まっていますね:
wiki:メインページ [NTCIR-10 RITE2]

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

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

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

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項目が含まれているそうです。

MacPortsでLionのbuildbotが稼働開始

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

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

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
http://lists.macosforge.org/pipermail/macports-dev/2012-February/017681.html

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とすると対応が速いかもしれません。

述語項構造を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に依存しています。

意見(評価表現)抽出ツールと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はそうなっていません。