Lingua::LanguageGuesser - 言語判定器



名称

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

サポートしている言語 (not utf8 mode)

afrikaans
albanian
amharic-utf
arabic-iso8859_6
arabic-windows1256
armenian
basque
belarus-windows1251
bosnian
breton
bulgarian-iso8859_5
catalan
chinese-big5
chinese-gb2312
croatian-ascii
czech-iso8859_2
danish
dutch
english
esperanto
estonian
finnish
french
frisian
georgian
german
greek-iso8859-7
hebrew-iso8859_8
hindi
hungarian
icelandic
indonesian
irish
italian
japanese-euc_jp
japanese-shift_jis
korean
latin
latvian
lithuanian
malay
manx
marathi
middle_frisian
mingo
nepali
norwegian
persian
polish
portuguese
quechua
romanian
rumantsch
russian-iso8859_5
russian-koi8_r
russian-windows1251
sanskrit
scots
scots_gaelic
serbian-ascii
slovak-ascii
slovak-windows1250
slovenian-ascii
slovenian-iso8859_2
spanish
swahili
swedish
tagalog
tamil
thai
turkish
ukrainian-koi8_u
vietnamese
welsh
yiddish-utf

サポートしている言語(utf8 mode)

amharic-utf
basque
bosnian
chinese_simple-utf8
chinese_ZH-utf8
croatian-ascii
english
finnish-utf8
french-utf8
german-utf8
indonesian
italian-utf8
japanese-utf8
korean-utf8
latin
malay
manx
norwegian-utf8
romanian
russian-iso8859_5
sanskrit
scots
serbian-ascii
slovak-ascii
slovenian-ascii
spanish-utf8
swahili
swedish-utf8
tagalog
welsh
yiddish-utf

EXPORT

このモジュールは標準では何のメソッドもEXPORTしません。 create_model(), delete_model() , list_my_models() のみ要求に応じてEXPORTします

  use Lingua::LanguageGuesser qw(create_model delete_model list_my_models);


SEE ALSO

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 AND LICENSE

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.