前回に引き続き、 LUIS の入門メモ(2017年12月)です。
LUIS (Language Understanding Intelligent Service)とは Microsoft Azure の Cognitive Services の 自然言語処理のサービスの一つですが、LUISとは?的な感じの場合、前回に概要的な記載があります。
Overview
1. 事前準備(前回)
2. LUIS App の構築(前回)
3. Phrase list / Prebuild Entity の活用(今回)
4. バージョン管理 / 共同編集 / 公開(今回)
このブログを書いた2日後にLUISがGAしてポータルが新しくなったので内容を更新しました。
今回は、Cogbot Advent Calendar 11日目のエントリーです。
余談ですが、この記事を書いてる時点だと、Firefox ではLUIS ポータルの動作が微妙だったので、Chrome で操作した方がいいと感じました。
3. Phrase list / Prebuild Entity の活用
Phrase list features (フレーズリスト・用語集)
LUIS では、用語集を作ることでパフォーマンス(というか品質)を向上させることが見込めます。
前回からの天気予報の例だと、地域(品川とか渋谷とか、博多とか)を登録しておけば、文章からどの単語が地域を指しているかのパフォーマンス向上ができるでしょう。サクッと作ってみましょう。
LUIS ポータルの My Appsで作ったアプリ(今回だと「WeatherDemo201712」)を開き、左側の Phrase lists をクリックして画面を表示し、Create new phrase list をクリックします。

このフレーズリストの名称を「locations」と入力しました。
値は、value に入力してエンターキーで登録していきます。「横浜」「さいたま」などいくつか入力していきます。

Phrase suggestions機能 について紹介しておきます。
いくつかの値を入力していくと、右側に Phrase の suggestions が表示されます。1つずつ + をクリックして追加してもいいし、Add all で表示されているものを一括で追加することができます。12/13のGAから日本語も対応して便利になりました。

このフレーズリストと似た機能で、 エンティティtの type を list にして登録するって方法があります。これについては、@makopoさん が 前日の Advent Calendar「LUISのPhrase ListとList型のEntityって、何が違うの?」 にて 詳しく書いています♪検証までされていて素晴らしい記事で勉強になります♪
そこら辺の解説や、チェックボックス These values are exchangeable については、こちらに説明があります。
How to use phrase lists | Microsoft Docs
Save ボタンをクリックすることで、保存されます。保存後は、Train をクリックして学習させる必要があります。
作成した Phrase list は、Phrase lists の画面から有効無効を切り替えることができます。

Pattern features (正規表現)
プレビュー時にはあった正規表現を設定する機能が......なくなりましたかね?このブログ書いてる時点では見当たらないですので触れずにおきます。
Prebuilt entities
Prebuit entity は、よく使いそうな entity(日付や数値とか)をいい感じに扱うために用意されているものです。
日本語も少しずつ対応が進んでおり、以下でどんなものがあるか確認できます。
すべての作成済みエンティティ - LUIS - Azure AI services | Microsoft Learn
パフォーマンスを上げるのによい手段となるので、用途に合わせてどんなものが使えそうか見ておくとよいです。
4. バージョン管理 / 共同編集 / 公開
バージョン管理
LUIS App にはバージョン管理の機能があります。Train(学習)をした結果が良くなるか悪くなるかはやってみないとわからないことも多々なので、この機能の利用は必須でしょう。
LUIS のバージョン管理の流れは、
- 新たに学習する前に、対象の LUIS の既存バージョンをクローンする
- 学習させたいバージョンをアクティブにして学習させる
です。
今回は初期に作られる「0.1」から新に「0.2」を作る例をさっくりやってみます。
LUIS のポータルで画面右上の方にある SETTING タブをクリックします。
画面下の方に「Versions」がありますので、0.1 の右側にある ・・・ をクリックし、 Clone Version をクリックします。

今回作成するバージョン名と、 Done をクリックすると作成完了です。バージョンは10文字以下の英数字とかが入力可能ですので、数字と、見てわかりやすい名称を入力してもよいかもしれません。

これだけでは、0.1がアクティブです。0.2 を(学習させていい感じになったとして)アクティブにするためには、0.2 の右側の ・・・ をクリックし、Set as active をクリックします。

変更されると、0.2のバージョンの背景色が変わり、画面左上の バージョンもも更新されます。

共同編集
ガチな仕事だと、複数人でこのポータルを共有したいってこともあるでしょう。そんな場合は、作業をしたい人のアカウントを追加できます。
SETTINGS タブに Collaborators があります。ここで共同編集者のメールアドレスを入力して Add collaborator をクリックすればOKです。ドキュメントに書いてないですが、たぶん LUIS にログインできるアカウント(Microsoft Account)である必要があると思います(試してない...)。

ほかに注意点として、オーナー(LUIS Appを作ったアカウント)以外が共同編集者を追加できなかったり、オーナーの権限移譲もできないです。したければエクスポートしてインポートすればよいですね。
Publish (公開)
この LUIS を Publish(公開)する方法です。Publish する = HTTP のエンドポイントを公開することになるので、外部のアプリからアクセスできるようになります。
公開する前に、画面左の Train & Test で Train をして、精度確認のために Test しておくということを終えておきましょう。Train を一度もしていないと、公開できません(そりゃそうだ...)
LUIS ポータルの上部 PUBLISH` タブ をクリックしましょう。

設定する項目は画面の通りですが、Publish to では、「Production」「Staging」が選べます。デフォルトで Staging 環境が用意されているのは便利なところですね。
キーは、最初に取得したキーを追加するまたは選択するなりします。
‘Publish to ....` をクリックすると、LUIS を外部から利用できるようになりますので、ボットとかのアプリから利用できます。
公開後の利用状況とアクティブラーニング
DASHBOARD タブで、アクセス状況が確認できます。
また、BUILD タブ内の Review endpoint utterances では、公開しているエンドポイントにアクセスしてきた文章を見ることができます。
画面の Filter list by intent or entity で適当に(インテントとかで)絞り込み、文章を確認できます。
正しくないインテントやエンティティに割り当てられた文章があれば、この画面からインテントやエンティティを正しいものに割り当てなおし、Add to aligned intent のチェックをクリックすることで学習候補に登録することができます(登録後、Train して反映させます)。

おわりに
ざっくり基本的な内容を解説しましたが、それぞれの機能について細かい情報は本家のドキュメントを参考にしましょう♪
Language Understanding (LUIS) のドキュメント - Azure AI services | Microsoft Learn