goo形態素解析APIをGoogle Apps Script(GAS)で利用する方法

自然言語処理の中で最も基本的な処理となるのが、文章を単語レベルに区切る形態素解析です。

Google Apps Script(GAS)で形態素解析するやり方として、goo形態素解析APIを利用する方法を解説します。

自然言語処理する上で基本は形態素解析

ディープラーニングなどのAI技術の発展で、自然言語処理のプログラミングを行う機会が増えています。

そんな自然言語処理の中で、基本的な処理となるが「形態素解析」です。

形態素解析はテキストデータを処理し、単語レベルで区切った結果を出力します。

単語レベルに細かく分解することで、文章の構造を把握し、テキストマイニングと呼ばれるテキストの分析を行います。

GASで形態素解析はAPI利用が簡単

Google Apps Script(GAS)でも、自然言語処理のプログラミングを行うことができます。

ただ、自然言語処理の基本となる形態素解析をGASスクリプトで準備すると、一定のコード数が必要です。

さらに、GASは無料利用の場合には、6分という実行時間制限があり、処理速度もそれほど速くないことから、形態素解析の処理を実装すると、実行時間オーバーの恐れもあります。

それよりも、GASで形態素解析を行う場合は、形態素解析のAPIを利用するのがおすすめです。

AIブームのおかげで、テキストデータを送ると形態素解析した結果を得ることができるAPIが多数公開されています。

わざわざGASで形態素解析のコードを準備するのは、車輪の再発明になるため、APIなら10数行で簡単に実装できます。

gooラボで形態素解析APIは無料利用可能

無料で利用できる形態素解析のAPIでおすすめは「goo形態素解析API」です。

goo形態素解析APIの説明ページ!Google Apps Script(GAS)で形態素解析が可能に

gooニュースでおなじみのNTTレゾナントが、AI研究成果を公開するgooラボで公開しているAPIの1つです。

goo形態素解析APIを使えば、Google Apps Scriptで形態素解析のプログラムを準備しなくても、日本語文章をAPIにリクエストするだけで単語単位に分解したデータを取得できます。

goo形態素解析APIの利用登録手順

goo形態素解析APIを利用するには当たっては、アプリケーションIDを取得が必要です。

形態素解析APIにリクエストする際に、アプリケーションIDによって認証が行われます。

このgooラボのアプリケーションIDを取得するための利用登録手順を解説します。

1.gooラボのAPI利用登録ページにアクセスし、利用規約を確認します。

gooラボのAPI利用登録ページで利用規約に同意

2.gooラボのAPI利用規約を読了した上で、「利用規約に同意してGitHubで登録」ボタンをクリックします。

利用規約に同意した上で、Githubで登録ボタンをクリック

3.GitHubのページに遷移し、認証画面が表示されるので、「Authorize nttresonant」ボタンをクリックします。

GitHubのページでgooラボのAPIの認証を許可

4.gooラボのページに戻り、アプリケーションIDが表示されるので、記録しておきます。

gooラボのAPIを利用するためのアプリケーションID(APIキー)が発行されるので記録

以上で、gooラボのAPI利用登録は完了です。

取得したアプリケーションIDをAPIリクエストにセットすることで、goo形態素解析APIにリクエストが可能になります。

goo形態素解析APIを実行するGASコード

実際にgoo形態素解析APIをGoogle Apps Script(GAS)で実行して、単語分析する方法を解説します。

形態素解析したい文章をgoo形態素解析にリクエストして、単語レベルに分割した結果を出力するサンプルコードです。

function textAnalysis() {
  //形態素解析する文章を変数に格納
  let sentence = "国境の長いトンネルを抜けると雪国であった。";
  //goo形態素解析APIのリクエストURLとappIdを設定(***部分にIDセット)
  let apiUrl = "https://labs.goo.ne.jp/api/morph";
  let appId = "***************************************************************";
  //goo形態素解析APIにパラメータをセットし、HTTP POSTするためのoptionsを設定
  let payload = {
    'app_id' : appId,
    'sentence' : sentence
  };
  let options = {
    'method' : 'post',
    'payload' : payload
  };
  //goo形態素解析APIにHTTP POSTでリクエストし、JSONの結果をパース
  let response = UrlFetchApp.fetch(apiUrl,options).getContentText();
  let json = JSON.parse(response);
  //goo形態素解析APIで処理した結果をログ出力する
  console.log(json['word_list']);
}
Google Apps Script(GAS)でgooの形態素解析APIにリクエストして、分析結果をログ出力するサンプルコード

APIのリクエストはHTTP POSTで行い、パラメータは必須のアプリケーションIDと分析対象の文章を設定しています。

goo形態素解析APIにリクエストするGASサンプルコードを実行した結果、実行ログにAPIの返却テキストが表示されます。

goo形態素解析APIをGoogle Apps Script(GAS)で実行してログ出力した結果

上記のように日本語の文章を品詞・助詞のレベルに分割することができました。

口コミやレビューなどの文章を形態素解析し、どういったワードが頻出しているかで、テキストの内容を分析するといった応用も可能です。

パラメータ変更で名詞のみ抽出も可能

先程はgoo形態素解析APIにリクエストした文章をすべての品詞で分割しましたが、特定の品詞のみに絞ることも可能です。

そこで、goo形態素解析APIのパラメータを追加して、名詞だけ抽出してみます。

function textAnalysisV2() {
  //形態素解析する文章を変数に格納
  let sentence = "国境の長いトンネルを抜けると雪国であった。";
  //goo形態素解析APIのリクエストURLとappIdを設定(***部分にIDセット)
  let apiUrl = "https://labs.goo.ne.jp/api/morph";
  let appId = "***************************************************************";
  //goo形態素解析APIにパラメータをセットし、HTTP POSTするためのoptionsを設定
  let payload = {
    'app_id' : appId,
    'sentence' : sentence,
    'info_filter' : "form|pos",
    'pos_filter' : "名詞"
  };
  let options = {
    'method' : 'post',
    'payload' : payload
  };
  //goo形態素解析APIにHTTP POSTでリクエストし、JSONの結果をパース
  let response = UrlFetchApp.fetch(apiUrl,options).getContentText();
  let json = JSON.parse(response);
  //goo形態素解析APIで処理した結果をログ出力する
  console.log(json['word_list']);
}

前述のGoogle Apps Scriptのサンプルコードと比較すると、APIリクエストのパラメータの項目が増えています。

GASスクリプトを実行すると、文章を分解した中で名詞のみを抽出して出力結果を得ることができました。

Google Apps Script(GAS)でgoo形態素解析APIを実行して、名詞のみ抽出

Twitterなどで特定キーワードで検索したツイートから、どういった名詞が一緒に投稿されているかツイート分析が可能です。

まとめ・終わりに

今回、Google Apps Script(GAS)でgoo形態素解析APIを実行し、テキストデータの単語分割を行う方法を紹介しました。

形態素解析は膨大なテキストデータを保持するコーパスを組み合わせる必要があり、GASで実装するのは大変です。

しかし、形態素解析APIを利用すれば、APIに分析したい文章を送るだけで形態素解析した結果を得ることができます。

その中でもgoo形態素解析APIはGitHubアカウントで登録して、無料で利用できるのでオススメです。

GASで形態素解析を行いたい場合は、goo形態素解析APIをぜひ活用しましょう。