TinySegmenterのPHP版も見当たらなかったので、PHP版も作ってみた。


tiny_segmenter_for_php.zip (以下の4つのファイルをまとめたもの)

このPHP版TinySegmenterは、内部で文字コード変換をするためにmb関数を使っているので、mb関数が使える必要がある。

使い方はサンプルを見てもらえばわかるが、こんな感じ。

<?php
include_once(dirname(__FILE__).'/tiny_segmenter.php');

$input = "日本語の新聞記事であれば文字単位で95%程度の精度で分かち書きが行えます。 ";

$segmenter = new TinySegmenterarray();
$result = $segmenter->segment($input, 'UTF-8');

print_r($result);
?>
Array
(
	[0] => 日本語
	[1] => の
	[2] => 新聞
	[3] => 記事
	[4] => で
	[5] => あれ
	[6] => ば
	[7] => 文字
	[8] => 単位
	[9] => で
	[10] => 9
	[11] => 5
	[12] => %
	[13] => 程度
	[14] => の
	[15] => 精度
	[16] => で
	[17] => 分かち
	[18] => 書き
	[19] => が
	[20] => 行え
	[21] => ます
	[22] => 。 
)

第二引数に文字エンコーディングを指定しているが、省略しても内部でmb_detect_encodingを使って自動的に文字エンコーディングを判別する。ただし、このとき検出される文字エンコーディングがmbstring.detect_orderに依存するため、php.iniを変更するか、sample2.phpのようにmb_detect_orderで検出する文字エンコーディングを設定する必要があるかもしれない。デフォルトではこの設定が「ASCII, UTF-8」となっており、EUCやSJISを検出できないようになっていることがあるので注意。

<?php
include_once(dirname(__FILE__).'/tiny_segmenter.php');

mb_detect_order('ASCII,JIS,UTF-8,EUC-JP,SJIS');

$input = "日本語の新聞記事であれば文字単位で95%程度の精度で分かち書きが行えます。 ";

$segmenter = new TinySegmenterarray();
$result = $segmenter->segment($input);

print_r($result);
?>