apache uima
DESCRIPTION
あしたのオープンソース研究所 2011年10月25日開催 Apache UIMA 座談会 発表者 塩谷さん 提供 インフォサイエンスTRANSCRIPT
Apache UIMA
2011/10/25 第 26 回 あしたの研塩谷 沢生 ( インフォサイエンス株式会社 )
Copyright © Infoscience Corporation. All rights reserved. - 2 -23/04/13
今日のテーマ : UIMA
• UIMA : 非構造化データ管理アーキテクチャ– Unstructured Information Management Architecture
– You – eee – muh と読みます(公式ドキュメント FAQ より)
• 構造化されていないデータを処理するフレームワーク– ⇔ 構造化されたデータ : RDB のデータ、 XML データなど– 特に、元々の開発目的である自然言語処理がターゲット
• OASIS の標準仕様の一つ– OASIS は電子ビジネスの基盤となるデータ仕様の標準化団体– SGML 、 DocBook, ebXML などを策定
Copyright © Infoscience Corporation. All rights reserved. - 3 -23/04/13
Apache UIMA
• Apache UIMA : UIMA 仕様のリファレンス実装– 元々は IBM Research が自然言語処理用に開発 (2005 年 )
– 2006 年、 SourceForge で公開開始– 同年 10 月、 Apache Incubator プロジェクトの一つに– 2010 年 3 月、 Incubator から卒業
• 2011 年 2 月、 Apache UIMA で実装されたシステムWatson が米国クイズ番組 Jeopardy! で人間のチャンピオンを破って話題に– 今回のあしたの研のテーマにしてみました
Copyright © Infoscience Corporation. All rights reserved. - 4 -23/04/13
人間 vs. Watson
• 勝負の課題は、トリビアクイズ番組
• いわゆる早押しクイズ– 質問文を受け取り、回答する
• 人間のチャンピオンの正答率は 90% 近く– 従来のキーワードベースの A.I. では、せいぜい 30% 程度– 回答率と正答率のバランスを取るのが困難だった
• IBM は DeepBlue に続くプロジェクトとしてこの課題に挑戦– UIMA 上に新しいシステムを構築し、人間を上回る性能を実現
Copyright © Infoscience Corporation. All rights reserved. - 5 -23/04/13
Watson のアーキテクチャ
• Watson のコアエンジンは、 DeepQA と呼ばれている– 単に質問に対応する回答を探すのではなく、
回答 → 根拠づけ → 自己評価という多段階プロセスを踏むエンジン
– これらの処理が全て、 Apache UIMA 上のプラグインとして実装されている !
– ちなみに HW はラック 10 本分、総メモリー容量 15TB 、総コア数2,880 個
仮説作成質問解析
仮説 DB
根拠付け
根拠 DB
確信度判定
過去問での学習データ
回答質問
自然言語処理データ
Copyright © Infoscience Corporation. All rights reserved. - 6 -23/04/13
今日の話
• UIMA の基本的な考え方
• Apache UIMA を使ってみる
• Apache UIMA での複雑な処理
• Apache UIMA で作成したエンジンを使う
• まとめ
Copyright © Infoscience Corporation. All rights reserved. - 7 -23/04/13
UIMA は何をしてくれるのか
• UIMA は、非構造化データと構造化データの橋渡し役– 非構造化データ : テキスト、音声、画像など– 構造化データ : データベース、インデックス、ナレッジベース
など
※図は公式ドキュメントより
Copyright © Infoscience Corporation. All rights reserved. - 8 -23/04/13
UIMA がしてくれないこと
• UIMA 自体は、何も分析しない– 今日の話を聞いて Apache UIMA をインストールしても、それだけで
はクイズ王になれません
• 非構造化データを構造化データにするのは、開発者の役目– 構造化されていないデータを扱う技術は様々ある
• 自然言語処理• 機械学習• …
• UIMA に準拠したプラグインとして書くことで、これらのロジックを自由に組み合わせることが出来る– データ構造が標準化されているので、再利用性が高い– 第三者向けにプラグインを提供することも
Copyright © Infoscience Corporation. All rights reserved. - 9 -23/04/13
CAS : 構造化データを表現する仕組み
• CAS : Common Analysis Structure• UIMA の基本となるデータ形式
– 分析対象となるデータを保持している– Java のクラスと同様の、階層構造の型を持つ
• とりあえず Java Beans のイメージで OK• ただし、 CAS には独特の用語体系がある
– Ex. Field (属性値)でなく Feature (特性値)– 最も基本的な型( Java で言う Object )は TOP– たまに Feature Strucuture という言い方も:これはより一般的な
用語
• 開発者は、この CAS を受け取り、分析結果をAnnotation として追加していく処理をプラグインとして書く– これを分析エンジン (Analysis Engine) と呼んでいます
Copyright © Infoscience Corporation. All rights reserved. - 10 -23/04/13
分析エンジン : CAS を作成するコンポーネント
– 分析エンジンが生成した注釈は、 CAS に追加されていく• この注釈の管理も CAS の重要な役割
– (なので、 JavaBean のような単なるオブジェクトでもない)
今日のあしたの研のテーマは、 Apache UIMA です。
前回のテーマは、Flume でした。
テキストを表す CAS
分析エンジン
…Apache UIMA は OSS
…Flume は OSS
今日のあしたの研のテーマは、 Apache UIMA です。
前回のテーマは、Flume でした。
OSS を表す注釈が追加される
OSS: Apache UIMA
OSS: FlumeOSS名 DB
Copyright © Infoscience Corporation. All rights reserved. - 11 -23/04/13
分析エンジンを作る
• 記述言語は Java / C++ が基本• Eclipse プラグインや開発ツールも豊富• 手順としては、
1. 分析で作成する CAS型を定義する– CAS データを表現するコードは自動生成されます
2. 分析処理を書く– 引数として文書を表す CAS が渡されます
3. 作成したコードの内容を記述する XML ファイルを用意する4. ツールに導入して動かしてみる
• ということで実環境で
Copyright © Infoscience Corporation. All rights reserved. - 12 -23/04/13
複雑な分析: エンジン同士の連携
• 今書いたのは、与えられたデータを直接処理する分析エンジン– これを Primitive な分析エンジンと呼びます
• Aggregate 分析エンジン– 分析エンジン同士の組み合わせ– XML でエンジン同士の関係を記述して作成する– エンジン同士で連携する場合もあるし、無関係なエンジン同士
を同時実行しても良い
Copyright © Infoscience Corporation. All rights reserved. - 13 -23/04/13
データを様々な観点から捉える
• 文書データの分析では、他の形式のデータを生成する場合がある– 例 :動画を処理しよう
• 動画からテキストを抽出して、字幕を作る• 字幕に検索インデックスを付ける• 動画から音声部分だけ取りだす• …
– こういう場合は、単に対象データに注釈を付けるだけでは収まらない
• Sofa : – 1 つのデータに対し、複数の観点からのデータを追加する仕組み– Structure of Analysis
Copyright © Infoscience Corporation. All rights reserved. - 14 -23/04/13
アーティファクトと Sofa
• アーティファクト : 分析対象のデータそのもの• Sofa : CAS の中で、アーティファクトを表すデータ構造
– テキスト・配列・ URI の三種類がある• 音声や動画などは配列データとして扱う
• 分析エンジンが作る注釈は、正確には Sofa に対して紐づけられている
CAS
テキストの Sofa
今日のあしたの研のテーマは、 Apache UIMA です。
CAS の中には
・対象データ (sofa)・それに紐付いた注釈
がある
OSS: Apache UIMA
Copyright © Infoscience Corporation. All rights reserved. - 15 -23/04/13
CAS-View
• Sofa は分析に従ってどんどん追加出来る– もちろん Sofa を生成するのは、開発者の仕事
• 追加した Sofa は、他のエンジンからも CAS に見える– これを CAS-View と呼びます– 下の例では、翻訳データを作成している
CAS
今日のあしたの研のテーマは、 Apache UIMA です。
OSS: Apache UIMA
Today’s theme for Ashita no Ken is Apache UIMA
英訳データのSofa
他の分析エンジンで、この英文をCAS として処理できる
Copyright © Infoscience Corporation. All rights reserved. - 16 -23/04/13
分析エンジンを使う
• エンジンの使い方はいくつかある– 附属の開発ツールを使用する– アプリケーションからエンジンを直接初期化し、解析したい
データを渡す• CAS オブジェクトが手に入るので、そこから注釈などを取得して利用する
• CPM : Collection Processing Manager– データ収集・出力をプラグインとして管理する仕組み– CPE : Collection Processing Engine を作って CPM に任せる
• Collection Reader : 外部から入力を受け取って CAS を作る• CAS Consumer : 生成された CAS を外部に出力する• 分析エンジン
Copyright © Infoscience Corporation. All rights reserved. - 17 -23/04/13
分析エンジンを使う (2)
• 処理の分散化のため、 CPM に代わる仕組みが登場– AS : (UIMA) Asynchronous Scaleout– メッセージキューを使用した、非同期分散処理システム
– すみません、今日はそういうものがある、という話だけで…
※図は公式ドキュメントより
Copyright © Infoscience Corporation. All rights reserved. - 18 -23/04/13
UIMA がしてくれないこと(再)
• UIMA はほんとうに分析しかやってくれない– 文書をエンジンに渡して、単語リストを作るところまでが
UIMA の仕事– 例えば単語 X が含まれた文書はどれ?という処理は開発者の仕事This is a pen.
CollectionReader
My 単語抽出エンジン
CASConsumer DB
Application
UIMA の仕事はここまで→
→ここからは全て要開発
Copyright © Infoscience Corporation. All rights reserved. - 19 -23/04/13
UIMA との連携
• 検索エンジン– UIMA が分析した結果を、インデックスに活用する
• UIMA は複雑な意味内容を抽出できるので、単なるキーワードエンジン以上の処理が可能
– Apache Solr
– IBM OmniFinder
• UIMA を使用したシステム– 公式サイトでいくつか紹介されている– 特に自然言語処理系のプロジェクトが多い– UIMA コンポーネントを分析エンジンとして提供する企業もち
らほら
Copyright © Infoscience Corporation. All rights reserved. - 20 -23/04/13
まとめ
• 非構造化テキストを処理するためのフレームワーク– OASIS によって仕様が標準化されている
• 開発者は、分析アルゴリズムをプラグインとして書く– 処理の基本は CAS というデータ形式– Annotation をラベルのように貼りつけていくイメージ– コンポーネント同士は、 XML で記述して組み合わせが可能
• UIMA がしてくれるのは、分析結果を作るところまで– 分析結果をどう活用するかは、別の話– 既存の検索エンジンなどと組み合わせる
• 分散処理の話や他エンジンとの連携はまた改めて– すみません