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ニュースでおなじみのNTTレゾナントが、AI研究成果を公開するgooラボで公開しているAPIの1つです。
goo形態素解析APIを使えば、Google Apps Scriptで形態素解析のプログラムを準備しなくても、日本語文章をAPIにリクエストするだけで単語単位に分解したデータを取得できます。
goo形態素解析APIの利用登録手順
goo形態素解析APIを利用するには当たっては、アプリケーションIDを取得が必要です。
形態素解析APIにリクエストする際に、アプリケーションIDによって認証が行われます。
このgooラボのアプリケーションIDを取得するための利用登録手順を解説します。
1.gooラボのAPI利用登録ページにアクセスし、利用規約を確認します。
2.gooラボのAPI利用規約を読了した上で、「利用規約に同意してGitHubで登録」ボタンをクリックします。
3.GitHubのページに遷移し、認証画面が表示されるので、「Authorize nttresonant」ボタンをクリックします。
4.gooラボのページに戻り、アプリケーションIDが表示されるので、記録しておきます。
以上で、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']);
}
APIのリクエストはHTTP POSTで行い、パラメータは必須のアプリケーションIDと分析対象の文章を設定しています。
goo形態素解析APIにリクエストするGASサンプルコードを実行した結果、実行ログにAPIの返却テキストが表示されます。
上記のように日本語の文章を品詞・助詞のレベルに分割することができました。
口コミやレビューなどの文章を形態素解析し、どういったワードが頻出しているかで、テキストの内容を分析するといった応用も可能です。
パラメータ変更で名詞のみ抽出も可能
先程は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スクリプトを実行すると、文章を分解した中で名詞のみを抽出して出力結果を得ることができました。
Twitterなどで特定キーワードで検索したツイートから、どういった名詞が一緒に投稿されているかツイート分析が可能です。
まとめ・終わりに
今回、Google Apps Script(GAS)でgoo形態素解析APIを実行し、テキストデータの単語分割を行う方法を紹介しました。
形態素解析は膨大なテキストデータを保持するコーパスを組み合わせる必要があり、GASで実装するのは大変です。
しかし、形態素解析APIを利用すれば、APIに分析したい文章を送るだけで形態素解析した結果を得ることができます。
その中でもgoo形態素解析APIはGitHubアカウントで登録して、無料で利用できるのでオススメです。
GASで形態素解析を行いたい場合は、goo形態素解析APIをぜひ活用しましょう。
ディスカッション
コメント一覧
コメント失礼します。
とある文章が違う変数に入っていてそれをsentenceに入れたいのですが、{“error”: {“code”: 400, “message”: “Invalid request parameter”}}と出てしまいます…
解決方法はございませんでしょうか?
>KC様
ご質問ありがとうございます。
とある文章が違う変数に入っている場合、サンプルコードの10行目にある、2つ目のsentence(シングルクォーテーションで囲っていないの方)変数を、その文章が入っている変数に置き換えてもらえれば、実行できると考えています。
もし、できない場合は、「とある文章が違う変数」がどういった変数になっているか、GASコードの記述をご教示いただけますでしょうか。
よろしくお願いします。