Lingua::LanguageGuesser - 言語判定器
use Lingua::LanguageGuesser;
$textstring = 'text strings'; @lang_list_sorted_similarity = Lingua::LanguageGuesser ->guess($textstring) ->eliminate() ->suspect('english', 'japanese-euc_jp') ->result_list(); print "Input is perhaps $lang_list_sorted_similarity[0]";
Lingua::LanguageGuesserは与えられたテキスト文字列から言語を推定します.
このモジュールは``TextCat'' Language guesser をPerlモジュール化し、utf8文字コード対応機能を追加したものです
特徴は次のとおり
guess()
メソッドはLingua::LanguageGuesserオブジェクトのコンストラクターです.
最初の引数 (ハッシュ) はオプションの指定です(省略可)。 'utf8'オプションは`utf8エンコードモード'の振る舞いを決めます。もし、入力したテキスト文字列がEncode::Guessによってutf8エンコードであると認識された場合、``auto''パラメータは非utf8言語モデルからuft8専用の言語モデルを使うよう処理を切り替えます。``omit''パラメータはutf8専用の言語モデルを使いません。 ``include''パラメータは非utf8とutf8専用の言語モデルを同時に使います。
もし、独自の言語モデルを create_model()
メソッドで作成した場合, 'MyModel'でその言語モデルのあるディレクトリを指定できます。. 'MyModel_utf8'は独自のutf8言語モデルを指定します。
'MaxLine'は入力から先頭何行まで言語判定に使うかを指定します。
2番目のパラメータは言語判定を行うテキスト文字列です。 new()
メソッドを guess(の代わりに使うことができます。 new()
メソッドは guess()の別名です。
use Lingua::LanguageGuesser; my $guesser = Lingua::LanguageGuesser->guess( { utf8 => 'include', # select "auto","omit" or "inculde". MyModel => './my_language_model_directory', MyModel_utf8 => './my_utf8_kanguage_model_directory', MaxLine' => 1000 }, $textstring );
or
my $guesser = Lingua::LanguageGuesser->new( { utf8 => 'include', # select "auto", "omit" or "inculde" MyModel => './my_language_model_directory', MyModel_utf8 => './my_utf8_kanguage_model_directory', MaxLine => 1000 }, $textstring );
テキスト文字列を以下のようにも指定できます。
my $guesser = Lingua::LanguageGuesser->new( { utf8 => 'include', # select "auto", "omit" or "inculde" MyModel => './my_language_model_directory', MyModel_utf8 => './my_utf8_kanguage_model_directory', MaxLine => 1000 } ); print "$textstring1 is ", $guesser->set_text($textstring1)->best_scoring(), "\n"; print "$textstring2 is ", $guesser->set_text($textstring2)->best_scoring(), "\n";
3つの形式の処理を結果を返すメソッドをサポートしています。
1. score_of_lang()
メソッドは各言語名とその類似度をPerlのハッシュ形式で返します。
%score_of_lang = $guesser->score_of_lang(); $score_of_english = $score_of_lang{'english'};
2. result_list()
メソッドは類似度の高い順にソートされた言語リストをPerlの配列形式で返します。
@lang_list_sorted_similarity = $guesser->result_list();
3. best_scoring()
メソッドは最も類似度が高い言語名のみPerlのスカラー値で返します。
もし、eliminate()
メソッドを使い、いくつかの言語候補が得られた場合, 文字列``Two or more suspects remain''を返します。
もし、suspect()
メソッドを使い、言語候補が得られなかった場合, 文字列``No language suspectsi''を返します。.
$most_similar_lang = $guesser->best_scoring()
or
$most_similar_lang = $guesser->eliminate()->best_scoring(); if ($most_similar_lang eq 'Two or more suspects remain') { Any Code }
このモジュールは2つの結果をフィルタリングするメソッドをサポートしています。eliminate()
と suspect()です。 メソッドの適用順は結果に反映します。なぜなら、 「最初に使ったメソッドが最初に適用される」仕様であるからです.
eliminate()
メソッドでは、どのくらい類似度が悪い言語を結果から取り除くかを指定します。 お勧めは1.05か1.1です。 デフォルト値は1.05になっています。
$guesser->eliminate( 1.1 ) ;
suspect()
メソッドは引数に指定した言語のみ判定の候補とします
$guesser->suspect('english', 'japanese-euc_jp');
メソッドを次のようにつなげることも出来ます。
@lang_list_sorted_similarity = Lingua::LanguageGuesser ->guess($textstring) ->eliminate() ->suspect('english', 'japanese-euc_jp') ->result_list();
自身の言語モデルを作成し削除することができます。 もし、同名の言語モデルが配布パッケージに既に存在していた場合、ユーザ用の言語モデルが優先されます。
create_model()
メソッドは言語モデルを作成もしくは再作成します。自身の言語モデルを置くディレクトリ、言語モデルの元にするテキストファイル、言語名を以下のとおり指定します。
use Lingua::LanguageGuesse qw(create_model); create_model('./my_language_model_directory', 'source_file', $language_name );
delete_model()
メソッドは既存の言語モデルを削除します。自身の言語モデルを置いたディレクトリ、 言語名を指定します。
use Lingua::LanguageGuesser qw(delete_model); delete_model('./my_language_model_directory', $language_name);
list_my_models()
method retrun your own langugae model list.
use Lingua::LanguageGuesser qw(list_my_model); my @mymodel = list_my_model('./my_language_model_directory');
このモジュールは標準では何のメソッドもEXPORTしません。 create_model(), delete_model()
, list_my_models()
のみ要求に応じてEXPORTします
use Lingua::LanguageGuesser qw(create_model delete_model list_my_models);
CPANにおける他の言語判定器です
Lingua::Identify Language::Guess Text::Language::Guess Text::Ngram::LanguageDetermine
``TextCat''の情報
http://www.let.rug.nl/~vannoord/TextCat/
「言選Web」のホームページ
http://gensen.dl.itc.u-tokyo.ac.jp/
Akira Maeda <maeda@lib.u-tokyo.ac.jp>
Copyright (C) 2006 by Akira Maeda (maeda@lib.u-tokyo.ac.jp) Original Souce Code ``TextCat'' was written by Gertjan van Noord.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation (http://www.fsf.org/); either version 2 of the License, or (at your option) any later version.