キーフレーズ抽出の大まかな流れは先ほどと同様だ。つまり、引き渡すデータを用意して、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には現在、21種類の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.