LoginSignup
22
22

More than 5 years have passed since last update.

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

Last updated at Posted at 2013-08-01

どんなものがあるか?

  • 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/

22
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
22