徹底的にアウトプット志向

ITコンサルタントの日々の学びを徹底的にアウトプットするブログ

超簡単!3分で分かるMicrosoft ”LUIS”

目次

 

LUISとは何か?

LUISとはMicrosoft Cognitive Services の中で、自然言語理解を行うAPIのこと。

  • Language
  • Understanding
  • Intelligent
  • Service

の略。

 

LUISで何ができるか?

LUISでは、入力された文章が「どのような意図の文章か」を識別することができる。

文字だと分かりにくいので、下の図を見てほしい。

f:id:hajime1980:20171116003437j:plain

ここでいう「LUIS Application 1」というのがAIの頭脳だ。

この頭脳に対して、2つの作業をする。

AIを学習させる

この頭脳に対し学習させたい文章の意図である「Intent」を必要なだけ追加する。この図の場合以下の3つだ。

  1. 現在の時刻を知りたい
  2. {場所}の天気を知りたい
  3. ドルレートを知りたい

各Intentに対して「Utterance」という学習データを与え、「それぞれの文章がどの意図(Intent)に該当するか」を覚え込ませるのだ。

この図の場合、「Intent1 現在の時刻を知りたい」に対して3つの文章を与え、どの文章も同じ意図であると学習させている。

  1. 今何時
  2. 現在の時刻を教えて
  3. 現在時刻は?

AIを使ってみる

学習が済んだら、LUISのAPIが使えるようになる。覚え込ませた以外の文章で問い合わせをすると、どのIntentの文章かを判定した結果をJSON形式で返してくれる。

この図の場合、学習させていない別の文章「いま何時かな?」という文章をWebAPIで問い合わせると、各Intentの識別値(Score)がJSON形式で返される(Score以外にも色々返されるがここでは割愛)

この図の場合、「Intent1 現在の時刻を知りたい」のScoreが99%なので正確に意図を読み取っていることになる。

これがLUISのAPIだ。

頭脳(AI)はどの単位で作成されるか?

LUISの頭脳(AI)はこの図でいうと「LUIS Application1」に該当する。別の頭脳が必要な場合はApplicationwo別に登録することができ、用途に応じて使い分けをすることができる。例えば、「問い合わせChatBot用」「スマートスピーカー用」などを分けることができる。

 

LUISをAIチャットボットとして使う場合の注意点

LUISは問い合わせ対応のAIチャットボットに使われることが多く想定されるが、この学習は結構骨が折れる。

FAQの1つがLUISの「Intent」に該当する。仮にFAQを100個用意したとすると、Intentを100個作る必要がある。各Intentに対して3~10個ほどの学習をさせないと、ある程度正確な判定ができないため、この場合、言い回しを変えた問い合わせ(学習データ)を少なくとも300個くらいは用意する必要がある。これが骨が折れる作業なのだ。

それだけではない。AIは「学習データ」と「テストデータ」を別に用意する必要がある。とういうことかというと、学習させただけでは、ちゃんと人口知能が意図した働きをしているか判断できない。なので、学習データとは別の「テストデータ」でテストすることで文章が正しいIntentとして判定されるまで学習が進んだのかを確認する必要があるのだ。このテストデータが最低1パターンは必要になるので、合計するとFAQ100個に対して、300個の学習データと最低100個のテストデータが必要になってくる

 

もう少し踏み込んだ使い方

LUISをもう少し踏み込んだ使い方をすることができる。

EntitiesとFeaturesを使うことで「より便利に、より正確に」判定することができる。

 

少し長くなってきたので、この部分は次のブログで。