libro
www.tuyano.com
Google Apps Scriptプログラミング [中級編]

Prediction APIによる予測機能を利用する (5/6)

作成:2012-06-16 11:37
更新:2012-06-16 11:37

■トレーニングのアップデート

Predictionには、Trainingのデータモデルにデータを追加することができます。これは、Prediction.Trainingにある「update」というメソッドで行えます。
変数 = Prediction.Training
    ( データのパス , オブジェクト );

先ほどのpredictと同様に、第1引数には予測データのパス、第2引数に追加するデータをまとめたオブジェクトを用意します。このオブジェクトは、以下のような形で定義されます。
{"classLabel": ラベル , "csvInstance": [……テキストの配列……]}
これにより、第2引数のテキスト配列が、第1引数のラベルでPrediction.Trainingに追加されます。テキスト配列になっていることからもわかるように、これは1つ1つのテキストをちまちまと追加するより、まとまった量のテキストを特定のラベルでどさっと追加する、といった使い方をするのがよいように思えます。

ただし、このupdateは、Cloud Storageの予測データファイルを更新するものではない、という点は注意スル必要があります。これはあくまでPrediction.Trainingへのupdateなのです。したがってある程度まとまったデータを追加するのであれば、予測データのファイルに追記してinsertしなおすほうがはるかに合理的でしょう。

(――あるいは、将来的に参照データファイルも更新されるような仕組みが用意されるのかも知れませんが、「現時点で試した限りではファイルの更新はされない」と考えて処理したほうがよさそうです)

下のリスト欄に、簡単な利用例をあげておきます。これは、「3B」セルに追加データとなるテキストを、「3C」セルに追加するラベルをそれぞれ既述しておいて実行します。追加処理が完了すれば、「update!」とアラートを表示します。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

function update() { 
  var sheet = SpreadsheetApp.getActiveSheet();
  var input_text = sheet.getRange(3,2).getValue();
  var label_text = sheet.getRange(3, 3).getValue();
  var datafile = "my_sample_data/language_id.txt";
  sheet.getRange(3,1).setValue("input text:");
  sheet.getRange(5,1).setValue("complete:");
  var update_data = {"classLabel": label_text,"csvInstance": [input_text]};
  var update_out = Prediction.Training.update(datafile,update_data);
  Logger.log(update_out);
  Browser.msgBox("update!");
} 
※関連コンテンツ

「Google Apps Scriptプログラミング [中級編]」に戻る