apache uima

20
Apache UIMA 2011/10/25 第 26 第 第第第第第 第第 第第 ( 第第第第第第第第第第第第第 )

Upload: -

Post on 26-Jun-2015

5.021 views

Category:

Technology


0 download

DESCRIPTION

あしたのオープンソース研究所 2011年10月25日開催 Apache UIMA 座談会 発表者 塩谷さん 提供 インフォサイエンス

TRANSCRIPT

Page 1: Apache UIMA

Apache UIMA

2011/10/25 第 26 回 あしたの研塩谷 沢生 ( インフォサイエンス株式会社 )

Page 2: Apache UIMA

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 などを策定

Page 3: Apache UIMA

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! で人間のチャンピオンを破って話題に– 今回のあしたの研のテーマにしてみました

Page 4: Apache UIMA

Copyright © Infoscience Corporation. All rights reserved. - 4 -23/04/13

人間 vs. Watson

• 勝負の課題は、トリビアクイズ番組

• いわゆる早押しクイズ– 質問文を受け取り、回答する

• 人間のチャンピオンの正答率は 90% 近く– 従来のキーワードベースの A.I. では、せいぜい 30% 程度– 回答率と正答率のバランスを取るのが困難だった

• IBM は DeepBlue に続くプロジェクトとしてこの課題に挑戦– UIMA 上に新しいシステムを構築し、人間を上回る性能を実現

Page 5: Apache UIMA

Copyright © Infoscience Corporation. All rights reserved. - 5 -23/04/13

Watson のアーキテクチャ

• Watson のコアエンジンは、 DeepQA と呼ばれている– 単に質問に対応する回答を探すのではなく、

回答 → 根拠づけ → 自己評価という多段階プロセスを踏むエンジン

– これらの処理が全て、 Apache UIMA 上のプラグインとして実装されている !

– ちなみに HW はラック 10 本分、総メモリー容量 15TB 、総コア数2,880 個

仮説作成質問解析

仮説 DB

根拠付け

根拠 DB

確信度判定

過去問での学習データ

回答質問

自然言語処理データ

Page 6: Apache UIMA

Copyright © Infoscience Corporation. All rights reserved. - 6 -23/04/13

今日の話

• UIMA の基本的な考え方

• Apache UIMA を使ってみる

• Apache UIMA での複雑な処理

• Apache UIMA で作成したエンジンを使う

• まとめ

Page 7: Apache UIMA

Copyright © Infoscience Corporation. All rights reserved. - 7 -23/04/13

UIMA は何をしてくれるのか

• UIMA は、非構造化データと構造化データの橋渡し役– 非構造化データ : テキスト、音声、画像など– 構造化データ : データベース、インデックス、ナレッジベース

など

※図は公式ドキュメントより

Page 8: Apache UIMA

Copyright © Infoscience Corporation. All rights reserved. - 8 -23/04/13

UIMA がしてくれないこと

• UIMA 自体は、何も分析しない– 今日の話を聞いて Apache UIMA をインストールしても、それだけで

はクイズ王になれません

• 非構造化データを構造化データにするのは、開発者の役目– 構造化されていないデータを扱う技術は様々ある

• 自然言語処理• 機械学習• …

• UIMA に準拠したプラグインとして書くことで、これらのロジックを自由に組み合わせることが出来る– データ構造が標準化されているので、再利用性が高い– 第三者向けにプラグインを提供することも

Page 9: Apache 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) と呼んでいます

Page 10: Apache UIMA

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

Page 11: Apache UIMA

Copyright © Infoscience Corporation. All rights reserved. - 11 -23/04/13

分析エンジンを作る

• 記述言語は Java / C++ が基本• Eclipse プラグインや開発ツールも豊富• 手順としては、

1. 分析で作成する CAS型を定義する– CAS データを表現するコードは自動生成されます

2. 分析処理を書く– 引数として文書を表す CAS が渡されます

3. 作成したコードの内容を記述する XML ファイルを用意する4. ツールに導入して動かしてみる

• ということで実環境で

