ChaSen を PHP で動かす

2010年 04月 16日

    Google検索などにも使われているマルコフ連鎖こと形態素解析。
    今回は普通の文章も解析組み合わせできるようにPHPを追加。

    PEAR info で事前にXML/RSSがインストールされてるかも確認!

    >pear install pear_info[ENTER]

    >pear install XML_RSS[ENTER]

    これでPEARの確認はできるようになったので、以下。

    ChaSenは文字コードがEUCなので、
    以下のようにエンコードしてあげるとUTF8でも可能。
    6、22行目注目。

    function markov($text){
    
    	// ChaSenのパス
    	$chasen = '/usr/local/php/bin/chasen';
    
    	$text = mb_convert_encoding($text, "EUC-JP", "UTF-8");
    
    	//形態素解析をしたい文章を渡しつつ、ChaSenへのハンドルオープン
    	$handle = popen ("echo '$text' | $chasen ", 'r');
    
    	//結果を1行ずつ取得
    	while ($get_chasen = fgets($handle)) {
    		//ChaSenの結果がTAB区切りで帰ってくるので\tで分解
    		$kaiseki = split ("\t", $get_chasen);
    		//結果を表示
    		$res.= $kaiseki[0]." / ".$kaiseki[1]." / ".$kaiseki[2]." / ".$kaiseki[3]." / ".$kaiseki[4]." / ".$kaiseki[5]."\n";
    	}
    
    	//ハンドルを閉じる
    	pclose ($handle);
    
    	return mb_convert_encoding($res, "UTF-8");
    }
    

    こんな感じでうまく動作してくれる。

    マルコフ連鎖にも使われている形態素解析、言語学も楽しいものです。
    ヽ(´ー`)ノ

    ★☆★☆★☆ ナウでヤングなレンタルサーバー!ロリポップ! ☆★☆★☆★
    月額105円~容量最大30GB!WordpressやMovable Typeの簡単インストール付★

    Post a Comment