Polaris

Sorry, this page is written only in Japanese. Please contact me if you would like English information/translation of the software.

はじめに

データマイニングでは,外界で観測された現象をキーワード(シンボル)や数値に変換し,そのデータをコンピュータに与えます.コンピュータは,与えられたデータがどのような性質を持つのか計算し,データの中に埋もれている特徴的な事象を見出します.あたかもコンピュータが「この事象は興味深いなぁ」とデータに共感してユーザに結果を返しているように思えますが,そういう訳ではありません.

現在のコンピュータは与えられたシンボルの意味や数値の大小の意味を理解することができません.例えば,「顔が白い」というパターンがマイニングで得られたとき,「顔」「白色」の定義をコンピュータに与えていても,「(化粧や罰ゲームなどで)顔が白いという様子」「顔が白くて綺麗」「顔色が悪い」など様々な解釈が可能です.このような意味のバリエーションは話している状況に応じて無尽蔵に作り出されますし,仮にそのバリエーションをすべてコンピュータに与えることが出来たとしても,コンピュータはどの意味で解釈すべきなのか言い当てることができません.コンピュータに単語の意味を正確に理解させようとする試みは,人工知能(特に自然言語処理)を中心に古くから行われていますが,現在のところ成功とは程遠い段階にあります(何を以って成功と言うかという問題もありますが…).

このように,現在のコンピュータは与えられたデータの意味を理解することは出来ません.仕方がないのでコンピュータには,「データの中に含まれる特徴的なシンボルをアルゴリズムを使って見出す」ことに専念してもらいます.コンピュータの助けを借りて得られた分析結果は,人間が解釈を行い,何らかの意思決定につなげます.チャンス発見やシナリオ創発において,人間の果たす役割はこのようにして必然的に大きくなってしまう訳ですが,分析結果から知見を見出すフェーズの成否が,チャンス発見全体の最終的なタスクの成否に大きな影響を与えます.

Polarisとは

Polarisは,筑波大学の大澤らが提唱した「チャンス発見の二重螺旋プロセス」をもとに新たに設計されたデータマイニング・フレームワークです.現在のところ,KeyGraphというマイニング・アルゴリズムしか実装されていませんので,KeyGraphをチャンス発見プロセスに適合するように拡張したシステムと捉えると良いでしょう.チャンス発見の中心的役割を担ってきたKeyGraphはもともとキーワード抽出のためのアルゴリズムでしたが,稀ではあるものの重要と思われる事象を視覚化してくれることから,チャンス発見においてたくさんの成果をもたらしました.しかし,データの視覚化結果を解釈し,意思決定につながるような戦略を立てるためには,視覚化結果を人間が解釈する必要があります.チャンス発見の二重螺旋モデルはこのような経験の蓄積により生み出された訳ですが,元々のKeyGraphソフトウェアはチャンス発見にふさわしいインターフェースを搭載していませんでした.例えば,チャンス発見を行う主体者はデータの実環境に精通している人物の方が好ましいのですが,データをマイニングできるフォーマットに変換(クレンジング)したり,データの中から注目したい箇所だけを抽出するような処理には,特別なテキスト処理(プログラミング等)が必要でした.得られたKeyGraphの図の解釈が重要であることはお話した通りですが,ある単語に興味を持ったとしても,その単語がどのような文脈で使われていたのか簡単に調べる手段が用意されていませんでした.このような問題意識のもと,チャンス発見の二重螺旋プロセス全体を支援するシステムとしてPolarisが誕生しました.

Polarisの内部アーキテクチャ

Polarisの内部アーキテクチャ
Polarisの内部アーキテクチャ

Polarisのシステム概要を図に示しました.解析したいテキストデータが与えられると,「テキスト読み込み」,「マイニング」,「視覚化」コンポーネントを順に経て,解析結果がユーザーに出力されます.

テキスト読み込みコンポーネントは,解析対象テキストを読み込んで,加工・クレンジングを適用し,解析アルゴリズムで扱える文書行列形式に変換します.このコンポーネントは,日本語テキスト,英語テキスト,単純なバスケット・データなど,解析の用途に合わせて切り替えることができます.ただし,現在は日本語テキスト読み込みモジュールしか用意されていません.

