コードの歴史 • ASCII(American Standard Code for Information Interchange) ANSI • ISO 646 = 95文字のラテン文字 • アルファベット+数字+特殊文字 • 制御コード: LF, CR などの表示制御と ACK,DEL などの通信制御 、など • JISX0201ではASCIIの特殊文字の一部が 異なる(¥の使用など) 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 X0201(ASCII対応 部分) JIS カタカナ ESC ( J JIS 0208 ESC $ B ESC ( I JISコードの歴史 • JISX0208(1978) 当時はJISC6226 カタカナ(いわゆる半角カタカナ)および全 角英字はいまや無用の長物ないしは有害 • 半角カタカナと全角英字は97JISでは使わ ないことに決めた • シフトJIS • 78JIS 83JIS 90JIS 97JIS 内部状態を持つ文字コードと 持たない文字コード • 1バイトコードのASCIIは内部状態なし • 2バイトの内部状態なしコードを目指した のがユニコード • エスケープシーケンスのある文字コード ISO2022 に則るコードは内部状態を持つ。 • 内部状態を持つと何がまずいのか? JISコードにおける漢字 • 78JISの第1水準 2965文字=都道府県 名、市町村名を全て記述できる。 第2水準 3384文字 • JISX 0212 の補助漢字 5801文字 日本語EUC • Unixで常用される2バイトコード – 第1バイト最上位ビット=0 JIS X0201(ASCII対応 部分) – 第1バイト最上位ビット=1 かつ第2バイト最上位ビッ ト=1 JIS漢字 – 第1バイト=8E かつ第2バイト最上位ビット=1 JIS カタカナ – 第1バイト=8E かつ第2バイト最上位ビット=1かつ第 3バイト最上位ビット=1 JIS補助漢字 • 上位ビットを見るだけで字種を判別できる シフトJIS • JISX0208で使用していない文字を漢字の1バ イト目に使う。すなわち、 • 1バイト目、 – 最上位ビット=0 JIS X0201(英数字など ASCII対応 部分) – 最上位ビット=1 JISカタカナ – #x81-9F(JIS X 0201では未使用), E0-EF(ISO2022の 制御符号部分) 漢字 • 2バイト目は#x40-EF • 合計24576文字 • 台湾、中国、韓国版として Big5, GBK,UHC 第2バイト 00 第 1 バ イ ト ( ア ス キ ー コ ー ド ) 00 21 40 JISコード 7E 80 この行き来(1バイト文 字と2バイト文字の行 き来)は特殊文字列 (ISO2022エスケープ シーケンス)で行う 21 5E JIS漢字 5F JIS漢字 7E 81 sjis sjis sjis sjis sjis sjis 9F E0 EF JISカタカナ JIS X0201 ここは1バイト文字 シフトJIS(sjis)の漢字領域のシフト SJISコード 漢字の形 • 「包摂」 とは 異なる字形を同一視の基準 のこと。 例えば、「高」や「富」や「国」のふ たつの字形など • そもそも字形のぶれをきちんと定義できる のか? • 計算機技術によって解決できる種類の問 題? 文字と文字コードと字形の関係 文字 文字と字形の 関係は複雑怪奇 「島」「嶋」 目的に応じて決める 字形 字形のゆれ 包摂基準で規定 文字コード 情報検索という目的だとどうなるか • 人名を検索したいなら「嶋」と「島」は別の 文字コードにしておくべき • 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/ 使用言語の推定 • あるテキストの文字コードが分かると次は そのテキストが記述されている言語を推定 • 使用言語推定 – – – – 言語特有の文字コード、文字列パタン、 言語固有の文字出現頻度、 言語固有の文字列 (n-gram)出現頻度 などによって判断
© Copyright 2024 ExpyDoc