post Image
Googleスプレッドシートの機械学習アドオンを日本語で試す

機械学習で分類問題を手軽に解くのに、GoogleスプレッドシートのアドオンであるSmart Autofill(スマート・オートフィル)がありますが、日本語を扱うために工夫が必要だったので、そのメモです。

Smart Autofillを利用する

Smart Autofillは、GoogleのPrediction APIを手軽に利用できるGoogleスプレッドシートのアドオンです。

スプレッドシートデータから学習した結果を使い、歯抜けになっている空白セルに入るべき値を予測して埋めてくれます。

screenshot1.png

Smart Autofillの入門ガイドには、多言語で入力されたテキストが、英語、スペイン語、フランス語のいずれであるかを自動補完するサンプルがあるのですが、これと同じことを日本語でも行うには、形態素解析をしておく必要がありました。

日本語を扱うための形態素解析

スプレッドシート上で形態素解析(分かち書き)を行うには、いくつか方法がありそうでしたが、てっとり早くYahooデベロッパーネットワークの日本語形態素解析APIを使用しました。

YahooAPIの分かち書きは便利です。抽出した単語を品詞ごとにフィルタリングできます。利用制限も1日あたり50000リクエストまでいけるので、何かお試しするには十分です。

スプレッドシートのメニューから、スクリプトエディタを開き、以下のソースを入力します。

コード.gs
function myFunction(text)
{
  var appid = "自分のアプリケーションID";
  var filter = "1%7C2%7C3%7C4%7C5%7C6%7C7%7C8%7C9%7C10";  // 名詞やら動詞やらを指定しています
  var url = "http://jlp.yahooapis.jp/MAService/V1/parse?appid="+appid+"&results=ma&sentence="+text+"&filter="+filter;
  var namespace = XmlService.getNamespace("urn:yahoo:jp:jlp");

  // APIを呼ぶ
  var xml = UrlFetchApp.fetch(url);
  // XMLをパース
  var document = XmlService.parse(xml.getContentText());

  var entries = document.getRootElement();
  var ma_result = entries.getChild("ma_result", namespace);
  var word_list = ma_result.getChild("word_list", namespace);
  var word = word_list.getChildren("word", namespace);

  var ret = "";
  for (var i = 0; i < word.length; i++) {
    // スペース区切りで抽出
    ret += word[i].getAllContent()[0].asElement().getText() + " ";
  }

  return ret;
}

スクリプトを保存したら、セル内で以下のように関数が使えるようになります。

=myFunction(A1)

filterパラメータには、フィルタリングしたい品詞を設定できます。フィルタリングが不要の場合は、パラメータを設定しなければOKです。

今回は、引越し侍で収集しているお客様からの口コミ文章をカテゴライズすることが目的だったので、日本語文章内の句読点や助詞などは不要かなと思って省く設定にしてみました。

filterに指定可能な品詞番号

品詞番号 品詞名
1 形容詞
2 形容動詞
3 感動詞
4 副詞
5 連体詞
6 接続詞
7 接頭辞
8 接尾辞
9 名詞
10 動詞
11 助詞
12 助動詞
13 特殊(句読点、カッコ、記号など)

まとめ

はじめ何も考えずに、そのままの日本語文章をSmart Autofillしてみたところ、うまくカテゴライズしてくれなかったのですが、よくよく考えたら、そりゃ分かち書きが必要だよねと思い、形態素解析したデータに対して実行してみたところ、いい感じでカテゴライズしてくれるようになりました。

実際に運用するには、Prediction APIを使ってプログラミングするほうが良いと思いますが、まずはどれくらいのクオリティで自動補完してくれるかのテストには、お手軽に試せるSmart Autofillはとても便利でした。


『 機械学習 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。