0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LUISチュートリアル:天気予報アプリを作る

0
Posted at

はじめに

この記事は社内勉強会でハンズオンする為に投稿しました。
LUISを初めて使う非エンジニアでも40分~50分程度で実施できるよう、極基本的なことのみを細かく進めるように構成しています。

前提

LUISを使い始める為に必要なアカウント作成は既に済んでいる前提としています。
まだの方は、LUISのサインアップから使い始めるまでを参考にしてください。

目的

  • どう設定すれば良いかを何となく学ぶ
  • どんな情報を返してくれるのか何となく学ぶ
  • LUISのみを使用してもWebAPIとして公開できるのでやってみる
    • 公開したWebAPIにアクセスした場合、どう認識されたのかJSON形式で返却されるので見てみる

今回作成するアプリ

天気予報を尋ねるアプリにします。
「大阪の明日の天気を教えて」という発話が考えられ、

  • インテントとしては「天気予報を聞きたい」
  • エンティティとしては、いつ:「日付」、どこの:「地名」
    ということになります。

ハードコピー内の枠線の色について

【赤】はこれからすべきことを指しています。クリック・入力するべき箇所です。
【緑】は前の手順を実施した結果、反映・変更された箇所です。
つまり、赤枠のボタンを選択 -> 次の手順で、次工程の緑枠の箇所が変化、赤枠のボタンを選択 という感じの流れになっています。

手順

1.LUISのページにアクセスし、サインインする
https://www.luis.ai/homeにアクセスし、サインインしておきます。

2.MyAppの画面が表示されますが、まだアプリが一つもないため、殺風景です。
では、「Create new app」を選択してアプリを作っていきましょう。
WS000088.JPG

3.アプリ名や言語について下記の通り記入し、「Done」を選択します。
Name :天気予報アプリ
Culture:Japanese
Description :チュートリアル
WS000089.JPG

4.アプリが作成され、Intentsの画面が表示されます。
まずはインテントを追加します。
「Create new intent」をクリックしましょう。
WS000091.JPG

