新納研学生の課題提出状況(Perl)

吉田君は5月2日で全て完了(good!)、小野寺君は5月31日に完了(good)、Xiao さんも12月12日に完了(good)

課題1

0 以上 10000 以下の整数をランダムに 100個生成し、
それぞれの数を2進数に直して表示せよ。
4月23日吉田完了、5月7日小野寺完了、10月23日 Xiao完了

課題2

英文のファイル eng.txt の中に小文字の a,i,u,e,o がそれぞれいくつ
存在するかを数えよ。

4月23日吉田完了、5月8日小野寺完了、10月24日 Xiao完了

課題3

英文のファイル eng.txt の中で使われているすべての文字に
ついてその頻度を調べ、頻度が大きい順にそれらを表示せよ。

eng.txt はアスキー文字だけで構成されているとする。
文字として、 space と tab 、及び改行などの制御コードは除く。

4月23日吉田完了、5月8日小野寺完了、11月1日 Xiao完了


課題4

(1) http://nlp.dse.ibaraki.ac.jp/~shinnou/netnews.zip をダウンロードして、
どこかの ディレクトリの下に展開する。
1.txt から 395.txt の 395個のテキストファイルができる。

(2) Cygwin の環境の中で nkf をインストールする

(3) 1.txt から 395.txt のテキストファイルはコードが EUC である。
これを nkf を利用して、SJIS に変換する shell scirpt を作成せよ。
ファイル名は 1.sjis などにする。

実行結果は以下の感じ

> ./kadai4.sh
1.txt EUC --> 1.sjis SJIS 変換終了
2.txt EUC --> 2.sjis SJIS 変換終了
・・・
395.txt EUC --> 395.sjis SJIS 変換終了

>

kadai4.sh が bash の shell script です。kadai4.sh を送って下さい。
4月30日吉田完了、5月8日小野寺完了、11月11日 Xiao 完了


課題5

Cygwin の環境の中で mecab を使えるように PATH を設定する、あるいはリンクを張る

1.sjis から 395.sjis の各テキストファイルを mecab で形態素解析する
shell scirpt を作成せよ。
ファイル名は 1.mcb などにする。

実行結果は以下の感じ

> ./kadai5.sh
1.sjis 形態素解析終了 --> 1.mcb
2.sjis 形態素解析終了 --> 2.mcb
・・・
395.sjis 形態素解析終了 --> 395.mcb

>

kadai5.sh が bash の shell script です。kadai5.sh を送って下さい。
4月30日吉田完了、5月8日小野寺完了、11月15日 Xiao 完了


課題6

課題5 で 1.mcb から 395.mcb ができている。N.mcb から名詞の単語とその頻度を表示せよ。

以下は例です。

> perl kadai6.pl 1.mcb
クラ 2
統計 1
手段 1
動き 1
...
経済 3
率 1
都市 1

>

kadai6.pl を送付して下さい。
5月1日吉田完了、5月8日小野寺完了、11月25日 Xiao 完了



課題7

kadai6.pl を利用して、N.mcb 内の名詞の単語とその頻度を記したファイル N.noun を作る。
1.noun から 395.noun を作る script を作成せよ。

以下は例です。

> ./kadai7.sh
perl kadai6.pl 1.mcb > 1.noun
perl kadai6.pl 2.mcb > 2.noun
・・・
perl kadai6.pl 395.mcb > 395.noun

>

kadai7.sh を送付して下さい。

5月1日吉田完了、5月9日小野寺完了、11月25日 Xiao 完了



課題8

課題7 により 1.noun から 395.noun ができている。
それらをマージして、文書集合全体の名詞とその頻度を
求めるプログラムを作成せよ。ただし頻度が1 の名詞は除く。
出力のイメージは以下。

> perl kadai8.pl *.noun
クラ 2
統計 20
手段 331
...
経済 101

>

kadai8.pl を送って下さい。

5月1日吉田完了、5月9日小野寺完了、11月25日 Xiao 完了



課題9

課題8 で出力される名詞を索引語とする。
各名詞に 1 から N までの番号を付与して、
各文書を N 次元のベクトルで表現するプログラムを作成せよ。

まず下記のコマンドで INDEX ファイルを作成する。

perl kadai8.pl *.noun | awk '{print $1}' | cat -n > INDEX

# 上記のやり方でなくても良い。とにかく INDEX ファイルを作る。

X.noun のファイルを開き、X.noun 内の各名詞 n に対して、
その頻度 h を読み、INDEX 内に n があればその index を調べ、
index h
を出力する。INDEX 内に n がなければ何もしない。
X.noun 内の各名詞 n に対して上記の処理を行い、
その出力を X.tf とせよ。

> perl kadai9.pl *.noun

# 上記の結果、1.tf から 395.tf まで作成される

上記の kadai9.pl を送って下さい。

5月2日吉田完了、5月14日小野寺完了、11月28日 Xiao 完了


課題10

まず libsvm をインストールする。

http://www.csie.ntu.edu.tw/~cjlin/libsvm/

課題9 までで 1.tf から 395.tf までできている。
実は、以下のような記事のトピックになっている。

1 〜 63 経済
64 〜 116 国際
117 〜 173 政治
174 〜 355 社会
356 〜 395 スポーツ

1 〜 8, 64 〜 71, 117 〜 124, 174 〜 181, 356 〜 364

を訓練データ、残りをテストデータとして、
SVM により各テストデータのトピックを識別せよ。

1.tf から 395.tf から訓練データとテストデータを
作成するプログラムを作って下さい。

> perl kadai10.pl

(この結果、train.dat と test.dat ができる)

> svm-train -t 0 train.dat model
> svm-predict test.dat model kekka

kadai10.pl と kekka を送って下さい。
5月2日吉田完了、5月31日小野寺完了、12月12日 Xiao 完了


課題11

上記の kekka ファイルから、正解率を計算するプログラムを作ってください。
5月2日吉田完了、5月31日小野寺完了、12月12日 Xiao 完了