分類問題の課題

準備

(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/

各々の正解率を私に送る