マイニング・コンポーネントは,データ読み込みコンポーネントが作成した文書行列を解析し,その結果を出力します.現在はKeyGraphアルゴリズムのみが実装されていますが,文書行列を対象とするマイニング手法であれば実装可能です.将来的には複数のマイニング手法を用途に応じて選択できるようになると思います.また,可能であれば,マイニング・コンポーネントを開発するためのSDKを公開したいと思っています.

視覚化コンポーネントは,データの分析結果を表示します.Polarisでは解析対象データに対して,複数の視覚化チャネルを持つことを許容しています.したがって,ユーザはグラフやテキストなど様々な視覚化チャネルから解析データを眺めることができます.

Polarisの機能

日本語テキスト読み込み

日本語テキスト読み込みモジュールでは,句読点を利用した文同定,形態素解析(Windows版の茶筅を利用),条件付き抽出(ある語を含む文のみを抽出する),不要語フィルタ(不要語リストに含まれる語は読み込まない),語の表記の統一(類義語辞書による統一,英字小文字への変換など)を行います.

日本語テキスト読み込み
日本語テキスト読み込み

KeyGraph解析

Polarisにはマイニング・エンジンとしてKeyGraphが実装されています.KeyGraphの実装は過去にもいくつかありましたが, Polarisに搭載されているKeyGraphは,データ構造やアルゴリズムを見直してスクラッチから実装したものになっています.その結果,過去の KeyGraphよりもかなり高速に動作するようになり,特に,与えるデータの量が大きいときや,Jaccard係数を使う場合などの速度向上は劇的です.

KeyGraphに与えるパラメータをダイアログで簡単に設定できます.KeyGraphの解析結果の視覚化には,ばねモデルによるノードの最適配置が適用されます.

KeyGraph解析
KeyGraph解析

単語の文脈情報表示

KeyGraphでテキストを解析する場合,視覚化されたグラフ上で線で結ばれている単語と単語は,それらの語と語の間に共起性があることを示します.これらの関係から,データに対する解釈やシナリオの発案を進めていきます.しかし,グラフ中に現れる単語は断片的であるため,それらのノードをどのように解釈すべきなのか悩むことがよくあります.Polarisではグラフ中に現れた単語に関連する情報を情報ウィンドウに表示することができます.例えば,ある単語が元の文章の中で使われていた文脈を確認するには,その単語をダブルクリックするだけでOKです.このように元テキストへの参照性を高めることで,解析結果を正しく・素早く解釈できるように支援します.

単語の文脈情報表示
単語の文脈情報表示

シナリオの記述と解析

通常,解析結果で目にとまった事象に対して,理解・解釈した内容を書きとめたり,他の人とディスカッションを行ことで,解析結果の意味づけを行います.このプロセスを支援するため,Polarisにはコメントウィンドウが用意されました.解析結果から得られたアイディアをコメントウィンドウに書き留めておくだけではなく,記述されたテキストをそのままPolarisの読み込み/解析エンジンに送出し,考えたアイディアやシナリオを再び視覚化することができます.

単語の操作

テキストに対してKeyGraphを適用したグラフを眺めていると,あるノードの存在が邪魔に思えることがあります.下図(a)はその典型例を示したものですが,“a”というノードが他の多くのノードと結ばれてしまい,その他のノード同士の関係が見づらくなっています.“a”というノードが重要なものであるならば,この結果は納得のいくものと言えますが,この場合の解析対象は英語のテキストであることを考えると,“a”は冠詞ですので,“a”が他の多くの語と関係を持つのはむしろ自明なことになります.そこで,“a”という単語を文書行列(解析対象)から取り除いて再び解析すると,下図(b)の結果が得られ,グラフの情報がかなり改善されます.通常,テキストマイニングにおいては,文章を特徴付けない語を不要語として除去しますが,不要語は解析対象のテキストのドメインに依存するので,解析結果を眺めながら不要語リストを調節する必要があります.Polarisではこのような不要語に関する操作をグラフ表示などの視覚化データの上から,マウス操作にて簡単に行えます.

単語の操作
単語の操作

