PHPで文字列から言語を自動検出する方法【Text_LanguageDetect】
文字列から使用されている言語を特定したい場面は多々ありますが、文字種(文字コード)だけでは言語を正確に判別することはできません。他にもいくつかの手法が存在しますが、いずれも完全な精度は保証されません。
そこで活用できるのが、PEARライブラリの「Text_LanguageDetect」パッケージです。このパッケージを使用すれば、比較的高い精度で言語を自動検出できます。
インストール方法
まず、以下のコマンドでパッケージをインストールします。
pear install Text_LanguageDetect
サンプルコード
require_once 'Text/LanguageDetect.php';
$l = new Text_LanguageDetect();
$result = $l->detect($text, 4);
if (PEAR::isError($result)) {
echo $result->getMessage();
} else {
print_r($result);
}detect() メソッドの第2引数には、取得したい候補言語の数を指定します。上記の例では、スコアの高い上位4つの言語が結果として返されます。
実行結果
このコードを実行すると、次のような出力が得られます。
Array ( [german] => 0.407037037037 [dutch] => 0.288065843621 [english] => 0.283333333333 [danish] => 0.234526748971 )
各言語名に紐づく数値は、そのテキストが該当する言語である可能性(類似度スコア)を表しています。値が大きいほど、その言語である可能性が高いと判断できます。上記の例では、ドイツ語が最有力候補となっています。
特徴と注意点
- シンプルなAPIで手軽に利用できる
- 52言語分のデータベースを内蔵している
- 一方で、日本語・中国語・韓国語といった東アジア言語は検出できないという欠点がある
東アジア言語の判定が必要な場合は、mb_detect_encoding() などによる文字エンコーディングの判別と組み合わせるか、別のライブラリの導入を検討するとよいでしょう。
-
PHPのstrspn()関数とは?構文・パラメータ・使い方をわかりやすく解説
はじめにPHPのstrspn()関数は、文字列の先頭から見て、charlistパラメータに含まれる文字が連続して現れる長さ(文字数)を返す関数です。charlistに含まれない文字が出現した時点で処理が終了し、それまでに一致した文字数が結果として返されます。構文strspn(str, charlist, begin, len)パラメータstr − 検索対象となる文字列charlist − 検索対象とみなす(許可する)文字の一覧begin − 検索を開始する位置(省略可能)。負の値を指定すると文字列の末尾からの位置になりますlen − 検索する長さ(省略可能)。負の値を指定すると末尾から指定文字
-
PHPのstrrev()関数とは?文字列を反転させる使い方を解説
strrev()関数は、PHPに組み込まれている関数の一つで、文字列を逆順(反転)に並び替えるために使用されます。引数として渡された文字列の文字順序を逆にし、その結果を返します。 構文 strrev(str) パラメータ str − 反転したい文字列を指定します。 戻り値 strrev()関数は、文字の並びを逆にした文字列を返します。 使用例 以下は、strrev()関数を使って文字列を反転させる基本的な例です。 <?php echo strrev(Jack);?> 出力結果 上記のコードを実行すると、次のように表示され