分類問題の課題
準備
(1) 以下のディレクトリから3つのファイル
negative.review, positive.review, unlabeled.review
を取ってくる。
nlken: /home/data/DA-for-Sentiment-Classification/processed_acl/books
(2) 各ファイルの各行は本のレビュー文書に相当する。
negative.review は 非好意的レビュー
positive.review は 好意的レビュー
unlabeled.review は 非好意的レビューと好意的レビューが混ざって入っている
文書に対する行は以下の形式になっている。
<2words>:<n> <2words>:<n> ・・・<2words>:<c> #lable#:{negative|positive}
<2words> はその文書に入っている連接2単語を正規化した形のもの、
<n> はその <2words> がその文書にいくつはいっていたか、
{negative|positive} は negative か positive
例えば、文書内に I Iike this book. だけがあり、これが好意的な文書なら、
i_like:1 like_this:1 this_book:1 #lable#:positive
となる。
課題
(課題1)
negative.review, positive.review, unlabeled.review 内の全ての <2words> を
取り出し、各 <2words> に id 番号を付けよ。
対応表を w2id.dat として保存せよ。
例)
> w2id.dat
1 i_like
2 like_this
3 this_book
w2id.dat を私に送る。
(課題2)
上記の w2id.dat を利用して
negative.review, positive.review, unlabeled.review
を libsvm 形式のフィルに直せ、positive をラベル 1、ネガティブをラベル -1 せよ。
libsvm 形式
label id:c id:c ・・・id:c
・・・
label id:c id:c ・・・id:c
libsvm 形式に直したファイルを以下とする。
negative.review → train1.dat
positivee.review → train2.dat
unlabeled.review → test.dat
train1.dat と train2.dat を合わせたファイルを train.dat とする
train.dat と test.dat を私に送る。
(課題3)
python に scikit-learn をインストールせよ
pip install scikit-learn
python 立ち上げて、import sklearn ができれば OK
以下のページを参考にして、svm を利用して、train.dat から分類器を学習する
プログラムを svm.py 作れ。
http://scikit-learn.org/stable/modules/svm.html
svm.py を私に送る。
(課題4)
課題3で作った分類器を利用して、test.dat を識別せよ。
各行を識別し、test.dat 内の全ての文書の識別を行う。
その後、正解率を表示するプログラムを作成せよ。
上記の評価のプログラム eval.py を私に送る
(課題5)
課題1から課題4を以下のデータ群に対しても行う
nlken: /home/data/DA-for-Sentiment-Classification/processed_acl/dvd/
nlken: /home/data/DA-for-Sentiment-Classification/processed_acl/electronics/
nlken: /home/data/DA-for-Sentiment-Classification/processed_acl/kitchen/
各々の正解率を私に送る