Subject: 言語情報処理入門:日本語テキストの処理 Date: 2009年7月7日 14:49:21:JST [一部改変] 時々,dicom2 で日本語のテキストを grep で検索しようとしたが, うまくいかないのは何故か,と聞いてくる学生がいます。話を聞いてみると, どうも,次の2つのことが大きな原因のようです。 ・文字コードに関する知識がない。 ・EmEditor などのテキストエディタで使用した正規表現が, そのまま grep コマンドでも使えると思っている。 処理結果が明らかにおかしければ,うまく処理されていないと考え,教員に 質問したりするでしょうが,なまじ,部分的にうまくいっているように 見える結果が出力されてしまうと,おかしな処理をしていることに 気付かない危険性があります。 UNIX 上で日本語を扱う場合,プログラムのバージョンによる違い, ロケールの問題などもあり,言語情報処理入門の範囲を超えてしまうため, 授業の内容は今のままでいいと思いますが,UNIX 上で日本語テキストを 処理するには,言語情報処理入門で学んだことだけでは不十分であること, ツールによって使える正規表現が異なることは,ちゃんと伝えておいた方が いいのではないでしょうか。 -- 名古屋大学大学院国際開発研究科 国際コミュニケーション専攻 大名 力 (Tsutomu OHNA) --------------------------------------------------------------------------------補足 (2011/05/02)
プログラム | 正規表現の種類 | 処理単位 | 内部文字コード |
サクラエディタ | PCRE | 文字単位 | Shift JIS (JIS 0201 + JIS 0208) |
EmEditor | PCRE | 文字単位 | Unicode |
GNU grep | BRE ERE (-E) PCRE (-P) (Ver. 2.5以降) | バイト単位 (ロケールに依存?) | |
文字単位 (ロケールに依存?) | ?? (ロケールに依存?) | ||
Perl | PCRE | バイト単位 (デフォルト) | |
文字単位 | Unicode (UTF-8) |
BRE | 基本正規表現 (basic regular expression) |
ERE | 拡張正規表現 (extended regular expression) |
PCRE | Perl互換正規表現 (Perl-compatible regular expression) (厳密に言うと,Perlの正規表現と,サクラエディタの正規表現は,PCRE とは別のもの) |