ボットにCognitive Servicesを組み込んでみる:特集:Cognitive Servicesを探る(4/4 ページ)
マイクロソフトが提供するCognitive Servicesがどんなものかを、Text Analytics APIを使いながら見てみよう。
キーフレーズ抽出を行う
キーフレーズ抽出の大まかな流れは先ほどと同様だ。つまり、引き渡すデータを用意して、APIを呼び出すだけだ。ここではbot.addメソッドの内容で変更があった部分だけを示す。
bot.add('/', function (session) {
…… 省略 ……
callTextAnalytics('languages', data)
.then(function(res) {
…… 省略 ……
})
.then(function(json) {
lang = json.documents[0].detectedLanguages[0].name;
return json.documents[0].detectedLanguages[0];
})
.then(function(lang) {
data = makeReqData(text, lang.iso6391Name);
return callTextAnalytics('keyPhrases', data);
})
.then(function(res) {
if (res.status != 200) {
return Promise.reject('error occured in extracting key phrases');
}
return res.json();
})
.then(function(json) {
var msg = 'I guess your language: **' + lang +
'**.\n\nAnd I extract key phrases from your message: ';
for (var item of json.documents[0].keyPhrases) {
msg += '**' + item + '**, '
}
msg = msg.slice(0, -2);
session.send(msg);
})
.catch(function(reason) { session.send(reason); });
});
変わった点は、先ほどボットの出力を行っていた部分で言語判定の結果を返し(強調表示部分)、次のthenメソッドではその情報を使いcallTextAnalytics関数をもう一度呼び出して、その結果をthenメソッドにつなげている点だ(ここで先ほど述べた言語識別子を使用している)。その後の処理の流れは上とほぼ同様なので説明の必要はないだろう。強いて言えば、キーフレーズは複数抽出されるので、それをループで取り出して、メッセージに連結していることくらいだ。
実行結果を以下に示す。
いかがだろうか。「ほんの数行のコード」というわけにはいかないが、自前で言語判定やキーフレーズ抽出を実装することを考えたら、非常に簡単な労力でボットにインテリジェンスを組み込めることを実感できたのではないだろうか。
最後にCognitive Servicesが提供する各種APIの概要をまとめておこう。
その他のCognitive Services API
Cognitive Servicesには現在、21種類のAPIが用意されている。これらは次のカテゴリに分類されている。
- ビジョン: 画像解析、画像を基にした感情判定、顔認識、動画処理など画像/動画に関連するAPI
- スピーチ: 音声とテキストの相互変換、周囲の環境(バックグラウンドノイズ)や語彙の調整による言語認識能力の向上、話者認識など、音声に関連するAPI
- 言語: スペルチェック、言語理解(自然言語からその文意やキーワードを抽出)、言語解析(文章の構造を解析し、その意味を把握する)、テキスト分析(言語判定、キーフレーズ抽出など。本稿で利用)、Web言語モデリング(URLやハッシュタグに含まれる空白文字を含まない文字列を適切にパース)など、文字ベースで表現されたデータを解析するAPI
- 知識: 学術知識(学術論文や著者の検索や統計情報の取得)、エンティティリンク(文章中の単語間の関係性を解析)、知識探索(自然言語を用いた対話的検索を支援するためのインデックスや文法を構築)、リコメンデーション(ある製品の購入者に関連性の高い商品を推薦)
- 検索: Bingを利用した各種の検索API(テキスト、画像、動画、ニュース、オートサジェスト)
Cognitive Servicesのトップページの[APIs]タブからは、上記のAPIの紹介ページに移動できる。また、APIの紹介ページの多くではそのAPIがどんな機能を提供するかをWebブラウザで実際に確認できるようになっている。例えば、以下はComputer Vision APIの概要を紹介するページだが、ここでは下に並んでいる画像を選択すると、その画像の解析結果が右側に表示されるようなっている。
このようにCognitive Servicesが提供するAPIの多くはWebブラウザ上でその機能がどんなものかを把握でき、その仕様は各APIのレファレンスページで公開されている。実際にはAPIから返されるデータを手探りで調べながら、細かな調整をしていくと思うが、各言語でのAPI呼び出し方法も記されているので、試しに使ってみるのはそれほど難しくはないだろう。
なお、これらのAPIは単独で使用するよりも、幾つかを組み合わせることでより大きな効果を発揮する。例えば、スピーチAPIでユーザーの音声をテキストに変換し、言語APIでその内容を解析した上で何らかの処理を加えたテキストを生成する。最後にそれを今度はテキストから音声に変換してユーザーへのフィードバックとすることで、ユーザーとアプリ(やボット)が音声ベースで対話できるようになる。
本稿で作成したボットであれば、抽出したキーフレーズを選択肢としてユーザーに提示し、それに対するユーザー入力を基にBingで何らかの検索を行い、その結果をさらにユーザーに返送するといった使い方が考えられる。
本稿ではCognitive Servicesの概要を説明し、実際にText Analytics APIを使用してボットにインテリジェンス(的なもの)を組み込んでみた。次回はCognitive Servicesの他のAPIについて見ていこう。
Copyright© Digital Advantage Corp. All Rights Reserved.