[Tofu]形態素解析エンジン『Tofu』について

戻る

『Tofu』とは

形態素解析エンジン『Tofu』は形態素解析を行う COM コンポーネントです。
Windows上でCOM コンポーネントを呼ぶことができる言語(VB、C#等)であれば、『Tofu』COM を使用することができます。
形態素解析といえば、MeCab が有名ですが、『Tofu』は MeCab よりもコンパクトで、かつ解析スピードが速いものを目指したものです。

1.特徴

  1. 解析スピードはMeCabの数倍〜数十倍以上
  2. 辞書のサイズが約4.6MBとコンパクト
  3. 多言語から呼び出すことが可能
  4. 名詞だけの抜き出しAPI
  5. ビタビアルゴリズムを簡略化して適用、かつ品詞間の連接頻度のみを採用
  6. 複数の改行やTABコードを圧縮して解析する機能

2.API

『Tofu』COM が提供する主なAPIの一覧を次に示します。詳細は「日本語形態素解析エンジン『Tofu』プログラミングAPI」を参照してください。

『Tofu』COM が提供するAPI一覧
     メソッド名 機能 概要
1  analyze   品詞情報付き解析   引数で渡された文章を形態素に分解し、品詞情報付きの解析結果を返します。 
2  tokenize   分かち書き   引数で渡された文章を形態素に分解し、スペースで連結して返します。 
3  selectNoun   名詞取り出し   引数で渡された文章から形態素解析の過程で名詞と判定した単語のみを、スペースで連結して返します。 



3.動作環境

形態素解析エンジン『Tofu』は、以下の環境で動作します。  (※1) Windows Vistaについてはインストール時に注意事項があります。また、Windows 7 については動作未確認です。

 『Tofu』COM をデモするためのツール『Tofuデモ(TofuDemo.exe)』は、VB6ランタイムが必要です。また、C#版デモツール『TofuTester.exe』は、.NET2.0以上が必要です。

 ただし、WindowsXP SP2/SP3 であれば、標準でVB用のランタイムが予めインストールされているため、何もインストールしないでTofuDemo.exeが動作します。また、Vistaであれば、C#製のTofuTester.exeが通常そのまま動作しますので、とりあえず動作は確認できるはずです。



『Tofu』の使用

1.『Tofu』のインストール手順


『Tofu』COM のインストール手順を以下に示します。
  1. Tofu一式ファイル(Tofuxx.lzh:xxはバージョン番号)を解凍して適当なディレクトリ("C:\tofu"等)に置きます。
    以降、解凍されたファイルが「"C:\tofu"」に置かれていることを前提に進めますので、別のディレクトリに置く場合はディレクトリパスを読み替えてください。

  2. コマンドプロンプトを開きます。ただし、Vistaであればコマンドプロンプトを管理者権限で実行させる必要があります。
    Vistaの場合は、以下のようにスタートメニューのリストからコマンドプロンプトを右クリックし、「管理者として実行(A)...」を選択して、表示されたダイアログの「続行」ボタンを押します。

    [管理者として実行]


  3. コマンドプロンプトにおいて、"cd C:\tofu" と入力してENTERキーを押し、"C:\tofu"をカレントディレクトリとします。

    [コマンドプロンプト]

  4. コマンドプロンプトから "regsvr32 C:\tofu\Tofu.dll" と入力してEnterキーを押し、Tofu.dllをレジストリに登録します。登録に成功すると以下のダイアログが表示されます。

    [レジストリ登録]

  5. 次に、環境変数を設定します。WindowsXPであれば、画面上の「マイコンピュータ」を右クリックして「プロパティ」を選択し、表示されたダイアログの「詳細設定」タブを開きます。
    Vistaであれば、「コントロールパネル」→「システムとメンテナンス」→「システム」→「システムの詳細設定」を選択し、表示されたダイアログの「詳細設定」タブを開きます。
    [詳細表示タブ]

  6. 環境変数ボタンを押し、表示される環境変数ダイアログの下段の「新規」ボタンを押して、以下のようにシステム変数に「TOFUDICPATH」、変数値にTofuのパス(C:\tofu\TofuDic)を設定して「OK」ボタンを押します。

    [環境変数登録]

  7. 表示される環境変数ダイアログを「OK」ボタンを押して終了させます。
    以上でTofu COMのインストールは完了です。
    後は、TofuTester.exe(VIsta時v)またはTofuDemo.exe(XP時)を起動させてください。


2.Tofuデモツールについて


【概要】

Tofuデモツールは、VB6.0で作成された、Tofu.dllを呼び出してその機能を確認するためのツールです。以下にツールの使い方の概要を示します。なお、動作環境はWindowsXPの前提です。Vistaで動作させる場合は、セキュリティの設定によって異なりますが、管理者として実行させないとうまく動作しない場合があります。その場合は管理者として実行させてください。

【手順】
  1. C:\tofuにあるTofuDemo.exeをダブルクリックしてTofuデモツールを起動させます。

    [TofuDemo]

  2. 起動した『Tofu』テスタの入力文字列テキストボックスに、解析したいテキストをコピー&ペイストで貼り付けるか直接入力します。
  3. 確認したい機能のボタンを押します。
  4. 入力したテキストに対して該当の解析処理が行われ、結果が出力結果テキストボックスに表示されます。結果の文字列を拡大するなら「+」ボタン、縮小するなら「−」ボタンを押します。
以下にデモツールの機能の一覧を示します。
Tofuデモツール機能一覧
     ボタン/表示 機能
1  形態素解析ボタン   入力文章テキストボックスに入力された文字列を引数としてTofu.dllのanalyzeメソッドを呼び出し、その結果を出力結果テキストボックスに表示します。 
2  分かち書きボタン   入力文章テキストボックスに入力された文字列を引数としてTofu.dllのtokenizeメソッドを呼び出し、その結果を出力結果テキストボックスに表示します。 
3  名詞抜き出しボタン   入力文章テキストボックスに入力された文字列を引数としてTofu.dllのselectNounメソッドを呼び出し、その結果を出力結果テキストボックスに表示します。 
4  +ボタン   出力結果テキストボックスに表示されたフォントのサイズを14ポイントにします。 
5  −ボタン   出力結果テキストボックスに表示されたフォントのサイズを10ポイントにします。 
6  入出力クリアボタン   入力文章及び出力結果のテキストボックスをクリアします。 
7  終了ボタン   デモツールを終了します。 
8  入力文章テキストボックス   解析したいテキストをコピー&ペイストで貼り付けるか直接入力します。 
9  出力結果テキストボックス   解析結果が表示されます。 
10  所要時間   該当メソッドの実行時間をmS単位で表示します。 


3.Tofuテスタツールについて


【概要】

Tofuテスタツールは、VB2008.netで作成された、Tofu.dllを呼び出してその機能を確認するためのツールです。動作環境はWindowsVistaが前提です。なお、.net Framework 2.0 以上がインストールされていればWindowsXPでも動作します。
画面構成、機能は全てTofuデモツールと同じですので、操作手順の記述は省略します。

[TofuTester]


4.『Tofu』のアンインストール手順

『Tofu』をアンインストールする手順を以下に示します。

【概要】

『Tofu』COMのインストール時、環境変数 TOFUDICPATH を作成して辞書の存在するディレクトリパスを設定しました。また、『Tofu』COM の情報をレジストリに登録しました。アンインストールはこの2つの情報を削除することで行います。

【手順】
  1. WindowsXPであれば、画面上の「マイコンピュータ」を右クリックして「プロパティ」を選択し、表示されたダイアログの「詳細設定」タブを開きます。
    Vistaであれば、「コントロールパネル」→「システムとメンテナンス」→「システム」→「システムの詳細設定」を選択し、表示されたダイアログの「詳細設定」タブを開きます。

    [システムのプロパティ−詳細設定]


  2. 「環境変数」ボタンを押し、表示される環境変数ダイアログの下段の「システム環境変数」のウィンドウ中の「TOFUDICPATH」の行をクリックして「削除」ボタンを押します。

    [環境変数−削除]


  3. 次に、コマンドプロンプトを開きます。ただし、Vistaであればコマンドプロンプトを管理者権限で実行させる必要があります。 Vistaの場合は、以下のようにスタートメニューのリストからコマンドプロンプトを右クリックし、「管理者として実行(A)...」を選択して、表示されたダイアログの「続行」ボタンを押します。

    [管理者として実行]


  4. コマンドプロンプトにおいて、"cd C:\tofu" と入力してENTERキーを押し、"C:\tofu"をカレントディレクトリとします。

    [コマンドプロンプト]

  5. コマンドプロンプトから "regsvr32 /u C:\tofu\Tofu.dll" と入力してEnterキーを押し、Tofu.dllのCOM情報をレジストリから削除します。削除に成功すると以下のダイアログが表示されます。

    [レジストリ削除]


  6. 最後に、『Tofu』のインストールされているディレクトリをまるごと削除すればアンインストールは完了です。

形態素解析について

『Tofu』が行っている形態素解析の概要と、採用している方式について以下にまとめます。

1.形態素解析とは

形態素解析は、文章を単語に分解することです。単語は品詞という種別に分けられており、単語辞書に登録されています。この単語辞書を用いて、解析対象の文章を、日本語の文法として可能な形に分解します。その結果はひとつではなく、文法的に正しい複数の候補があり得ます。文章の長さによりますが、候補は数百から数十万件に及ぶ場合があります。人間が意味を考えながら文章を読む場合、論理や文脈を追っているため、解釈に複数の候補があるような場合はきわめて少ないといえます。しかし、ソフトウェアによる形態素解析は、意味まで追うことができないため、文法的に不可能な場合を除いて複数の候補が存在するのが普通です。

[形態素解析例]
形態素解析のイメージ図

このイメージ図は、形態素解析の候補が複数あることを表しています。実際の形態素解析の過程で、一時的に作成される候補はもっとたくさんあります。この候補の中から、日本語の文章としてより自然なものを選択し、最終的な解析結果としなければなりません。この例の中で、「に:動詞,自立」は、その後に「役立つ:動詞,自立」が続いていますが、この接続パターンは文法的にあり得ないため、候補から除外されなければなりません。また、「かもしれない」の箇所は候補により単語の区切りが異なっています。最終的にどの候補が選ばれるかは、単語の品詞品詞の連接コストを計算した結果によります(連接コスト最小法)。

2.連接コスト最小法


連接コスト最小法は、品詞間の連接のコストを予め決定して連接コスト辞書に収めておき、形態素解析の候補の選択時に、最小のコストになる候補を選択する方式です。連接コストは、品詞の接続の自然さの度合いを指し、自然であれば低い値が、不自然であれば高い値が設定されます。つまり、コストが低いということは確率が高いことを指します。このロジックは、ビタビ・アルゴリズムに準じたものですが、連接コストのみを計算するという点が通常の形態素解析と異なります。

[連接コスト計算例]
連接コスト計算例

上の連接コスト計算例の図において、A、B、Cの候補のそれぞれのコストを計算すると、A=8598、B=13001、C=14001となります。従って、赤い線で結ばれた候補Aが解析結果として採択されます。

3.品詞体系

『Tofu』で使用している品詞の区分とその例を挙げます。なお、この品詞区分は、IPA品詞体系の大分類と中分類にほぼ準じたものです。また、CODEは『Tofu』が内部で使用している品詞コードです。

品詞区分
CODE 品詞
0 未知語,* 辞書に登録されていない単語
1 その他,間投 「ァ」「よ」
2 フィラー,* 「あのー」「えーと」「えー」
感動詞,* 「御意」「どーぞ」「ごきげんよう」「もしもし」
4 記号,アルファベット 「A」「B」「C」
5 記号,一般 「×」「$」「々々」「|」
6 記号,括弧開 「“」「[ 」「「」「【」「<」
7 記号,括弧閉 「”」「] 」「」」「】」「>」
8 記号,句点 「。」「. 」
9 記号,空白 「 」「 」またはTAB、CR、LFなど
10 記号,読点 「、」「, 」
11 形容詞,自立 「凛凛しい」「にがにがしい」「誇らしい」
12 形容詞,接尾 「っぽい」「ったらしい」
13 形容詞,非自立 「(離れ)がたい」「(入り)づらい」
14 助詞,格助詞 「が」「の」「を」「に」「へ」「と」「より」「から」「で」
15 助詞,係助詞 「は」「も」「こそ」「さえ」「しか」「しも」「でも」
16 助詞,終助詞 「かしら」「な」「ぞ」「ぜ」「とも」「の」「わ」「や」
17 助詞,接続助詞 「ば」「と」「ても」「けれど」「が」「のに」「ので」「から」「し」「て」
18 助詞,特殊 「かな」「けむ」「にゃ」
19 助詞,副詞化 「と」「に」
20 助詞,副助詞 「ばかり」「まで」「だけ」「ほど」
21 助詞,副助詞/並立助詞/終助詞   「か」
22 助詞,並立助詞 「とか」「だの」「やら」
23 助詞,連体化 「の」
24 助動詞,* 「ある」「なら」「たく」「なる」「無き」
25 接続詞,* 「だから」「したがって」「しかし」「けれども」「また」「および」「あるいは」「もしくは」  
26 接頭詞,形容詞接続 「お」「超」「真」
27 接頭詞,数接続 「小」「およそ」「各」「向こう」「計」
28 接頭詞,動詞接続 「ぶっ(飛ばす)」「引き(抜く)」
29 接頭詞,名詞接続 「悪代官」「御先祖」「広範囲」「小選挙区」「今大会」
30 動詞,自立 「いがみ合う」「たてつく」「垢抜ける」
31 動詞,接尾 「する」「られる」「させる」「がかる」
32 動詞,非自立 「行ってしまう」「やっちゃったね」「ご遠慮願う」
33 副詞,一般 「たいそう」「人一倍」「いけしゃあしゃあ」
34 副詞,助詞類接続 「あまり」「いつも」「ぱさぱさ」
35 名詞,サ変接続 「ドライブ」「苦労」「終了」「アピール」「くしゃみ」
36 名詞,ナイ形容詞語幹 「申し訳」「とんでも」「おとなげ」「味気」
37 名詞,一般 「本」「コンピュータ」「雪」「ありさま」
38 名詞,引用文字列 「いわく」
39 名詞,形容動詞語幹 「めちゃくちゃ」「あからさま」「ミステリアス」「最高」
40 名詞,固有名詞 「北海道」「日本」「東京タワー」
41 名詞,数 「億」「兆」
42 名詞,接続詞的 「vs」「兼」「対」
43 名詞,接尾 「気味」「枚」「可」
44 名詞,代名詞 「そこ」「私」「どれ」
45 名詞,動詞非自立的 「ごらん」「ちょうだい」
46 名詞,特殊 「そ」「そう」
47 名詞,非自立 「こと」「上」「旨」「もの」「初め」
48 名詞,副詞可能 「上旬」「若干」「常時」「少々」「場合」
49 連体詞,* 「あの」「あらゆる」「たいした」


4.単語辞書

『Tofu』が使用する単語辞書は、33万語の単語と品詞区分を収めたものです。

[単語辞書イメージ]
単語辞書イメージ

この例は、「月」という単語の登録付近を示したものです。登録内容は単語と品詞コードの昇順に並んでいます。

5.連接コスト辞書

『Tofu』が使用する連接コスト辞書は、品詞の連接コストが2500パターン(50品詞×50品詞)分登録されています。品詞の連接コストは、文章の品詞間の連接パターンの頻度収集結果を元に自動生成されます。このオリジナルの連接コスト辞書に対して補正を行い、解析精度を上げてたものをリリースしています。

[連接コスト辞書イメージ]
連接コスト辞書イメージ

リリース履歴

  1. 2010.09.16 Ver.0.2.2版リリース
  2. 2010.01.15 Ver.0.2版リリース
  3. 2009.10.12 Ver.0.1版作成


All rights reserved, Copyright © 2009 Discovery Inc.