文章を分類⑤:4種類の文章のカテゴリー分類

ここで試す事は、おそらく意味がない事です。
「文章を分類④」で書いたように、word2vecが吐き出すデータは、使われる乱数が毎回異なっているため、実行毎に特徴を持ったデータになってしまうと考えられます。特徴が同じデータを二つに分ければ、それが同じカテゴリーに分類されて当然でしょう。word2vecで使う乱数を固定してからデータをつくり、学習しなければ意味がないはずです。
それでも、実際に試してみます。

「文章を分類③」のデータフォルダにldcc-20140209.tar.gzのフォルダ「kaden-channel」とフォルダ「livedoor-homme」も加えて4種類のカテゴリー分類をします。
「文章を分類③」と同様に「CSV file」の単語リストに書き出して、単語数が8未満のファイルを削除します。その後、単語数8のcsvファイルに揃えます。
適当なフォルダを作り、そこに単語数8に整形したフォルダ「movie-enter」フォルダ「sports-watch」フォルダ「kaden-channel」フォルダ「livedoor-homme」をコピーします。4つのフォルダから各々30ファイルを切り取ります。もう一つ適当なフォルダに、空の「movie-enter」「sports-watch」「kaden-channel」「livedoor-homme」を作ります。そこに切り取ったファイルをペーストします。作った二つのフォルダでshuffle2.pyを実行します。
shuffle2.py

import glob
import re
import random

# 指定したパス内の全てのファイルとディレクトリを要素とするリストを返す
files = glob.glob("./*/*")
random.shuffle(files)

with open('text_train.csv',encoding="UTF-8", mode='w') as fp:

     for file in files:
       if re.search('movie-enter',file):
          fp.write(file+',0')
          fp.write("\n")
       if re.search('sports-watch',file):
          fp.write(file+',1')
          fp.write("\n")
       if re.search('kaden-channel',file):
          fp.write(file+',2')
          fp.write("\n")
       if re.search('livedoor-homme',file):
          fp.write(file+',3')
          fp.write("\n")

出来た「text_train.csv」をリネームして、train用の.csvとtest用の.csvにします。両方のCSVファイルの一行目にセルを挿入して「x:image」「y:label」と入力します。これらをNeural Network ConsoleのDATASETにするフォルダに移動します。
Neural Network Consoleを起動します。

「+New Project」で「3種の画像認識No1「秋田犬」「ダックスフント」「パグ」」のComponentsをセットしました。

「DATASET」に「Training」に「text4_train.csv」をセット。

「Validation」に「text4_test.csv」をセット。

CONFIGには「Max Epoch:1000」「Structure Search:Enable」をセットしました。

Inputに8,100をセット。

4種類の分類なので、BinaryWeightAffineに4をセット。Training、Evaluationを実行。

一回目Accuracy95.83%です。

二回目はComponentsの一部が自動で変更されました。

二回目Accuracy97.5%です。

各ファイルの値を見てみます。あまりにAccuracyが高すぎです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です