08. 正規表現 実習

Photo by Bruce A on Unsplash

以前学んだように正規表現は大変便利なものであるが、先にある程度慣れておかないといざというときに使えない技術でもある. そこで今回は、ある程度の復習も兼ねて正規表現に慣れ、これからに生かせるようにしよう.

web service を利用しての正規表現の実習

その最初のとっつきにくさからか,世の中に正規表現チェッカーが多く存在するので,今回はこの一つを使って学習に役立てよう. 今回は Debuggexと呼ばれる web service を使ってみる.

まず,次のようにして準備しよう.

  1. Debuggex にブラウザでアクセスしよう.

  2. 以下のテキスト 10行をコピー & ペースト(マウスでペーストという項目が出ない場合は,Control-v キーでペーストできるよ)で, Debuggex の "Result:" という項目に入力しよう.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Gender,GivenName,Surname,StreetAddress,City,State,ZipCode,EmailAddress,TelephoneNumber,Birthday,Occupation,Kilograms
female,Nina,Narita,"1870 Pine Tree Lane",Odenton,MD,21113,NinaNarita@fleckens.hu,240-373-9832,9/17/1942,Erector,50.1
male,Michinori,Sugiyama,"1651 Beechwood Avenue",Plainfield,NJ,07060,MichinoriSugiyama@gustr.com,908-791-7658,9/26/1932,"Railroad conductor",102.1
male,Tatsuki,Nozaki,"1224 Pick Street",Walden,CO,80480,TatsukiNozaki@fleckens.hu,970-723-5529,12/23/1962,"Rental clerk",113.2
male,Kunihiro,Tagami,"2156 Terry Lane",Orlando,FL,32801,KunihiroTagami@rhyta.com,321-273-4846,1/3/1943,"Show host",77.6
female,Hozumi,Iwasaki,"1380 Nuzum Court",Hamburg,NY,14075,HozumiIwasaki@cuvox.de,716-646-1784,1/28/1989,"Affirmative action coordinator",92.9
male,Yoshimitsu,Akita,"2602 Masonic Hill Road","Little Rock",AR,72212,YoshimitsuAkita@einrot.com,501-516-6338,8/23/1986,"Multiple machine tool setter",94.9
female,Chise,Sakuma,"2415 Wildwood Street",Boardman,OH,44512,ChiseSakuma@fleckens.hu,330-716-0474,6/10/1939,"School social worker",73.2
female,Shirabe,Terada,"1372 Pearl Street","West Sacramento",CA,95691,ShirabeTerada@superrito.com,916-376-5441,8/6/1942,"Public address system announcer",57.8
female,Yuiri,Fukuhara,"4220 Reeves Street",Milwaukee,WI,53202,YuiriFukuhara@einrot.com,920-827-6614,6/16/1947,"Nutrition director",59.6

なお、これは FakeName データ(zip) に含まれているデータの先頭10行である. このデータは、Fake Name Generator によって作られた Fake Name Generator identities と呼ばれる「偽物の個人データ」であり、Creative Commons Attribution-Share Alike 3.0 United States License によってライセンスされているものである.

3. 入力した項目の下にある "POSITION" スライドバーを一番左側へ移動させておこう.

4. 画面のなかほどの右側にある "Flags" という項目を選択して,"^ and $ match lines (m)" という項目にチェックを入れておこう.

  実習
さて,ここから実習だ. 下記の内容を,"javacript" という表示の「下の項目」に書き込んで反応をみていくのだ.

  1. ^[fm] を入力してみよう. "Result:" の項目中で該当する箇所が黄色くマークされ,「行頭に f か m がある」部分が指定されたのが分かるだろう.

    また,上の "Untitled Regex" という項目にこの正規表現の解釈が図解されるので,これを読んで理解しよう(以下同様).

  2. [0-9]$ を入力してみよう. 「行末に数字がある」部分が指定されたのが分かるだろう.

  3. e{2} を入力してみよう. e が2回繰り返された部分が指定されたのが分かるだろう.

  4. a|d を入力してみよう. ad という文字が指定されたのが分かるだろう.

  5. ^[^/]*/ を入力してみよう. 「最初に出てくる / まで」が指定されたのが分かるだろうか.

  6. [0-9]+/[0-9]+/[0-9]+ を入力してみよう. 「数字一個以上/数字一個以上/数字一個以上」が指定され, 生年月日部分だけが指定されたのが分かるだろうか.

  7. (female).*([0-9]+/[0-9]+/[0-9]+) を入力してみよう. 正規表現のグルーピング ( ) の意味が色でわかるだろう.

