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);
?>