HiromuMasuda / category_classifier

1 stars 0 forks source link

gunosy_assignment

環境構築

動作手順

1.データベース・テーブルの作成

mysql> create database django_gunosy_assignment;
python manage.py migrate

2. Gunosyの記事をスクレイピングし、データベースに保存。

python manage.py scrape_articles

3. モデルの学習

python manage.py fit_model

4. ローカル環境でdjangoプロジェクトを立ち上げる。

python manage.py runserver

ブラウザ上で、localhost:8000/search_formに接続し、Gunosyの記事URLを指定フォームに入力する。

作った分類器の精度

0.825

精度の評価関数

「正解率」を利用。

def score(self, docs, cats):
    acc_count = 0
    total_len = len(cats)
    for i in range(total_len):
        pred = self.predict(docs[i])
        if pred == cats[i]:
            acc_count += 1

    score = acc_count / total_len
    return score

分類器ごとの精度の比較

分類器 精度
NaiveBayes(自作) 0.825
MultinomialNB 0.893
SGDClassifier 0.902
KNeighborsClassifier 0.428
LogisticRegression 0.936
LinearSVC 0.926
RandomForestClassifier 0.842
DecisionTreeClassifier 0.775

精度向上のための工夫

記事コンテンツにタイトルを加えた

以上から、文書 = タイトル + コンテンツとしたところ、精度が1%〜4%向上した。

文書を形態素解析する際に、名詞・動詞のみを抜き出す

カテゴリ分類に寄与する単語は、名詞と動詞くらいではないか?という仮説より。

教師データ数を増やした

基本的に多くすればするほど(データ数6400以下では)分類機の精度があがった。一方で、Tf-idfの処理時間も線型的に増えていった。

screen shot 2018-04-14 at 22 43 17 screen shot 2018-04-14 at 22 43 09