Polaris 0.13 alphaにおいて,ある語を別の語と同一視させることで,「ゴミ」―「ごみ」のような表記の異なる語,「単語」―「語」などの類義語を統合する機能が実装される予定です.「人口」-「知能」など形態素解析によって分かち書きされてしまった語の統合も実装される予定です.

バスケットの操作(フォーカスの設定)

あるテキストをKeyGraphで解析したグラフを眺めている時,「不満」という語に興味を持ち,このテキストで述べられている不満とはどのようなものなのか知りたいことがあります.この場合,「不満」という言葉が出てくる文のみを抽出し,「不満」という語がどのような文脈で用いられるのか徹底的に調べてやるのが常套手段です.解析結果の図を解釈するのはユーザ自身なので,結果に含まれる事象に湧きあがった興味は,ユーザ自身で即座に解決できることが好ましいと言えます.Polarisでは,ノードに対して簡単なマウス操作を行うだけで,「不満」という語を含む文のみを解析することができます.この機能は,解析対象データ自体の作成や,データの中から見たい場所を選別(フォーカス)することを支援します.

フォーカスの設定
フォーカスの設定

ノードのイメージによる表示

Polarisが入力とするテキストは,自然言語で書かれた文章だけではなく,商品名やメーカー名,化学物質の名称など,専門用語や特殊な記号の羅列になることがあります.このようなテキストをKeyGraphで解析すると,それらの専門用語のアイテム間の関係が視覚化され表示されます.しかし,それらの専門用語に馴染みがない場合は,ノードと実世界との対応が掴みづらく,解析結果の理解に苦労することがあります.これはデータの視覚化が,丸い形状のノードとそれに付随するテキスト情報のみで行われているためです.そこで,Polarisでは,ノードを写真やイラストなどの図で表現する機能を追加しました.ユーザは入力テキストを解析し,意味の分からない単語に対して,画像ファイルを用意し,その画像ファイルを解析結果のノードに張り込むことができます.ノードにイメージを張り込むことによって,解析しているテキスト中に現れる単語に,非言語的な情報を付与できます.利用できる画像ファイルは BMP/GIF/PNG/JPEG形式などです.ノードの表示を変更するには,エクスプローラでノード表示を置き換えたい画像ファイルをドラッグして, Polarisのノード上でドロップします.この操作により,ノード表示の変更が行われ,Polaris上のウィンドウには適当な大きさにリサイズされた画像が表示されます.たくさんの画像を解析図の中に貼り付けると,イメージが混み合って見づらくなりますので,マウスがノードの上に置かれていない時はイメージを半透明にしておくことができます.下の図はKeyGraphの解析結果の中で,見慣れない単語や専門用語に対して,画像を貼り付けた例になります.

ノードのイメージによる表示
ノードのイメージによる表示

ダウンロード

Polaris version 0.19 alpha (for Windows 9x/2000/XP/Vista)

なお,使い方は東京大学の大澤研究室において指導を受けてください。本ツールは学生・研究目的にはフリーですが、ビジネス目的には、キーグラフとその利用プロセスの考案者である大澤 (ohsawa@q.t.u-tokyo.ac.jp) に事前にご相談されることを推薦します.

