KazMuzik.net
Music / Technology / Healthcare / Immigration / アメリカ
Google
 
<< sampo - libtextcat language module postedRefund trouble at Fry's >>

sampo language project #7 - KazMuzik Blog
2008-02-29 19:39

前回の language module を使うことにより、sampo プロジェクトのコードとは無関係に、libtextcat で利用することができるようになりました。しかし、私も別のプロジェクトで使ってみたのですが、まだまだ改善すべき点は、多々あります。

まずは、サポートする言語の数が多いほど、誤認識する可能性が高くなります。特に、article 数の少ない言語は、メインページがあまり充実していないため、英語も含まれていたりして、このため、英語のテキストを classify すると、これらの言語が [en.UTF-8][en.ISO-8859-15]の他に、混ざってくることがあります。特に、Herero (hz) のメインページは、この言語の wikipedia は close された、ということが英語で記述されています。このようなページから作った language module は、役に立たないばかりか、誤認識の原因となるので、削除しなければいけません。

このため、WikipediaLanguage に、selectLanguages() という static method を実装して、article 数と、言語コードの長さによって、filter できるようにしました。例えば、WikipediaLanguage.selectLanguages(10000, 2) により、10,000 以上の article をもち、Alpha-2 の ISO 639-1 のコードをもつ 66言語だけを得ることができます。これを、Chain から使えるように、SelectWikipediaLanguagesCommand を用意して、ExtractAllWikipediaTextsCommand を変更しました。
$ cvs -d :pserver:username@cvs.dev.java.net:/cvs login
$ cvs -d :pserver:username@cvs.dev.java.net:/cvs checkout sampo
$ cd sampo/language
$ export JAVA_HOME=/usr/java/jdk1.6.0_04
$ export SAMPO_HOME=/var/sampo
$ export PATH=$SAMPO_HOME/bin:$JAVA_HOME/bin:$PATH
$ ant init
$ ant compile
$ ant -DSAMPO_HOME=$SAMPO_HOME install
$ cd $SAMPO_HOME
$ rm -rf wikipedia-mainpage-text LM
$ wikipedia-mainpage-text.sh 10000 2
$ create-local-encoding-texts.sh
$ wikipedia-mainpage-createfp.sh
$ cd wikipedia-mainpage-text
$ test-jni-libtextcat.sh en.*.txt ja.*.txt
en.ISO-8859-15.txt      [en.ISO-8859-15]
en.UTF-8.txt    [en.ISO-8859-15][en.UTF-8]
ja.EUC-JP.txt   [ja.EUC-JP]
ja.ISO-2022-JP.txt      [ja.ISO-2022-JP]
ja.Shift_JIS.txt        [ja.Shift_JIS]
ja.UTF-8.txt    [ja.UTF-8]
ja.EUC-JP.txt   [ja.EUC-JP]
ja.ISO-2022-JP.txt      [ja.ISO-2022-JP]
ja.Shift_JIS.txt        [ja.Shift_JIS]
ja.UTF-8.txt    [ja.UTF-8]
$ 

今回のツールを使用しなくても、直接 config file を edit してもいいのですが、実際のアプリケーションに最適な language module を作成するために、いろいろな config file で試したかったため、実装してみました。

Tags: programming