VS Code を利用しての正規表現の実習

Microsoft 製だが Electron化してあるので多くの OS で使える Visual Studio Code というエディタ(ここでは VS code と略記する)がある. 大変広く使われているエディタで,ソースは自由なことで有名な MIT ライセンスだが, MS がコンパイルして配っているものは少し追加の機能が入っており,伝統的な製品ライセンスで,VS code を通じて様々なデータを MS が収集することになっている1ので留意しよう.

ともあれ,ここで VS code を使ってもう少し拡張された正規表現や置換での正規表現の実習を行おう.

VS code をインストールしておこう (未インストールの場合)

今回の演習では VS code を用いるので,自分の環境に VS code がインストールされていないのであればインストールしておこう.これまで紹介してきた環境だと以下のような感じだ.

環境 状況
阪大情報教育システム
CentOS7
VS code は入っていない.
今回はこの環境の使用は諦めよう.
阪大情報教育システム
Windows 10
だいぶ古いが,VS code ver 1.14.2 がインストール済み.
start > documentation の最後にある.
今回はこれを用いても良い.
阪大情報教育システム
cygwin
GUI が必要な VS code を cygwin で動かすのは少し困難があると思うので,この環境の使用は諦めよう.
上にあるように Windows にインストール済みなのでそちらを使おう.
各自PC CentOS7
obtained at OSBoxes
VS code は未インストール.
インストール方法をweb検索し,インストールしよう.基本的には Download Visual Studio Code から .rpm のファイルをダウンロードしてインストールする流れになるはずで難しくない.
各自PC cygwin 上に書いたように,cygwin で VS code は無理がある.やめておこう.
各自PC Windows Download Visual Studio Code からダウンロードしてダブルクリックすればよいはずだ.
各自PC Mac OS X Download Visual Studio Code からダウンロードしてダブルクリックすればよいはずだ.

  VS code で正規表現の反応を見ながら試してみよう.

次のようにして、正規表現の検索,置換を試してみよう.

まず下記の文字列データ(先のものと同じものだ)を VS code で読み込んでみよう(コピペで VS code にいきなり貼り付けても良い).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 Gender,GivenName,Surname,StreetAddress,City,State,ZipCode,EmailAddress,TelephoneNumber,Birthday,Occupation,Kilograms
 female,Nina,Narita,"1870 Pine Tree Lane",Odenton,MD,21113,NinaNarita@fleckens.hu,240-373-9832,9/17/1942,Erector,50.1
 male,Michinori,Sugiyama,"1651 Beechwood Avenue",Plainfield,NJ,07060,MichinoriSugiyama@gustr.com,908-791-7658,9/26/1932,"Railroad conductor",102.1
 male,Tatsuki,Nozaki,"1224 Pick Street",Walden,CO,80480,TatsukiNozaki@fleckens.hu,970-723-5529,12/23/1962,"Rental clerk",113.2
 male,Kunihiro,Tagami,"2156 Terry Lane",Orlando,FL,32801,KunihiroTagami@rhyta.com,321-273-4846,1/3/1943,"Show host",77.6
 female,Hozumi,Iwasaki,"1380 Nuzum Court",Hamburg,NY,14075,HozumiIwasaki@cuvox.de,716-646-1784,1/28/1989,"Affirmative action coordinator",92.9
 male,Yoshimitsu,Akita,"2602 Masonic Hill Road","Little Rock",AR,72212,YoshimitsuAkita@einrot.com,501-516-6338,8/23/1986,"Multiple machine tool setter",94.9
 female,Chise,Sakuma,"2415 Wildwood Street",Boardman,OH,44512,ChiseSakuma@fleckens.hu,330-716-0474,6/10/1939,"School social worker",73.2
 female,Shirabe,Terada,"1372 Pearl Street","West Sacramento",CA,95691,ShirabeTerada@superrito.com,916-376-5441,8/6/1942,"Public address system announcer",57.8
 female,Yuiri,Fukuhara,"4220 Reeves Street",Milwaukee,WI,53202,YuiriFukuhara@einrot.com,920-827-6614,6/16/1947,"Nutrition director",59.6

次に,VS code の左側にある検索アイコン をクリックして検索ウィンドウを開こう. そしてその右上にあるオプション部分 の一番右側の をクリックして,正規表現の使用を ON にしておこう.