5.Create new Intentのモーダルが開きます。
今回は天気予報を聞きたいので、intent nameに「天気予報を聞きたい」と入力し、[Done」を選択します。
WS000092.JPG

6.「天気予報を聞きたい」インテントが追加され、インテント設定の画面になります。
まだ何も入力せず、続いてエンティティを登録します。
左側のメニューにある「Entities」を選択します。
WS000093.JPG

7.インテント同様に、「Create new entity」を選択します。
WS000094.JPG

8.下記の通り入力して「Done」を選択します。
Entity name :地名
Entity type :Simple
WS000095.JPG

9.Entityに「地名」が追加されました。
「日付」も追加する為、もう一度「Create new Entity」を選択します。
WS000096.JPG

10.下記の通り入力して「Done」を選択します。
Entity name :日付
Entity type :Simple
※後述しますが、prebuilt EntityのDatetimeが発話の単語を上手く認識できなかったので、今回は別で作成しています。
WS000097.JPG

11.Entityに「日付」が追加されました。
続けてインテントに発話を追加し、エンティティを認識させるため、左側のメニューにある「Intents」を選択します。
WS000098.JPG

12.インテントの一覧から「天気予報を聞きたい」を選択します。
WS000099.JPG

13.「天気予報を聞きたい」エンティティの設定画面が開きます。
発話を追加する為、画面上部の「Type about 5~」と表示されているテキストボックスを選択し、「大阪の明日の天気を教えて」と入力・Enter押下します。
WS000100.JPG

14.「大阪の明日の天気を教えて」という発話が追加されました。
これで、「大阪の明日の天気を教えて」やこれに類するテキストが発話として渡された際に、「天気予報を聞きたい」インテントとして認識するようになります。
WS000101.JPG

15.続けて、単語とエンティティを紐付けていきます。
「大阪」を「地名」エンティティ・「明日」を「日付」エンティティとして認識するように設定します。
「大阪の明日の天気を教えて」の「大阪」の箇所にマウスカーソルを合わせると、下図のように[大阪]と表示されますので、そこでクリックします。
WS000102.JPG

16.下図のようにサブメニューが開きますので、「地名」を選択します。
WS000103.JPG

17.「大阪」が[地名]という表示に変わり、背景色も変わりました。
これで、「大阪」が「地名」エンティティとして認識されるようになりました。
WS000104.JPG

18.同様に、「明日」も「日付」にします。
WS000105.JPG

19.この発話を登録して、エンティティを認識させる流れを繰り返します。
※最低5つの発話が必要ですので、いろいろなパターンで登録してください。
ここでは、下記を登録しました。

  • 東京の今日の天気予報は?
  • 明後日の奈良の天気は?
  • 明後日、三重は晴れるかな
  • 今日、広島雨降る?
  • 週末の神奈川の天気を教えて
    なお、一度Entityを割り当てた単語が元々どんな単語で発話を入力していたか確認する為に、画面の「Token View」を選択します。
    WS000106.JPG

20.下図のように、元々の単語を確認できます。
次に、入力・設定したインテント・エンティティをAIに学習させるため、右上の「●Train」を選択します。
WS000107.JPG

21.学習が完了すると、画面上部に下図のように表示されます。
WS000110.JPG

22.次に、学習した内容を使って、発話が想定通りに認識されているかテストします。
右上の「← Test」を選択します。
WS000111.JPG

23.テスト用のペインが右側に表示されるので、発話文を入力・Enter押下します。
ここでは「大阪の明後日の天気を教えて」と入力しました。
WS000112.JPG

24.入力した発話が認識されました。
エンティティなども確認する為、「Inspect」を選択します。
WS000113.JPG

25.Inspectペインが表示され、発話がどのように認識されたのか確認できます。
下図では

  • インテントは「天気予報を聞きたい」
  • 「地名」エンティティは「大阪」
  • 「日付」エンティティは「明後日」
    と認識されたことが分かります。
    次に、このアプリをWebAPIとして公開して、ブラウザから発話を渡してみましょう。
    「PUBLISH」を選択します。
    WS000114.JPG

26.Publish app画面が開きます。
下図の通り選択して、「Publish to Staging Slot」を選択します。
Publish to :Staging
Timezone :GMT +9:00 Tokyo ~
WS000116.JPG

27.公開が完了すると、画面上部に下図のように表示されます。
WS000118.JPG

28.そのまま画面下部にスクロールし、下図に表示されているURLリンクを選択します。
WS000119.JPG

29.別タブ/ウィンドウで、下図のように表示されます。
これは、発話を何も渡していない場合の返却内容です。
WS000120.JPG

30.URLの最後が「q=」で終わっているので、ここに発話文を追加してアクセスし直します。
ここでは、「~q=東京の週末の天気を教えて」としました。
その結果、下図のようにブラウザに表示されます。
無事に、

  • インテントは「天気予報を聞きたい」
  • 地名エンティティは「東京」
  • 日付エンティティは「週末」
    と認識され、返却されたことが分かります。
    WS000123.JPG

まとめ

このように、LUISを使うと簡単にNLUアプリを作成することができます。
実際にちゃんとした仕組みを作ろうとすると、かなりの発話数が必要だったり、インテントやエンティティの衝突が起こったりします。
この辺りの苦労話などはまた別途。

今後の課題

今回、チュートリアルを作るに当たり、Prebuilt entitiesのdatetimeを使おうと思っていたのですが、インテントに発話を入れた際に、「明日」「明後日」などの単語がことごとくdatetimeと認識せず、範囲指定してもdatetimeを選択できず、といった状況だったため、断念しました。
対処方法が分かる方、ご連絡いただけますと助かります。
※海外のQA情報か何かで、GUI上は認識してくれないけど、実際に動かしたら認識するよ、という内容があり、試してみたのですがダメでした。
この辺りはAlexaの方が秀でてるのかなぁ、という印象です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?