Translate

2017年2月3日金曜日

IBM Watson NLC と TensorFlow で実装した簡単なCNN モデルを比較してみた


IBM Watson の NLC は
1000文字までの文章と分類名のペア
を学習データとして投入した分類器を作成できる
サービスだ。

最近は日本語書籍も出ており、
Watson Toolkitという
curlを打てなくても使えるお手軽さ
はよくできているとおもう。

NLCの裏側はオープンになっていないので
どんなアルゴリズムでどんな事前学習が行われているかは
APIを活用するユーザ側にはさっぱりわからない。

巷の評価は、いわゆるオープンなデータセットをつかっていて
それを元に比較しているので、
どうも

「催眠術師の仲間から選んだ人に催眠術を書ける術士」

みたいで眉唾だ..

ということで、
データセットをコッチで用意した。

某テキストの文章を1文づつ切り出し、
その文章の分類名を、全セクション134で切り分けてみた。

学習データ(X_train, y_train):2000件
バッチ用テストデータ(X_test, y_test):140件
評価用データ(X_eval, y_eval):55件

とかなり少ないが、
実際にNLCと
データ編集が比較的近くてやりやすい
https://github.com/tkengo/tf/tree/master/cnn_text_classification
のサンプルコードを使って
評価用データの

・正解率
 最も頻度が高い分類が合致した件数を、全質問数う(55)で割ったもの

・正解選択ヒット率
 トップ10までにある場合は、荷重づけした特点を
 F1の1位から10位までのポイント制で1を按分した数加えたスコアを、
 全質問数(55)でわったもの。

の二つを出してみた。




..正直、おはなしにならんくらい独自実装のほうが使い物にならん

どうもこのデータセットだと
分類種類の多さにくらべデータ件数が少なすぎるようで
ちっとも学習できていない..

これじゃIBM社員を、ますまずその気にさせてしまう..


でも..
箸にも某にもつかないダメデータセットでも
それなりの成績を出すNLCの事前学習度合いが
箱入り娘級の調教具合..

有償サービスにするにはこれより良い成績ださないと
話にならないか...

0 件のコメント:

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...