PHP (igo-php) で形態素解析

  • 22
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

どんなものがあるか?

  • php_mecab (phpのモジュール)
  • igo-php

どれがいいの?

igo-php にした。

  • Mac OS X の MAMP だとモジュール組み込みなど激しく面倒なので。

使ってみた感想

思ったよりうまく分けてくれなかったので、利用を諦めた。
ちゃんと調教するといいのかもだけど、工数が見えないので諦めた。

問題点

  • 氏名が、苗字と名前に分けられた (氏名両方で取得したかった)
  • 名前が、真奈だとしたら、真、奈と別れた
  • AKB48 が AKB と 48 にわかれた

などなど、沢山。
辞書登録等しなきゃなんだろうけども。

igo-php の公式サイト

Igo - a morphological analyzer
http://igo.sourceforge.jp/

igo-php の特徴

公式ページから概要/特徴

  • Javaで実装された形態素解析器。→ Common Lisp版
  • 辞書フォーマット及び解析結果は、ほぼMeCab互換。
  • 単機能。
  • Javaの形態素解析器としては比較的高速。
  • スレッドセーフ。

インストールの大まかな流れ

まずは大まかな流れ (2013/08/01 時点)

  1. jarファイルをダウンロード
  2. Mecab用IPA辞書をダウンロード
  3. 上記jarを使って、IPA辞書をコンパイルして作成
  4. igo-php をダウンロード (igo-php 0.1.7)

インストール方法

1. jarファイルのダウンロード

ダウンロード - Igo - SourceForge.JP
http://sourceforge.jp/projects/igo/releases/

2. Mecab用IPA辞書をダウンロード

Downloads - mecab - Japanese morphological analyzer
https://code.google.com/p/mecab/downloads/list

以下のが最新かな??
mecab-ipadic-2.7.0-20070801.tar.gz

3. 上記2つを使って、辞書をコンパイルして作成

3の辞書を作成する方法

java -Xmx1024m -cp igo-0.4.5.jar net.reduls.igo.bin.BuildDic ipadic mecab-ipadic-2.7.0-20070801 EUC-JP

4. igo-php をダウンロード

igo-php 公式は、どっちだろ?

siahr/igo-php
https://github.com/siahr/igo-php

Igo-php プロジェクト日本語トップページ - SourceForge.JP
http://sourceforge.jp/projects/igo-php/

java で解析テスト


$ java -cp igo-0.4.5.jar net.reduls.igo.bin.Igo ipadic
すもももももももものうち [Enter]

php で解析テスト

$ php Igo.php <辞書へのパス> <文字列(またはテキストファイル)> 
$ php Igo.php /home/user/ipadic "すもももももももものうち" 

メモリー不足になるので、一時的に増やした方がいいかも。

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes) in /Users/hoge/igo-php-0.1.7/lib/Igo/FileMappedInputStream.php on line 26

実際のコード

dirname 使っているところは許して。define等で絶対パスを。

<?php
ini_set('memory_limit', '128M');
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/igo-php/lib/Igo');
require_once(dirname(__FILE__) . '/igo-php/lib/Igo.php');

$igo = new Igo(dirname(__FILE__) . '/ipadic', 'UTF-8');
$result = $igo->parse("すもももももももものうち");
print_r($result);
$result = $igo->wakati("すもももももももものうち");
print_r($result);

参考サイト

BakedMemo: igo-phpを使って形態素解析をする方法
http://bakedmemo.blogspot.jp/2013/01/igo-php.html

[PHP]文章を解析して単語ごとに分解する(形態素解析) | PHP Archive
http://php-archive.net/php/morphological-analysis/