そしてこれから,検索入力欄に下記のような正規表現を入力して右側のテキストの反応をみていく,というわけだ.

まずは見てみるだけ

  1. 次に、検索入力欄に ^[fm] を入力して Enter を押してみよう(以下同様). 行頭に f か m がくる部分指定されたのが分かるだろう.

  2. 次に、検索入力欄に [0-9]$ を入力してみよう. 数字が行末にある場所が指定されたのが分かるだろう.

  3. 次に、検索入力欄に e{2} を入力してみよう. e が2回繰り返された部分が指定されたのが分かるだろう.

  4. 次に、検索入力欄に a|d を入力してみよう. ad という文字が指定されたのが分かるだろう.

  5. 次に、検索入力欄に \b, を入力してみよう(\b は単語のはじめか終わりを意味する.). 「単語に引き続くカンマ」 が指定され, 他のカンマは指定されていないのが分かるだろうか.

  6. 次に、検索入力欄に \bco\b を入力してみよう. 独立した co だけが指定され, courtcom に含まれる他の co は指定されていないのが分かるだろうか.

  7. 次に、検索入力欄に ^[^/]*/ を入力してみよう. 「最初に出てくる / まで」が指定されたのが分かるだろうか.

  8. 次に、検索入力欄に [0-9]+/[0-9]+/[0-9]+ を入力してみよう. 「数字一個以上/数字一個以上/数字一個以上」が指定され, 生年月日部分だけが指定されたのが分かるだろうか.

  9. 次に、検索入力欄に (female.*)([0-9]+/[0-9]+/[0-9]+) を入力してみよう. VS code では色付けの差は無いが,正規表現のグルーピング ( ) がされている… はずだ.


置き換えてみよう

次に置換を試してみよう. VS code では検索入力欄のすぐ左にある「小さな三角形」or「小さな > 」をクリックすると置換用の入力欄が開くのでそうしておこう.

  1. 次に、検索入力欄に ^ を入力して Enter を押そう. 行頭が指定されるので、置換入力欄に begin とでも入力して Enter を押そう. そして、さらに置換入力欄の右にある置換実行アイコン を押すと,下記のような確認窓が開く.



    この窓の内容を読んで確認して,問題なければ「置換」を押そう.
      これが 「2個のファイルで…」などとなっていた場合はキャンセルしよう. たぶん,想定していないファイルも置換対象にしてしまったりしている状況なので危険だ.

    さて,うまく置換がなされたらよく見てみよう.納得しただろうか.

    納得したら、結果が出ている窓の上で C-z として、変更を元に戻そう(以下同様).

      ちなみに,C-z は undo 機能のキーバインディングとして多くのツールで使われるものだ. 覚えておくと役に立つかもね.

  2. 次に、検索入力欄に $ を入力してみよう. 行末が指定されるので、さらに置換入力欄に \n と入力して置換してみよう. 交互に空行が入るのが分かるだろう.

  3. 次に、検索入力欄に e{2} を入力してみよう. e が2回繰り返された部分が指定されるので、さらに置換入力欄に EE と入力してみよう.

  4. 次に、検索入力欄に a|d を入力してみよう. ad という文字が指定されるのでさらに置換入力欄に ZZZ と入力してみよう.

  5. 次に、検索入力欄に \b, を入力してみよう. 「単語に引き続くカンマ」 が指定されるので, さらに置換入力欄に ___ などと入力してみよう.

  6. 次に、検索入力欄に \bco\b を入力してみよう. 独立した co だけが指定されるので, さらに置換入力欄に Colorado などと入力してみよう.

  7. 次に、検索入力欄に ^[^/]*/ を入力してみよう. 「最初に出てくる / まで」が指定されるので, さらに置換入力欄に before birthday/ などと入力してみよう.

  8. 次に、検索入力欄に [0-9]+/[0-9]+/[0-9]+ を入力してみよう. 「数字一個以上/数字一個以上/数字一個以上」が指定され, 生年月日部分だけが指定されるのでさらに置換入力欄に --removed-- などと入力してみよう.

  9. 次に、検索入力欄に (female).*([0-9]+/[0-9]+/[0-9]+) を入力してみよう. そして置換入力欄に $1 --removed-- $2 と入力してみよう. 検索・置換欄の下に出てくる結果予想表示で正規表現のグルーピング ( ) の意味が色でわかる. これは female の名前と住所のみを書き換えたことに相当することが分かるだろう.

