文字符号化検出と言語検出

ちょうどW3Cのwww-international MLで,character encoding detectionとlanguage detectionの話が出ていた.


たとえば,WebのHTMLファイルを処理しようとしても,必ずしもどのような文字符号化なのか,どのような言語なのかが明示されているわけではなく,しかもデフォルトがISO-8859-1であることから,間違って指定されている場合すらある.
このために,対象とするドキュメントの文字符号化を判定してUnicodeに変換し,また書かれている言語を検出して,言語依存の処理をおこなったり,分類に用いるわけである.たとえば,Googleの検索結果を特定の言語に絞り込むことができるのは,language detectionを用いているからである.


ちょうど,Frank Yung-fong Tangが投稿していたので,要旨をまとめてみる.彼はNetscape Navigatorの(確か)4.0から,これに関わっているという経歴を持つ.ちなみに,Netscape Navigatorの初期の版で日本語の文字符号化を誤認識しやすかったのは,前任者の入れたバグであり,それは彼が直してくれたという経緯がある.


昔は限られた対象に対して状態機械を作ったりしていたのだが,現在の実装は統計情報(例,n-gram)を収集して判定する.たとえば,次のような論文を紹介している.


John M. Prager,
Linguini: Language Identification for Multilingual Documents,
Journal of Management Information Systems, Vol. 16, No 3. pp 71-101. Winter 1999-2000.

http://csdl.computer.org/comp/proceedings/hicss/1999/0001/02/00012035.PDF


また,FrankのMozillaの実装をJavaに移植したものは,次から入手できる.


http://www.i18nfaq.com/chardet.html



他に,私は,北研二先生の「確率的言語モデル」も基礎的知識を知る上でよいと思う.


言語と計算 (4) 確率的言語モデル

言語と計算 (4) 確率的言語モデル


北研二先生の業績リストには,確率的手法を用いて分類することで,言語の系統樹が得られるという内容の論文もあり,昔私はそれを見て衝撃を受けたことがある.


http://www-a2k.is.tokushima-u.ac.jp/member/kita/papers/index.html



他には,次のようなものがあるようだ.