アラカン"BOKU"のITな日常

文系システムエンジニアの”BOKU”が勉強したこと、経験したこと、日々思うことを書いてます。

DELTA #3で発表した「AI編集長を模擬る」の補足・ソースコードとか/使い方42:Neural Network Console

2018/08/30「DELTA TOKYO #3 〜NeuralNetworkConsoleの面白い使い方を学ぼう〜」に参加させてもらいました。

delta.connpass.com

今回は、そこでお話した内容を補足します。

プレゼン用スライドはSlideShareで共有してます。

 

今回のテーマを決めた裏話

 
スライドにも書いてますが、やってみたかったことは以下です。
人間がかかわらないとできない業務の負荷を減らすため、アプリケーションの入力時に内容のチェックまで行えるかを試してみたいな
それを、簡単に作りこむのにインタフェースは「EXCEL」でいいや。
学習データを一から集めるのは大変なので、ライブドアのニュースコーパスを使おう。

arakan-pgm-ai.hatenablog.comニュースコーパスの分類に独女通信ってのがある。

じゃあ、女性向きニュースとそれ以外の区別をつけるってのをやってみよう。

そういうことをするなら、雰囲気的に「女性向けニュースのAI編集長」だな・・・。

みたいな感じで決めました。

お遊びではあります。

が、Neural Network Console/Neural Network Librariesの機能強化の方向性として、「ディープラーニングを学ぶ研究者だけでなく、もっと、実務で使う人に焦点をあてた検討もしてほしいな」と、ちょっと真面目に感じていて、あれこれ試している・・という側面もあります。

正直、うまくやれれば、ビジネスに小さなイノベーションを起こすくらいの可能性も感じてたり・・ホント、惜しいな・・と思ったりしてます。

 

ソースコードの場所と補足説明など

 

さて。 

裏話はこのへんで置いといて、記事の本題に戻します。

まず。

ソースコードとデータとEXCELファイルなど、一式こちらにあります。

github.com

実行には、Anaconda python とNeural Network Librariesのインストールが必要です。

arakan-pgm-ai.hatenablog.com

今回のように外部プログラムから、NNabla_cli.exeを実行する場合は、Condaで仮想環境を作らずに、Neural Network Librariesをインストールする必要があります。

これ・・超重要です。

仮想環境に切り替えるコマンド(activate)をバッチファイルに書いても、そこで処理が途切れてしまってうまくいきません。

あと、手抜きでパスをVBAのソースとかバッチファイルにダイレクトに書いてます。

自分が使ったパスは「C:\tmp2」です。

そこにファイルを全ておいてます。

もし、ソースを書き換えないのなら、そのフォルダを作って使ってください。 

 

前処理のPythonプログラムの補足事項

 

テキストデータをNeural Network Consoleに変換するプログラムは2種類あります。

処理の本体は「make_nnc_data_from_text_for_vbademo.py」にあります。

基本的な方法論やソースはこちらで紹介しているものと同じです。

arakan-pgm-ai.hatenablog.com

arakan-pgm-ai.hatenablog.com

前処理でテキストをまとめて処理するだけなら、上記の記事のままで問題ないです。

でも、今回は「EXCELで入力したテキストひとつだけを処理する機能」が必要になるので、その処理を追加しています。

違いは対象ファイルの受取り方です。

大量処理の場合は、テキストファイルの中の対象ファイルのパスを読み取って処理するので、引数が「複数の対象テキストファイルを羅列したCSVファイル」になります。

from make_nnc_data_from_text_for_vbademo import MakeNnc     
            
m = MakeNnc()
m.make_data('for_convert_text_list.csv','for_demo')

ところが、EXCELに入力されたテキストは、その処理の内容を保存したテキストファイル(今回は vba.txt)を引数にとって処理する必要があります。 

from make_nnc_data_from_text_for_vbademo import MakeNnc         
            
m = MakeNnc()
m.make_data_single('vba.txt','vba.csv','9',0)

なので、それに対応する関数を追加したわけです。 

   #ファイルをひとつだけ処理する
    def make_data_single(self,textfile,sOutputFile,label,nOut):
        out_csv = open(sOutputFile,'w',newline='',encoding='utf8')
        out_csv_writer = csv.writer(out_csv)
        out_csv_writer.writerow(['x:image','y:label'])
        sPath = '.\\' + label + '\\' + str(nOut) + '.csv'
        out_csv_writer.writerow([sPath,0])
        out_csv.close()
        l_text = self.__get_input_txt(textfile)
        self.__make_data_csv(l_text,label,nOut)

上記以外は、元記事を読んでソースを見てもらえば大体わかるかな・・と 

 

前処理後のデータを学習するNeural Network Consoleのモデル他

 

今回のデモは、以下の記事でやったネットワークモデルをそのまま使いました。

arakan-pgm-ai.hatenablog.com

特別なことは何もしていないので、上記記事をみてもらえばよいかな・・と。

 

EXCELからセルの内容を評価する部分

 

記事を入力する「メイン」シートのB8セルの内容をvba.txtに保存してBATファイルをキックしているだけです。

VBAのソースでシート名を固定で参照していますので、シート名を変更したりすると動きません。

基本的なやり方は以下の記事の通りにやってます。

arakan-pgm-ai.hatenablog.com

この記事を見てもらうと、今回のデモのEXCELがこいつのボタンの名前とかを、ちょっと変えただけのものだとわかると思います。

違っているのは、パスとか呼び出しているファイルの名前とかくらいです。

なので、ここで追加の説明はしません。

 

NNabla_cli.exeの使い方などについて

 

ネットワークモデルや学習済パラメータを引き継ぐファイルや、それを使って評価を実行するNNabla_cli.exeの使い方などは、こちらの記事に書いてます。

arakan-pgm-ai.hatenablog.com

 

最後に、自然言語処理の表についての補足

 

あと、スライドでテキストデータを数値データ化する方法の表をざくっと書いてます。

これについてのもう少し詳しい説明は以下の記事でやってます。

arakan-pgm-ai.hatenablog.com

arakan-pgm-ai.hatenablog.com

arakan-pgm-ai.hatenablog.com

以上・・ですかね。

ではでは。 

f:id:arakan_no_boku:20180825171513j:plain