Emacs を利用しての正規表現の実習

こうした機能がもっとも充実した環境として Emacs を使っての実習も用意した. なお,今回記している実習内容は上の VS code のものと同様なので,VS code で実習を行ったのならば以下の実習は特に不要である.

  ただし,Emacs 使いにはこの実習は役に立つはずだ.君が Emacs 使いならばぜひやっておこう.

Emacs をインストールしておこう (未インストールの場合)

今回の演習では Emacs を用いるので,自分の Unix環境に Emacs がインストールされていないのであればインストールしておこう.これまで紹介してきた環境だと以下のような感じだ.

環境 状況
阪大情報教育システム
CentOS7
Emacs 24.3.1 がインストール済みだが(アプリケーション > プログラミング にある),
proxy で外への接続が拒否されるようなので今回は利用を諦めよう(proxy がらみの設定をしてもうまくいかない).
阪大情報教育システム
Windows 10
Windows用 Emacs 25.2.1 がインストール済み(start > documentation にある)
ただしやはり proxy で外への接続が拒否されるようなので今回は利用を諦めよう.
阪大情報教育システム
cygwin
Emacsは未インストール.
やはり今回は利用を諦めよう.
各自PC CentOS7
obtained at OSBoxes
Emacsは未インストール.
インストール方法をweb検索し,インストールしよう.難しくない.
今インストールするならば,最新の ver. 27.1 が良いだろう.
インストール後は,端末ソフトの中で "emacs" と打ち込めば起動する
各自PC cygwin Emacs が未インストールならばインストールしよう.
cygwin の「パッケージ追加」という文言でweb検索すれば良いだろう
各自PC Windows 64bit版 GNU Emacs 27.1 for Windows(w/IMEパッチ) からダウンロードしてインストールするのが良いだろう
各自PC Mac OS X 通常は未インストールの様子.インストールしよう.
"Mac OS X emacs" などと web 検索して調べて自分でインストールしよう.

簡単な復習

まずは以前の資料 正規表現:「こんな感じのパターンで…」を文字で示す方法 に正規表現の ルール を載せているので、そこを参照しておこう. また、そこに書いてある 「例(2) emacs で…」 を実際に試してないのであれば、今試しておこう.

Emacs での正規表現を便利に (visual-regexp)

Emacs では、正規表現の利用に他環境よりもバックスラッシュ \ を多用する傾向がありちょっとわかりにくい. しかし、visual-regexp.el という elisp を Emacs に導入すると(拡張機能のようなもの)、「正規表現の該当する部分を目で確かめながら」正規表現を入力していくことができるので、これをインストールして, 正規表現をわかりやすく使ってみよう.

package を使ってインストール (おすすめ)

ver.24以降の Emacs では package システム(すぐ下で後述)が標準なので、package の設定を済ませてからインストールすれば良い.

package そのものの設定

package は ver.24 以降の Emacs に標準でついてくる elisp で、あちこちのリポジトリに登録されている様々な elisp を統一して扱える便利な仕組みである.

1
2
3
4
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
(package-initialize)

という 4行を書き込んでおけば良い(その後、emacs の再起動が必要).

package を使って、実際にインストール

では,Emacs のパッケージ管理システムを実際に使って,visual-regex パッケージを Emacs にインストールしよう. 次のようにすれば良い.

  1. Emacs で M-x package-refresh-contents とする(念のため).
  2. Emacs で M-x package-install とすると、インストールするパッケージ名を聞かれるので、visual-regexp と入力する.
  3. emacs の設定ファイル(通常は ~/.emacs.d/init.el) のなるべく後ろ側に
