Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Apache UIMA 2011/10/25  第 26 回 あしたの研 塩谷 沢生 ( インフォサイエンス株式会社 )
今日のテーマ :  UIMA <ul><li>UIMA :  非構造化データ管理アーキテクチャ </li></ul><ul><ul><li>Unstructured Information Management Architecture </l...
Apache UIMA <ul><li>Apache UIMA : UIMA 仕様のリファレンス実装 </li></ul><ul><ul><li>元々は IBM Research が自然言語処理用に開発 (2005 年 ) </li></ul>...
人間  vs. Watson <ul><li>勝負の課題は、トリビアクイズ番組 </li></ul><ul><li>いわゆる早押しクイズ </li></ul><ul><ul><li>質問文を受け取り、回答する </li></ul></ul><u...
Watson のアーキテクチャ <ul><li>Watson のコアエンジンは、 DeepQA と呼ばれている </li></ul><ul><ul><li>単に質問に対応する回答を探すのではなく、 回答 -> 根拠づけ -> 自己評価という多段...
今日の話 <ul><li>UIMA の基本的な考え方 </li></ul><ul><li>Apache UIMA を使ってみる </li></ul><ul><li>Apache UIMA での複雑な処理 </li></ul><ul><li>Ap...
UIMA は何をしてくれるのか <ul><li>UIMA は、非構造化データと構造化データの橋渡し役 </li></ul><ul><ul><li>非構造化データ : テキスト、音声、画像など </li></ul></ul><ul><ul><li...
UIMA がしてくれないこと <ul><li>UIMA 自体は、何も分析しない </li></ul><ul><ul><li>今日の話を聞いて Apache UIMA をインストールしても、それだけでは クイズ王になれません </li></ul>...
CAS :  構造化データを表現する仕組み <ul><li>CAS  :  Common Analysis Structure </li></ul><ul><li>UIMA の基本となるデータ形式 </li></ul><ul><ul><li>分...
分析エンジン :  CAS を作成するコンポーネント <ul><ul><li>分析エンジンが生成した注釈は、 CAS に追加されていく </li></ul></ul><ul><ul><ul><li>この注釈の管理も CAS の重要な役割 </l...
分析エンジンを作る <ul><li>記述言語は Java / C++ が基本 </li></ul><ul><li>Eclipse プラグインや開発ツールも豊富 </li></ul><ul><li>手順としては、 </li></ul><ul><u...
複雑な分析: エンジン同士の連携 <ul><li>今書いたのは、与えられたデータを直接処理する分析エンジン </li></ul><ul><ul><li>これを Primitive な分析エンジンと呼びます </li></ul></ul><ul>...
データを様々な観点から捉える <ul><li>文書データの分析では、他の形式のデータを生成する場合がある </li></ul><ul><ul><li>例 :動画を処理しよう  </li></ul></ul><ul><ul><ul><li>動画か...
アーティファクトと Sofa <ul><li>アーティファクト : 分析対象のデータそのもの </li></ul><ul><li>Sofa  :  CAS の中で、アーティファクトを表すデータ構造 </li></ul><ul><ul><li>テ...
CAS-View <ul><li>Sofa は分析に従ってどんどん追加出来る </li></ul><ul><ul><li>もちろん Sofa を生成するのは、開発者の仕事 </li></ul></ul><ul><li>追加した Sofa は、他...
分析エンジンを使う <ul><li>エンジンの使い方はいくつかある </li></ul><ul><ul><li>附属の開発ツールを使用する </li></ul></ul><ul><ul><li>アプリケーションからエンジンを直接初期化し、解析し...
分析エンジンを使う (2) <ul><li>処理の分散化のため、 CPM に代わる仕組みが登場 </li></ul><ul><ul><li>AS : (UIMA) Asynchronous Scaleout </li></ul></ul><ul...
UIMA がしてくれないこと(再) <ul><li>UIMA はほんとうに分析しかやってくれない </li></ul><ul><ul><li>文書をエンジンに渡して、単語リストを作るところまでが UIMA の仕事 </li></ul></ul>...
UIMA との連携 <ul><li>検索エンジン </li></ul><ul><ul><li>UIMA が分析した結果を、インデックスに活用する </li></ul></ul><ul><ul><ul><li>UIMA は複雑な意味内容を抽出でき...
まとめ <ul><li>非構造化テキストを処理するためのフレームワーク </li></ul><ul><ul><li>OASIS によって仕様が標準化されている </li></ul></ul><ul><li>開発者は、分析アルゴリズムをプラグイン...
Upcoming SlideShare
Loading in …5
×

Apache UIMA

7,736 views

Published on

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

Published in: Technology

Apache UIMA

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

×