Page 12: Apache UIMA

Copyright © Infoscience Corporation. All rights reserved. - 12 -23/04/13

複雑な分析: エンジン同士の連携

• 今書いたのは、与えられたデータを直接処理する分析エンジン– これを Primitive な分析エンジンと呼びます

• Aggregate 分析エンジン– 分析エンジン同士の組み合わせ– XML でエンジン同士の関係を記述して作成する– エンジン同士で連携する場合もあるし、無関係なエンジン同士

を同時実行しても良い

Page 13: Apache UIMA

Copyright © Infoscience Corporation. All rights reserved. - 13 -23/04/13

データを様々な観点から捉える

• 文書データの分析では、他の形式のデータを生成する場合がある– 例 :動画を処理しよう

• 動画からテキストを抽出して、字幕を作る• 字幕に検索インデックスを付ける• 動画から音声部分だけ取りだす• …

– こういう場合は、単に対象データに注釈を付けるだけでは収まらない

• Sofa : – 1 つのデータに対し、複数の観点からのデータを追加する仕組み– Structure of Analysis

Page 14: Apache UIMA

Copyright © Infoscience Corporation. All rights reserved. - 14 -23/04/13

アーティファクトと Sofa

• アーティファクト : 分析対象のデータそのもの• Sofa : CAS の中で、アーティファクトを表すデータ構造

– テキスト・配列・ URI の三種類がある• 音声や動画などは配列データとして扱う

• 分析エンジンが作る注釈は、正確には Sofa に対して紐づけられている

CAS

テキストの Sofa

今日のあしたの研のテーマは、 Apache UIMA です。

CAS の中には

・対象データ (sofa)・それに紐付いた注釈

がある

OSS: Apache UIMA

Page 15: 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 として処理できる

Page 16: Apache UIMA

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 を外部に出力する• 分析エンジン

Page 17: Apache UIMA

Copyright © Infoscience Corporation. All rights reserved. - 17 -23/04/13

分析エンジンを使う (2)

• 処理の分散化のため、 CPM に代わる仕組みが登場– AS : (UIMA) Asynchronous Scaleout– メッセージキューを使用した、非同期分散処理システム

– すみません、今日はそういうものがある、という話だけで…

※図は公式ドキュメントより

Page 18: Apache UIMA

Copyright © Infoscience Corporation. All rights reserved. - 18 -23/04/13

UIMA がしてくれないこと(再)

• UIMA はほんとうに分析しかやってくれない– 文書をエンジンに渡して、単語リストを作るところまでが

UIMA の仕事– 例えば単語 X が含まれた文書はどれ?という処理は開発者の仕事This is a pen.

CollectionReader

My 単語抽出エンジン

CASConsumer DB

Application

UIMA の仕事はここまで→

→ここからは全て要開発

Page 19: Apache UIMA

Copyright © Infoscience Corporation. All rights reserved. - 19 -23/04/13

UIMA との連携

• 検索エンジン– UIMA が分析した結果を、インデックスに活用する

• UIMA は複雑な意味内容を抽出できるので、単なるキーワードエンジン以上の処理が可能

– Apache Solr

– IBM OmniFinder

• UIMA を使用したシステム– 公式サイトでいくつか紹介されている– 特に自然言語処理系のプロジェクトが多い– UIMA コンポーネントを分析エンジンとして提供する企業もち

らほら

Page 20: Apache UIMA

Copyright © Infoscience Corporation. All rights reserved. - 20 -23/04/13

まとめ

• 非構造化テキストを処理するためのフレームワーク– OASIS によって仕様が標準化されている

• 開発者は、分析アルゴリズムをプラグインとして書く– 処理の基本は CAS というデータ形式– Annotation をラベルのように貼りつけていくイメージ– コンポーネント同士は、 XML で記述して組み合わせが可能

• UIMA がしてくれるのは、分析結果を作るところまで– 分析結果をどう活用するかは、別の話– 既存の検索エンジンなどと組み合わせる

• 分散処理の話や他エンジンとの連携はまた改めて– すみません