二バイト文字はなぜシステム上翻訳が難しいのか?

二バイト文字はなぜシステム上翻訳が難しいのか?

英語は単バイト(一バイト)で扱える言語なため構造上簡単である。ローマ字を思い出してほしい。西洋の言語は限られた文字でその当該言語が構成されているのである。限りなく単純に言うとこれが理由であるに尽きる。大して中国語や日本語などは二バイト文字である。言語の構造が複雑なためシステム上翻訳がとても難しい。よくゲーム翻訳で二バイト文字が翻訳難度が高いのはこの根である。詳しいところはGPTに聞いてみた。ちょっと詳しく見ていこう。

①文字コードの複雑さ

まずGPTはこれを挙げた。たとえば「あ」と書いたとする。その「あ」に該当する英文字は「A」である。ただしバイト単位で切り出すと「あ」は”0x82 0xA0″なのに対して「A」は”0x41″である。このように二バイト文字は一文字を二バイト以上で構成しているがそれに対し単バイト文字は一文字=一バイトで構成される。そもそも構成する文字コードが複雑だからシステム上当然翻訳は難しくなる。

②バイトと文字の混同

次にGPTはこれを挙げた。翻訳システムのうちの多くは文字列をバイト列として処理する。しかし二バイト文字を単純に単バイトずつ処理すると誤認識が起こる。これが文字化けである。もし翻訳システムが単バイト当たりの文字数が一文字である…と仮定し前提の条件としてこれを置くと例えば「こんにちは」という言語を処理するとき文字単位ではなくバイト単位で切れてしまうのだ。翻訳上難しい理由である。

③文字セットの不一致

三つ目にGPTはこれを挙げた。一例になるがShift-JISの文字セットを違う文字セット…例えばUTF-8で解釈すると文字化けが生じるのは当然のことである。よくテキストファイルを別の言語セットで開くと文字化けが生じていて解読不可能なものになっているのはこれが原因である。だから文字セットの規格を合わせて適当にたまたま開いてみるだけで文字化けの問題が解決しているのはこのセットの一致が起こっているからである。

④自然言語処理(NLP)の課題

最後にGPTはこれを挙げた当然言語分析をする中で形態素解析は必須である。英語などの西洋語は単純な構成だからNLPをする中で形態素解析は簡単である。対して日本語は構造が複雑である。例えば単語と単語の間にスペースがなくて漢字と平仮名とカタカナが混在している。そのためNLPする中で形態素解析のためのツールが複雑に対応するのである。だからこそ形態素解析…つまり必要なだけ単純に切り取って言語を取り扱うツールがNAISTの偉い研究室から発表されているのである。二バイト文字を単純なバイトとして扱うとミスが起こるというのはNLPの都合上も当然起こり得ることなのだ。

技術進展と最近の動向

近年はUTF-8の普及とNLPの手法の適合・高度化によりひと昔よりは二バイト文字の扱いはとてもしやすくなっているそうである。だがそれでも漢字や特殊記号などではことさら誤認識が起こることがある。またここまで技術的な問題を挙げたきたが当然根本的に作業量の問題というのもある。だからこそゲームの翻訳プロジェクトではしばしばスプレッドシートで翻訳ファイルが公開され共有されている…というわけだね。裏を言ってしまえば『複雑だから』これに尽きる。単純なことなんだがお判りいただけただろうか?以上の理由により我々が再びバベルの塔を構築するのは難しいのである。