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

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

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

■予測処理を行う

では予測データの用意もできたので、実際に予測を行なってみることにしましょう。簡単なサンプルリストを下のリスト欄に掲載してあります。

これを利用するには、あらかじめアクティブシートにチェックするテキストを用意しておく必要があります。ここでは、「3B」セルにテキストを用意しておくようにしてあります。このセルに、適当なテキストを書いておいてください。

なお、サンプルの予測データに用意されているのは、英語・フランス語・スペイン語の3ヶ国語のデータですので、これらのいずれかのテキストを用意しておく必要があります。(日本語などはデータがないので、そのままでは使えません)

予測は、「predict」というメソッドを呼び出して行います。以下のものです。
変数 = Prediction.predict( データのパス , オブジェクト );
引数には、予測データのパスと、予測するデータをまとめたオブジェクトを指定します。このオブジェクトは、「PredictInput」というオブジェクトを"input"という値で用意する必要があります。このPredictInputは、以下のようにして用意することができます。
変数 = Prediction.newPredictInput();
変数 = 《PredictInput》.setCsvInstance( テキスト配列 );
newPredictInputメソッドを呼び出して、PredictInputオブジェクトを作成します。そして、setCsvInstanceというメソッドを使い、引数に指定したテキスト配列をCSV形式のデータとして設定します。――こうして用意できたPredictInputを使って、predictを実行する、というわけです。

実行した結果は、「Output」というオブジェクトとして返されます。このオブジェクトから、必要な情報をとり出すことができます。とりあえず覚えておきたいのは、
変数 = 《Output》.getOutputLabel();
これでしょう。これで、予測されたラベルが返されます。つまり、言語データであれば、送られたデータが何語かを予測した結果がこれで得られる、というわけです。

では、実際の利用例を下のリスト欄にあげておきましょう。これは、アクティブシートの「3B」セルに書かれたテキストを予測し、「4B」にその結果を書き出すサンプルです。3Bセルにいろいろとテキストを書いて実行し、結果を確かめてみましょう。短いテキストだと間違えたりしますが、ある程度の長さのテキストになると、ほぼ間違いなく使用言語を特定できます。

元データであるlanguage_id.txtに日本語のデータを追加しておき、それをinsertでトレーニング設定しておけば、日本語も認識できます。ただし、日本語の各単語を半角スペースで区切っていないとそれぞれの単語をうまく理解できないようなので、データの作成や入力には注意が必要でしょう。

なお、その下のセルにPredictInputOutputの内容を書きだすようにしてありますので、どのような形でデータがやり取りされているのかを調べてみると面白いでしょう。

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

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

●プログラム・リスト●

function predict() { 
  var sheet = SpreadsheetApp.getActiveSheet();
  var input_text = sheet.getRange(3,2).getValue();
  var completedCell = sheet.getRange(4, 2);
  var outputCell = sheet.getRange(5, 2);
  var inputCell = sheet.getRange(6, 2);
  sheet.getRange(3,1).setValue("input text:");
  sheet.getRange(4,1).setValue("complete:");
  sheet.getRange(5,1).setValue("output:");
  sheet.getRange(6,1).setValue("input:");
  var datafile = "my_sample_data/language_id.txt";
  var prediction_input = Prediction.newPredictInput().setCsvInstance([input_text]); 
  var prediction_out = Prediction.predict(datafile,{"input" : prediction_input}); 
  completedCell.setValue(prediction_out.getOutputLabel()); 
  outputCell.setValue(prediction_out); 
  inputCell.setValue(prediction_input); 
}

※関連コンテンツ

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