更新履歴

  • Polaris 0.19 alpha (2007-06-25)
    • KeyGraphの解析結果をXML形式で出力できるようにした.メニューの「ファイル(F)→解析結果の書き出し(R)」で書き出せます.
    • 文区切りに全角#を使えるようにした.
    • 複合語認識のプログラムを試験的に添付.
    • 細かいバグ修正.
  • Polaris 0.17 alpha (2005-12-24)
    • 設定ミスや入力テキストの問題などで,不正に長い文・単語が検出されたとき,その問題となった箇所を表示するようにした.
    • 上記の状況が発生したときは,Polarisは処理を続行することは不可能なので,読み込みを必ず中断するようにした.
  • Polaris 0.16 alpha (2004-12-14)
    • Windows版ChaSen-2.3.3 に対応.ChaSenのインストール後に必ずやって頂く事がありますので,添付のinstall.txtをお読み下さい.
    • 上記の修正に伴い,簡易マニュアルを添付
    • 茶筅のモジュール呼び出し時のオーバーヘッドを短縮し,日本語テキスト読み込み時の速度を改善
    • リンクを表示するときの太さの計算が正しく行われていなかった問題を修正
    • グラフ表示のデフォルトの設定が保存されていなかった問題を修正
  • Polaris 0.15 alpha (2004-11-26)
    • [Shift]キーで複数のノードを選択できるようにした
    • グラフビューにて「すべてを選択 (Ctrl+A)」ですべてのノードを選択できるようにした
    • ノードの右クリックメニューでノード位置を固定する機能を追加(再解析や右クリックでのノードの再配置時において,固定するように設定されたノードは位置が変更されません)
  • Polaris 0.14.1 alpha (2004-11-18)
    • polaris.iniファイルが存在しない環境ではPolarisの設定が正しく初期化されなかった問題を修正.この問題はPolaris 0.14においてグラフが正常に表示されない原因になっていました.
    • 配布物の中にgdiplus.dllを入れるのを忘れていたので復活させた.
  • Polaris 0.14 alpha (2004-11-13)
    • 単語の頻度表を出力する機能を追加(Polarisのメニューの「ファイル」→「インポート済みデータの書き出し」で,「ファイルの種類」にカンマ区切り(CSV)形式単語頻度データ (*.csv)を選択します)
    • 共起度の強さを3段階(弱,中,強)に分け,それぞれを点線,太さ1実線,太さ2実線で表示する機能を追加.共起度の強さは,図に表示されている黒リンク,赤リンクの共起度の最大値が100になるように正規化されます.弱から中,中から強の閾値は,「表示」→「グラフ表示の設定」のエッジ表示から行います.この仕様変更に関して,以下の注意点があります
      • デフォルトでは,過去のPolarisとのギャップを少なくするため,すべての黒リンクが太さ1の実線,単連結黒リンクが太さ1の破線,赤リンクが点線で表示されるように設定されています.
      • 過去のバージョンでは点線で表示されていた単連結リンクは,破線による表示に変更されました.
      • 共起度の強さは,黒リンク全体,赤リンク全体それぞれに対し,最大の共起度の強さを持つリンクが100という強さを持つように正規化されます.
      • 黒リンク,赤リンク毎に相対値を計算しているので,点線の黒リンクと太線の赤リンクを見て,「点線の黒リンクよりも太線の赤リンクの方が共起性が強い」と言ってはいけません.
    • 保存したグラフ表示のデフォルト設定が読み込まれていなかった問題を修正
  • Polaris 0.13.2 alpha (2004-10-19)
    • 単語の先頭・末尾の空白文字を削除するようにした(今までは削除していなかったため,見かけ上同じように表示されている語が別の語として扱われていた危険性がありました)
  • Polaris 0.13.1 alpha (2004-10-19)
    • CSV形式の読み込みなどで改行文字が正しく処理されない問題を修正
    • 検索ダイアログで「単語単位の検索」のチェックボックスを追加(チェックを外すと部分的にマッチする単語/文が検索できます)
  • Polaris 0.13 alpha (2004-10-19)
    • 単語の検索機能を追加(単語リストビュー,グラフビュー)
    • 文の検索機能を追加(解析対象ビュー,文リストビュー)
    • 類義語を動的に設定する機能を追加(ノードの右クリックメニュー,単語リストビューから行います)
    • 複合語を動的に設定する機能を追加(ノードの右クリックメニュー,単語リストビューから行います)
    • 置換(語の分割)を動的に設定する機能を追加(ノードの右クリックメニュー,単語リストビューから行います)
    • 不要語設定をノードの右クリックメニューから解除できるようにした(グラフビュー)
    • コンテキスト表示において,ノードのイメージを元のサイズのまま表示する機能を追加
    • コンテキスト表示において,選択された単語をハイライトするようにした
    • 解析対象ビュー・文リストビュー・単語リストビューのユーザー・インタフェースを一新
    • 強制的に解析対象に含めたくない文を自由に選べるようにした(解析対象ビュー・文リストビューの番号横のチェックボックスで設定します)
    • 単語リストビューにおいて,単語を頻度や名前順等で並び替えられるようにした(項目のヘッダをクリックするとソートされます)
    • 単語リストビューにおいて,単語をダブルクリックするとコンテキストが付加情報ウィンドウに表示されるようにした
    • 単語リストビューにおいて,単語のKeyGraph属性が正しく表示されない問題を修正
    • 単語リストビューにおいて,正しい単語の頻度が表示されていなかった問題を修正
    • ノードをドラッグしている時に,連結しているエッジを強調表示するようにした
    • グラフビューにおいて選択されているノードを強調表示するようにした
    • ステータスバーを分割して付加情報は右側に表示するようにした
    • フォーカスツールバーの不要語リストへの直接入力を禁止(不要語の追加/解除はグラフビューもしくは単語リストビューから行えます)
    • Polarisワークスペース (*.pws) に保存されているノードの画像情報が正しく読み込めないバグを修正
    • Polarisワークスペース (*.pws) のファイル・フォーマットを修正し,ワークスペースのバージョン互換性を保てるようにした(Polaris 0.10 alpha 以降のpwsファイルは読み込めます)
    • KeyGraphの黒リンク計算方法のデフォルトをJaccardに変更
    • その他,多数の細かい調整・バグフィックス
  • Polaris 0.12 alpha (2004-09-21)
    • コメントウィンドウの内容を解析対象にする機能を実装
    • コメントの内容が修正されたことを検出してユーザーに保存を促すようにした
    • 解析対象ファイルが更新されたときに,その新旧の更新時間を表示するようにした
    • 解析対象ファイルを更新してもいないのに,更新されたと検出される問題を修正
    • 解析フォーカスにおいてバスケット抽出条件を入力したときにAND検索が機能しない不具合を修正
    • コンテキスト表示の際に「・/P>」のようなゴミが表示される問題を解消
    • コンテキストや解析対象ファイルの内容が表示されなくなることがある問題を(多分)解消
    • GDI+のJPEGファイルに関するバッファオーバーラン (MS04-028) のセキュリティホールを塞いだgdiplus.dllに差し替え
  • Polaris 0.11 alpha (2004-08-19)
    • 0.10 alphaで単語の表示を激しく間違う問題を修正
    • コメントウィンドウでのキーボードショートカットでのコピー&ペーストを実装
    • インポート済み単語リストを表示するビューを追加
    • バスケットを表示するビューにおいて実際に解析に使われたバスケットをハイライト表示
  • Polaris 0.10 alpha (2004-08-05)
    • ノードの表示をBMP/GIF/PNGなどの画像ファイルで置き換えられるようにした
    • 画像ファイルでノードを表示する際,あるサイズに自動的に拡大縮小を行うようにした
    • 画像ファイルでノードを表示する際,マウスがノードの上にあるかどうかで淡色(透過)表示を行うようにした
    • 上記の拡大・縮小時のサイズ,透過度合いを「グラフ表示の設定」メニューから行えるようにした
    • コメントウィンドウに記述した内容をクリップボードにコピーできるようにした(キーボードショートカットは未対応なので,当面はマウスの右クリックメニューで操作してください)
  • Polaris 0.9 alpha 3 (2004-05-20)
    • 0.9 alpha 2において「すべてを解析」を追加したときに,通常の解析の部分を壊してしまったのを修正
  • Polaris 0.9 alpha 2 (2004-02-23)
    • 解析対象ファイルの読み込みで複数のファイルを読み込めるようにした
    • 複数の解析プロジェクトに対して解析を行う「すべてを解析」を追加
    • 複数の解析プロジェクトの出力図を書き出す「すべてグラフィック形式で書き出し」を追加
  • Polaris 0.9 alpha 1 (2003-01-08)
    • 赤ノードが一つのクラスタとしか共起せず,しかもそのKey値が高くて赤ノードとして選出されてしまった場合に,共起していない他すべてのクラスタとリンクを張ってしまう問題を修正
  • Polaris 0.9 alpha (2003-12-25)
    • [KeyGraph] Dependent係数の値域が[0, 1]になるように文の数で正規化.
    • 「この単語の周辺に注目」において2以上の単語に注目するとバスケットがなくなってしまう現象を修正.バスケット抽出の条件式の構文解析がだめだめで,スペースをANDとみなすという処理が入ってなかったのが原因
    • あるフォルダにある複数のテキストに対して,すべて同じ条件で取り込み・解析して解析結果の図(gifファイル)に変換する「解析対象の一括処理」を追加
    • KeyGraph周りのバグは潰せたと思っているのでマイナーバージョンをbump-up
  • Polaris 0.8 alpha 6 (2003-12-07)
    • [KeyGraph] 共起度計算尺度の中で[0, 1]の範囲で正規化されているもの(Jaccard, Dice, Overlap, Cosine)は土台の力F(g)で正規化を行わないように修正.Match係数はF(g)でちゃんと正規化を行う.対してDependent係数の値域は[0, ∞]であり,このままでは理論上の問題があるので個人的には気に入っていない.
    • [KeyGraph] F(g)の計算が間違っていたのを修正
    • Alternateモードをデフォルトにしてnon-alternateモードを廃止した
  • Polaris 0.8 alpha 5 (2003-10-22)
    • [解析ツールバー] バスケット抽出条件・不要語リストの管理に問題があり,フォーカスの内容が一部消失する問題を修正
  • Polaris 0.8 alpha 4 (2003-10-21)
    • 「解析対象ファイルの追加」というメニュー項目名を「解析対象テキストの読み込み」に変更
    • 「解析対象ファイルの再読み込み」のとき,読み込み設定ダイアログが表示されるように修正
    • 画面のレイアウトを自動的に保存するようにした
    • OfficeXPタイプのメニューバーをやめて通常のものに戻した
    • [KeyGraph] Alternateモード(新しい赤ノード計算法)を実装
    • [テキスト取り込み] 全角英文字から半角英文字への変換を激しくミスってたのを修正
    • [テキスト取り込み] 類義語辞書変換において類義語ファイルの行頭に置いている語が複合語扱いになっていなかった問題を修正
    • [テキスト取り込み] ノイズ語や類義語辞書を選択したときは,自動的に「適用」にチェックを入れるようにした
  • Polaris 0.8 alpha 3 (2003-10-21)
    • 同じテキストをワークスペースに追加しても問題ないように修正
    • ばね係数を設定できるようにした
    • 解析時のパラメータを解析図の中に表示するようにした
    • 解析時のパラメータをつかってエクスポートするファイル名を自動的につけるようにした
    • ノードのコピー(ノードの内容をクリップボードにコピーする機能)をCtrl+ノードクリックで実装
    • ノードを含むバスケットの表示をShift+ノードクリックに変更
    • [KeyGraph] 単連結パスの認識に失敗することがあるのを修正
    • [KeyGraph] Dependent係数を追加
    • [テキスト取り込み] 日本語解析モードを実装
    • [テキスト取り込み] テキスト取り込み時に中止ボタンが働かないことがあるのを修正
    • [テキスト取り込み] ダブルクオートやかぎ括弧で区切り文字を分割するかどうか選べるようにした
  • Polaris 0.8 alpha 2 (2003-10-10)
    • [テキスト取り込み] CSV形式の読み込みなどで,データがきちんと読み込まれない問題を修正
  • Polaris 0.8 alpha 1 (2003-10-07)
    • [KeyGraph] 赤ノードが孤立する問題を修正
  • Polaris 0.8 alpha (2003-10-03)
    • Polaris初の公開バージョン(ここまではすべて内部バージョン)
    • 解析ワークスペースの保存・読み込みを実装
    • 設定内容をデフォルトで保存する機能を追加
    • 解析フォーカスの実装
    • 解析対象ファイルの更新状態を確認する機能を追加
    • Luna (Windows XP)に対応したユーザーインターフェース
    • グラフィック形式での保存を実装
    • たくさんのバグフィックス

参考文献

  • 岡崎直観,大澤幸生,石塚満.チャンス発見のための統合型データマイニングツールPolaris.第53回人工知能基礎論(SIG-FAI53)研究会.東京大学先端科学技術研究センター.2004年1月.
  • Naoaki Okazaki and Yukio Ohsawa. Polaris: An Integrated Data Miner for Chance Discovery. In Proc. of Workshop of Chance Discovery and Its Management (in conjunction with International Human Conputer Interaction Conference (HCI2003)). Crete, Greece, Jun 2003.
  • 大澤幸生. ビジネスチャンス発見の技術. 岩波アクティブ新書, 2004.
  • 大澤(編著)ほか. チャンス発見の情報技術. 東京電機大学出版, 2003.