Igo-php - PHPによる形態素解析プログラム

1. 概要
    これは「Igo - Java形態素解析器」の PHP による実装です。Igo は、MeCab
    由来の辞書フォーマットを用い、ほぼ MeCab と同様の結果を提供する形態素
    解析プログラムです。この Igo-php は、Igo と同様の形態素解析と分かち書
    きの機能を提供します。

2. インストール方法
    アーカイブを解いて、取り出された内容を適当な場所にコピーして使用します。
    PHP の API として、他のプログラムから呼び出す場合は、コピー先をインク
    ルードパスに追加するか、既にインクルードパスとして指定してあるディレク
    トリに Igo.php と Igo/ 以下のファイルを配置します。

3. 辞書の作成方法
    Igo-php 自体は、辞書生成の機能を提供しません。従って、辞書生成に当たっ
    ては、本家のIgoを使用します。これについての詳細は、
    http://igo.sourceforge.jp/index.html#usage
    をご覧いただくとして、簡単な手順のみを以下に示します。

(1) MeCabプロジェクトが配布している(もしくはそれと互換性のある)辞書を入手
    する。これは、
    http://sourceforge.net/projects/mecab/files/mecab-ipadic/2.7.0-20070801/
    http://sourceforge.jp/projects/mecab/releases/?package_id=3701
    http://sourceforge.jp/projects/naist-jdic/releases/?package_id=7240
    http://sourceforge.jp/projects/unidic/releases/
    などから入手可能です。
(2) Igo本体を http://sourceforge.jp/projects/igo/releases/ から入手する。
(3) これらを用いて、
    $ java -cp igo-0.4.5.jar net.reduls.igo.bin.BuildDic ipadic mecab-ipadic-2.7.0-20070801 EUC-JP
    を実行する

この手順でカレントディレクトリに生成された ipadic/ 以下が辞書本体です。
これを、適当なディレクトリにコピーして使用してください。

4. 使用方法
PHPプログラムから呼び出す場合
   まず、composer.pharをダウンロードしそこで以下のコマンドを実行します。
    php composer.phar require logue/igo-php
   すると、このライブラリ一式がダウンロードされます。
   
   a. 分かち書き
    <?php
    require 'vendor/autoload.php';
    
    $igo = new Igo\Tagger(array('dict_dir'=>"/home/user/jdic"));
    $result = $igo->wakati("すもももももももものうち");
    print_r($result);

   b. 形態素解析
    <?php
    require 'vendor/autoload.php';
    
    $igo = new Igo\Tagger(array('dict_dir'=>"/home/user/jdic"));
    $result = $igo->parse("すもももももももものうち");
    print_r($result);

    単体で使用する場合と同様に、指定した文字列から適切なエンコードが判定出
    来ないような場合は、Igo クラスのコンストラクト時のoutput_encodingの値を
    変更し、出力エンコードを明示的に指定することで回避できます。

    $igo = new Igo\Tagger(array(
        'dict_dir'=>"/home/user/jdic",
        'output_encoding'=>'Shift_JIS'
    ));

5. REDUCE モード
    これは、実行時の使用メモリを調整するためのものです。
    既定では REDUCE モード TRUE で動作します。この状態で動作する時、Igo-php
    は、解析時に辞書ファイルに対してダイレクトアクセスします。
    OFFにすると、コンストラクタの実行時に、辞書を内部メモリに貯め込みます。
    解析処理自体は若干早くなりますが、使用メモリは増えます。
    比較的大量のテキストデータをバッチ処理で処理しなければならないような場
    合は、OFFにするとよいでしょう（しかし、このようなケースであれば、本家の
    Igo を使う方が、圧倒的に高速です）。
    REDUCE モードを OFF にするには、以下のようにコンストラクト時に、
    reduce_modeを追記します。

    $igo = new Igo\Tagger(array(
        'dict_dir'=>"/home/user/jdic",
        'reduce_mode'=>false
    ));

    なお、REDUCE モードを FALSEで使用する場合、memory_limit パラメータを適切
    に設定するなどの考慮が必要です。

    例） ini_set("memory_limit", "1073741824"); //1024^3

6. バイトオーダーについて
    バイナリ辞書のバイトオーダーは、辞書を作成した環境によります。ビッグエ
    ンディアンな環境で生成された辞書はリトルエンディアンのプラットフォーム
    では使用できません。逆もまた然り。
    Igo-phpは、デフォルトでリトルエンディアン用の設定になっています。
    Intel系のプラットフォームであれば、このままでよいはずです。
    ビッグエンディアンのプラットフォームで利用する場合は、コンストラクト時に
    little_endianの値を変更してみてください。

    $igo = new Igo\Tagger(array(
        'dict_dir'=>"/home/user/jdic",
        'little_endian'=>true //true->Little endian, false->Big endian
    ));

7. ライセンス
    MITライセンスで配布いたします。詳しくは同梱の COPYING ファイルを参照の
    こと。なお、使用する辞書のライセンスに関しては、辞書配布元のそれに準ず
    ることとします。

8. 連絡先
    igo-php-devel@lists.sourceforge.jp

9. 参考リンク
    「Igo - Java形態素解析器」 http://igo.sourceforge.jp/index.html