1
2
3
(require 'visual-regexp)
(define-key global-map (kbd "C-c r") 'vr/replace)
(define-key global-map (kbd "C-c q") 'vr/query-replace)

と書き込む(その後、emacs の再起動が必要).

  Emacs で正規表現の反応を見ながら試してみよう.

次のようにして、visual-regexp を試してみよう.

まず先のものと同じ,下記の文字列データを Emacs で読み込んでみよう.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 Gender,GivenName,Surname,StreetAddress,City,State,ZipCode,EmailAddress,TelephoneNumber,Birthday,Occupation,Kilograms
 female,Nina,Narita,"1870 Pine Tree Lane",Odenton,MD,21113,NinaNarita@fleckens.hu,240-373-9832,9/17/1942,Erector,50.1
 male,Michinori,Sugiyama,"1651 Beechwood Avenue",Plainfield,NJ,07060,MichinoriSugiyama@gustr.com,908-791-7658,9/26/1932,"Railroad conductor",102.1
 male,Tatsuki,Nozaki,"1224 Pick Street",Walden,CO,80480,TatsukiNozaki@fleckens.hu,970-723-5529,12/23/1962,"Rental clerk",113.2
 male,Kunihiro,Tagami,"2156 Terry Lane",Orlando,FL,32801,KunihiroTagami@rhyta.com,321-273-4846,1/3/1943,"Show host",77.6
 female,Hozumi,Iwasaki,"1380 Nuzum Court",Hamburg,NY,14075,HozumiIwasaki@cuvox.de,716-646-1784,1/28/1989,"Affirmative action coordinator",92.9
 male,Yoshimitsu,Akita,"2602 Masonic Hill Road","Little Rock",AR,72212,YoshimitsuAkita@einrot.com,501-516-6338,8/23/1986,"Multiple machine tool setter",94.9
 female,Chise,Sakuma,"2415 Wildwood Street",Boardman,OH,44512,ChiseSakuma@fleckens.hu,330-716-0474,6/10/1939,"School social worker",73.2
 female,Shirabe,Terada,"1372 Pearl Street","West Sacramento",CA,95691,ShirabeTerada@superrito.com,916-376-5441,8/6/1942,"Public address system announcer",57.8
 female,Yuiri,Fukuhara,"4220 Reeves Street",Milwaukee,WI,53202,YuiriFukuhara@einrot.com,920-827-6614,6/16/1947,"Nutrition director",59.6

まずは見てみるだけ

  1. 次に、Emacs でこの文字列より前にカーソルを置いてから, C-c r とし、^ を入力してみよう. 行頭が指定されたのが分かるだろう.

    わかったら、C-g で visual-regexp を停止しよう(以下同様).

  2. 次に、Emacs で C-c r としてから、$ を入力してみよう. 行末が指定されたのが分かるだろう.

  3. 次に、Emacs で C-c r としてから、e\{2\} を入力してみよう. e が2回繰り返された部分が指定されたのが分かるだろう.

  4. 次に、Emacs で C-c r としてから、a\|d を入力してみよう. ad という文字が指定されたのが分かるだろう.

  5. 次に、Emacs で C-c r としてから、\b, を入力してみよう(\b は単語のはじめか終わりを意味する.). 「単語に引き続くカンマ」 が指定され, 他のカンマは指定されていないのが分かるだろうか.

  6. 次に、Emacs で C-c r としてから、\bco\b を入力してみよう. 独立した co だけが指定され, courtcom に含まれる他の co は指定されていないのが分かるだろうか.

  7. 次に、Emacs で C-c r としてから、^[^/]*/ を入力してみよう. 「最初に出てくる / まで」が指定されたのが分かるだろうか.

  8. 次に、Emacs で C-c r としてから、[0-9]+/[0-9]+/[0-9]+ を入力してみよう. 「数字一個以上/数字一個以上/数字一個以上」が指定され, 生年月日部分だけが指定されたのが分かるだろうか.

  9. 次に、Emacs で C-c r としてから、\(female\).*\([0-9]+/[0-9]+/[0-9]+\) を入力してみよう. Emacs の正規表現のグルーピング \( \) の意味が色でわかるだろう.


置き換えてみよう

  1. 次に、Emacs で C-c r としてから、^ を入力してみよう. 行頭が指定されるので、さらに Enter を押してから、begin とでも入力してみよう. そして、さらに Enter を押して、変化させてみよう.納得しただろうか.

    納得したら、M-x undo として、変更を元に戻そう(以下同様).

  2. 次に、Emacs で C-c r としてから、$ を入力してみよう. 行末が指定されるので、さらに Enter を押してから、C-q C-j と入力してみよう. 交互に空行が入るのが分かるだろう.

      ちなみに,C-j は改行コード LF のことで、C-q はこうした制御コードを(機能させずに)「そのまま」入力するために使うキーである( 機能 quoted-insert のキーバインディング).

  3. 次に、Emacs で C-c r としてから、e\{2\} を入力してみよう. e が2回繰り返された部分が指定されるので、さらに Enter を押してから、EE と入力してみよう.

  4. 次に、Emacs で C-c r としてから、a\|d を入力してみよう. ad という文字が指定されるのでさらに Enter を押してから、ZZZ と入力してみよう.

    さらにこのタイミングで C-c p を何回か押してみよう. どこにどういう変化が起こるのかが予測できるだろう.

  5. 次に、Emacs で C-c r としてから、\b, を入力してみよう. 「単語に引き続くカンマ」 が指定されるので, さらに Enter を押してから、___ などと入力してみよう.

  6. 次に、Emacs で C-c r としてから、\bco\b を入力してみよう. 独立した co だけが指定されるので, さらに Enter を押してから、Colorado などと入力してみよう.

  7. 次に、Emacs で C-c r としてから、^[^/]*/ を入力してみよう. 「最初に出てくる / まで」が指定されるので, さらに Enter を押してから、before birthday/ などと入力してみよう.

  8. 次に、Emacs で C-c r としてから、[0-9]+/[0-9]+/[0-9]+ を入力してみよう. 「数字一個以上/数字一個以上/数字一個以上」が指定され, 生年月日部分だけが指定されるのでさらに Enter を押してから、--removed-- などと入力してみよう.

  9. 次に、Emacs で C-c r としてから、\(female\).*\([0-9]+/[0-9]+/[0-9]+\) を入力してみよう. Emacs の正規表現のグルーピング \( \) の意味が色でわかるので、さらに Enter を押してから、\1 --removed-- \2 と入力してみよう. これは female 名前と住所のみを書き換えたことに相当することが分かるだろう.


  自分で考えてみよう

以下の問題を VS code や Emacs で行うことを考えてみよう. ただし、できれば、データは今の10人分ではなく, うえでも解説した FakeName データ(zip) に含まれているデータ 1000人分でやってみよう.

  1. このデータは目で見るにはちょっと読みにくいので、全てのカンマの後にスペースを一つ入れたい. どうしたらよいかやってみよう.

    うまくいったら元に戻そう(以下同様).

  2. このデータは目で見るにはちょっと読みにくいので、全ての項目を一項目一行にしたい. ただし、一個人のデータのまとまりごとに空行を挟んで区別ができるようにもしたい. つまり、

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
female
Nina
Narita
"1870 Pine Tree Lane"
Odenton
MD
21113
NinaNarita@fleckens.hu
240-373-9832
9/17/1942
Erector
50.1
  
male
Michinori
Sugiyama
"1651 Beechwood Avenue"
Plainfield
NJ
07060
MichinoriSugiyama@gustr.com
908-791-7658
(以下…略…)

のようにしたい.
どうすればいいだろうか. 一回の処理で完成しなくても、複数の処理を組み合わせても良いので、考えてみよう.

3. このデータの生年月日は 月/日/年 という並びで日本の年月日フォーマットとなじまないので、これを年-月-日という表記, 例えば 1942-9-17 と直したい. どうすればいいか.

4. このデータの行末にはスペースは入っていないはずだが、念の為にそれを確認したい. そして、もしそうしたスペースが有れば、それを削除したい. どうすればいいか.

5. このデータの中に同姓の人が居るかなるべく簡単に調べたい(居るかどうかだけわかれば良い). どうすればいいか.

レポート

以下の課題について能う限り賢明な調査と考察を行い,
2021-AppliedMath7-Report-08
という題名をつけて e-mail にて教官宛にレポートとして提出せよ. なお,レポートを e-mail の代わりに TeX で作成した書面にて提出してもよい.

課題

  1. Fake Name Generator の "一括注文する" (上のタブにある)などで適当な設定で少し多めのデータ(まあ数百人程度にしておくとよいだろう)を作成して、emacs で正規表現を使いながら、10代の人、20代の人、30代の人… と年齢でグループ分けしてみよう.

  2. ここまでの話は英語圏、日本語圏関係なく使えるツールや概念であったが、日本語処理の場合、「漢字」と「よみ」との多対多関係という、他の言語にはあまりない問題が在る. この問題に対しサポートを与える、migemo(今は cmigemo が主か) というツールがあるのでこれについて調べよ. そして、自前の環境にインストールするなどして、その使用感をレビュー、レポートせよ.

  3. 自分が普段用いるエディタが VS code や Emacs では無い者は,その正規表現ツールを使って,今回実習してみたこととなるべく同等の作業を行ってみよう.

  1. データ収集を正式な手順で止めることも出来るし,オープンなソースを素直にコンパイルした,データ収集機能の無いものを配布しているところもあるので,気になるひとはこれらの措置をとれば良い. ↩︎