日本語コードの話

情報データベース論
• 担当: 中川裕志(なかがわ ひろし)
• 情報基盤センター 図書館電子化部門
• 現在の専門:言語情報処理(コーパスから
の用語抽出、2言語コーパスからの対訳辞
書抽出)、情報検索
• その他:日本語の意味論、マルチメディア
処理、など
コードの歴史
• ASCII(American Standard Code for
Information Interchange)  ANSI
• ISO 646 = 95文字のラテン文字
• アルファベット+数字+特殊文字
• 制御コード: LF, CR などの表示制御と
ACK,DEL などの通信制御 、など
ISO 646 (ASCII) 文字セット
0 1 2 3 4 5 6 7 8 9 A B C D E F
2
! “ #$% & ‘ ( ) * + ,
3 0 1 2 3 4 5 6 7 8 9 :
;
.
/
< = > ?
4 @A B C D E F G H I J K L M N O
5 P Q R S T U V WX Y Z [ \
] ^ _
6 ` a b c d e f g h i
m n o
7 p q r s t
j
k l
u v w x y z { |
} ~
日本語コードの話
• 1バイトでは最大256文字
• 字種の多い言語では多バイトコード
• 1バイトコードで事足りる欧米言語と多バイ
トコードが必要なアジアの言語とのバトル
グランド
• 文字コードのような基本的情報インフラの
標準化は社会への影響莫大
ISO2022
• エスケープシーケンスにより文字を拡張す
るための各種のメカニズム
• 各国のISO646 (アメリカならASCII、日本
ならJIS X 0201) を別個の文字集合として
指定し切り替えて使える。
• ちなみに西ヨーロッパの文字では、
ISO8859/1
ISO2022 エスケープシーケンス
変化先の文字コード
エスケープシーケンス
ASCII
ESC ( B
JIS ローマ字
ESC ( J
JIS カタカナ
ESC ( I
JIS 0208
ESC $ B
JISコードの歴史
• JISX0208(1978) 当時はJISC6226
カタカナ(いわゆる半角カタカナ)および全
角英字はいまや無用の長物ないしは有害
• 半角カタカナと全角英字は97JISでは使わ
ないことに決めた
• シフトJIS
• 78JIS  83JIS  90JIS  97JIS
内部状態を持つ文字コードと
持たない文字コード
• 1バイトコードのASCIIは内部状態なし
• 2バイトの内部状態なしコードを目指した
のがユニコード
• エスケープシーケンスのある文字コード
ISO2022 に則るコードは内部状態を持つ。
• 内部状態を持つと何がまずいのか?
JISコードにおける漢字
• 78JISの第1水準 2965文字=都道府県
名、市町村名を全て記述できる。
第2水準 3384文字
• JISX 0212 の補助漢字 5801文字
シフトJIS
• JISX0208で使用していない31文字を漢字の1
バイト目に使う。すなわち、
• 1バイト目、#x81-9F(JIS X 0201では未使用),
E0-EF(ISO2022の制御符号部分) を使う。
• 2バイト目は#x40-EF
• 合計24576文字
• 台湾、中国、韓国版として Big5, GBK,UHC
漢字の形
• 「包摂」 とは 異なる字形を同一視の基準
のこと。 例えば、「高」や「富」や「国」のふ
たつの字形など
• そもそも字形のぶれをきちんと定義できる
のか?
• 計算機技術によって解決できる種類の問
題?
文字と文字コードと字形の関係
文字
文字と字形の
関係は複雑怪奇
「島」「嶋」
目的に応じて決める
字形
字形のゆれ
 包摂基準で規定
文字コード
情報検索という目的だとどうなるか
• 人名を検索したいなら「嶋」と「島」は別の
文字コードにしておくべき
• A と a が同じ文字コードでは困ることも
あるので別のコードに
• 字形が増えると文字コードが増える。検索
ではいくつかの文字コードを同一視するよ
うなプログラムを書く
用字系と使用言語の関係
• 「どの言語で書かれたテキストか」と「どの
用字系が使われているか」を区別すること
も多言語処理では重要
• 同じ字と思しき字でも使われる用字系が違
うと異なるコードが割り振られるべき。
• ユニコードのCJK(日中韓統一漢字コー
ド)は、3ヶ国語の漢字を字形が似ていると
いう理由で同じコードに割り当てている。
左右 縦横
• 文を 右から左に書くか、 左から右に書く
か
• 文を縦書きするか、横書きするか
• このような問題は文字コードの問題か、言
語の問題か、用字系の問題か
•  平文(plain text) vs 構造化文書
Plain Text vs 構造化文書
• Plain text は単なる文字コードの連なり。表
示や論理的構造を持たない。
• ネットワークエチケットのひとつにメールは
Plain text で書くということがある。
• 構造化文書はタグによって、文書の論理
構造や表示の指示、あるいは使用言語な
どまで指定したもの。 LaTex,SGML、
XML、HTMLなど
自動文字コード認識
• ISO2022のエスケープシーケンスを探す
• JIS、SJIS、EUCなどを仮定して復元。日本
語らしい言語統計になるのが正しい文字
コード
• 言語統計とは?
• 文字の頻度統計、N-gram統計、単語の頻
度
文字コード変換ツール(UNIX)
• nkf -変換先コード ファイル名
• 変換先コードは j、s、e、m
便利な情報リソース
• 情報通信辞典:http://www.e-words.ne.jp/
使用言語の推定
• あるテキストの文字コードが分かると次は
そのテキストが記述されている言語を推定
• 使用言語推定