AI-102 学習メモ (9) : Azure AI 言語を使用して、言語理解モデルを実装して管理する

# はじめに
この投稿は AI-102: Microsoft Azure AI エンジニア の学習をした内容のメモです。

投稿の一覧は以下のリンク先にあります。

https://qiita.com/atsmin77/items/5235dfe16ad1bed065ca

# 前の投稿

https://qiita.com/atsmin77/items/47afd9e2893a6f59ec8f

# 会話言語理解

会話言語理解を利用すると、あらかじめ学習した内容をもとに自然言語を理解し、入力の意図を予測するモデルを作成することができます。モデルはチャットボットなどに利用することができます。

https://learn.microsoft.com/ja-jp/azure/ai-services/language-service/conversational-language-understanding/overview

[Azure Language Studio](https://language.cognitive.azure.com/) から実際に言語理解モデルを作成してみます。

## Azure AI Language リソースを指定

[前回](https://qiita.com/atsmin77/items/018a7fe76c753f71455f#azure-ai-language-%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9-%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AE%E4%BD%9C%E6%88%90) と同様に、使用する Azure Language Service リソースを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/7c679a00-733f-1b68-79b2-1fc2e4cbc2e0.png)

## 会話言語理解プロジェクトの作成

[Understand questions and conversational language] - [Conversational language understanding] を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/d764f02b-dfa1-fc7e-da40-521f6d1ff1d9.png)

プロジェクト作成ウィンドウが開くので、名前と言語を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/adf41881-85e2-f051-d11c-1815ba9148d1.png)

言語理解モデルでは、以下のように**意図**と**発話**を追加してきます。

* 意図：入力されたテキストを基に予測する意図です
  * 挨拶
  * ピザを注文
  * ... など
* 発話：モデルに学習させる、意図に関連するテキストの例です
   * こんにちは
   * ピザをください
   * ... など

### 意図を追加

言語理解プロジェクトの [+Add] ボタンからモデルに予測させたい意図を追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/767262ec-9b43-32d6-05e0-359c71ad71ab.png)

### 発話の追加

意図を追加したら、次に意図に関連するテキスト（発話）の例を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/d69785cc-8513-0a2f-7a10-0fb4b19937cd.png)

以下では「ピザを注文」という意図の発話として、「ピザをください」というテキストを登録しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/3d76e585-1610-6598-22b5-149ca5b10afb.png)

### エンティティを追加

テキストの中の商品名、サイズ、数量といった情報を**エンティティ**として登録すると、テキストからエンティティを抽出することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/60c8eb57-a9dd-87c1-def3-12f783a379e1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/9d20d01d-9eff-5511-4dd4-98d01a70c55e.png)

エンティティには以下の種類があります。
| 名前 | 説明 |
|:-:|:-:|
| Learned | 入力したテキストとエンティティの例をモデルが学習します。  |
| List | 指定したテキストと完全に一致する単語を抽出します。 |
| Prebuilt | あらかじめ学習済みモデルによってエンティティを抽出します。  |
| Regix | 正規表現パターンによってエンティティを抽出します。  |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/dd781467-36f9-8b1d-c681-f7896b935ec0.png)

https://learn.microsoft.com/ja-jp/azure/ai-services/LUIS/concepts/entities

### モデルのトレーニング

意図、発話、エンティティが設定出来たら、モデルをトレーニングします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/35a8105c-9cd9-c78f-bf18-96c60cc1e329.png)

::: note warn
検証したところ、なぜかモデルの訓練でエラーになってしまっため、以降の検証は行えていません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/5e732518-1f83-68df-992b-62cea6e62d39.png)
:::

### モデルのデプロイ

トレーニングが終わったら、モデルを利用することができるようデプロイします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/7ae22aa2-c151-c14a-e2aa-e96da2e1e135.png)

### モデルのテスト

デプロイが完了すると、モデルを利用することができるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/0674dbaa-e2c6-f1b3-3c46-c1cf7dd08c66.png)

#### コンテナからの利用

作成したモデルは Docker コンテナとしてオンプレミスからも利用できます

https://learn.microsoft.com/ja-jp/azure/ai-services/luis/luis-container-howto?tabs=v3

# 次の投稿

https://qiita.com/atsmin77/items/93b5dcc799ab13b3bac2