基本編の用語説明 その2 エディタと日本語入力 エディタ エディタ(editor):文書を作成、編集するアプリ ケーションソフトウェア 教育用計算機システムのエディタは、 テキストエディット 基本的な編集方法はここ カーソル:文字が入力される位置を表している目印 カッペ、コピペ 検索と置換 編集結果の保存 文系のみなさんには興味はないだろうがemacsというエディタも ある さて、いよいよ日本語入力だが。。。 文字コード: コンピュータの内部 対応画面やキーボードで見える文字 (2進数で表現) 文字コード (人間に読める:フォント) フォント:画面にみえる字の形 Unicode: 世界の主な文字を文字集合として 16ビットの文字 コード詳しくはここ アスキーコード:7ビットで英数字を表す文字コード ビット:2進数1桁のこと。計算機で情報を表す最小単位 漢字コード:漢字は8ビットでは表現できないので、16ビット以 上使うコードになる ShiftJIS(SJIS), EUC, JISなどが混在。 これらのコードが混在した状態でいったいどうやって文字コードを認識 するのだろうか? 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 ; 7 p q r s t 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 . j \ k l u v w x y z { | ] ^ _ m n o } ~ 第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コード • MacOSでの日本語入力はここ • 全角と半角 – 半角カタカナや全角英文字は避けましょう。 ここから先は難しいので、根性の無い人は、こ れ以上進んではいけません: • • • • • コードの歴史 ASCII(American Standard Code for Information Interchange) ANSI ISO 646 = 95文字のラテン文字 アルファベット+数字+特殊文字 制御コード: LF, CR などの表示制御と ACK,DEL などの通信制御 、など JISX0201ではASCIIの特殊文字の一部が異 なる(¥の使用など) 日本語コードの話 • 1バイトでは最大256文字 • 字種の多い言語では多バイトコード • 1バイトコードで事足りる欧米言語と多バイト コードが必要なアジアの言語とのバトルグラ ンド • 文字コードのような基本的情報インフラの標 準化は社会への影響莫大 ISO2022 • エスケープシーケンスにより文字を拡張する ための各種のメカニズム • 各国のISO646 (アメリカならASCII、日本な らJIS X 0201) を別個の文字集合として指 定し切り替えて使える。 • ちなみに西ヨーロッパの文字では、 ISO8859/1 ISO2022 エスケープシーケンス 変化先の文字コード エスケープシーケンス ASCII ESC ( B JIS X0201(ASCII対応 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文字 日本語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 00 21 第 21 1 5E バ イ 5F ト 40 7E 80 JIS漢字 JIS漢字 7E 81 9F E0 EF JISカタカナ JIS X0201 シフトJISの漢字領域のシフト 漢字の形 • 「包摂」 とは 異なる字形を同一視の基準の こと。 例えば、「高」や「富」や「国」のふたつ の字形など • そもそも字形のぶれをきちんと定義できるの か? • 計算機技術によって解決できる種類の問 題? 文字と文字コードと字形の関係 文字 文字と字形の 関係は複雑怪奇 「島」「嶋」 目的に応じて決める 字形 字形のゆれ 包摂基準で規定 文字コード 情報検索という目的だとどうなるか • 人名を検索したいなら「嶋」と「島」は別の文 字コードにしておくべき • 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