260 likes | 401 Vues
基本編の用語説明 その2 エディタと日本語入力. エディタ. エディタ (editor) : 文書を作成、編集するアプリケーションソフトウェア 教育用計算機システムのエディタは、 テキストエディット 基本的な編集方法は ここ カーソル :文字が入力される位置を表している目印 カッペ、コピペ 検索と置換 編集結果の保存 文系のみなさんには興味はないだろうが emacs というエディタもある. さて、いよいよ日本語入力だが。。。. 文字コード : コンピュータの内部 対応 画面やキーボードで見える文字
E N D
基本編の用語説明 その2エディタと日本語入力基本編の用語説明 その2エディタと日本語入力
エディタ • エディタ(editor):文書を作成、編集するアプリケーションソフトウェア • 教育用計算機システムのエディタは、 テキストエディット • 基本的な編集方法はここ • カーソル:文字が入力される位置を表している目印 • カッペ、コピペ • 検索と置換 • 編集結果の保存 • 文系のみなさんには興味はないだろうがemacsというエディタもある
さて、いよいよ日本語入力だが。。。 • 文字コード: コンピュータの内部 対応画面やキーボードで見える文字 (2進数で表現) 文字コード (人間に読める:フォント) • フォント:画面にみえる字の形 • Unicode: 世界の主な文字を文字集合として 16ビットの文字コード詳しくはここ • アスキーコード:7ビットで英数字を表す文字コード • ビット:2進数1桁のこと。計算機で情報を表す最小単位 • 漢字コード:漢字は8ビットでは表現できないので、16ビット以上使うコードになる • ShiftJIS(SJIS), EUC, JISなどが混在。 • これらのコードが混在した状態でいったいどうやって文字コードを認識するのだろうか?
第2バイト 00 21 40 7E 80 JISコード 00 21 5E 5F 7E 81 9F E0 EF この行き来(1バイト文字と2バイト文字の行き来)は特殊文字列(ISO2022エスケープシーケンス)で行う 第1バイト(アスキーコード) 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
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 21 40 7E 80 00 21 5E 5F 7E 81 9F E0 EF 第1バイト 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)出現頻度 • などによって判断