言語理解について調べる

このラボを完了するには、管理者アクセス権が与えられている Azure サブスクリプションが必要です。

コンピューターで AI を使用して、自然言語で話されたコマンドや入力されたコマンドを理解できるようにする必要性が高まっています。 たとえば、「switch on the light (照明をつけて)」や「put the fan on (ファンをつけて)」など、音声コマンドを使用して自宅のデバイスを制御できるホーム オートメーション システムを導入し、AI 搭載のデバイスがコマンドを理解して、適切なアクションを実行できるようにしたいと思うかもしれません。

会話言語理解サービスの機能をテストするには、Cloud Shell で実行されるコマンドライン アプリケーションを使用します。 Web サイトや電話アプリなど、実際のソリューションにも同じ原則と機能が適用されます。

“言語サービス” リソースを作成する**

言語サービス リソースを作成することによって、会話言語理解サービスを使用できます。

言語サービス リソースをまだ作成していない場合は、Azure サブスクリプションで作成します。

  1. 別のブラウザー タブで Azure portal (https://portal.azure.com) を開き、Microsoft アカウントでサインインします。

  2. [+リソースの作成] ボタンをクリックして、”言語サービス” を検索し、次の設定を使用して言語サービス リソースを作成します。**
    • 追加機能の選択: “既定の機能をそのまま使って、[続行] をクリックしてリソースを作成します
    • [サブスクリプション]: お使いの Azure サブスクリプション
    • [リソース グループ]: 一意の名前のリソース グループを選択するか、作成します
    • リージョン: 米国東部 2
    • [名前]: 一意の名前を入力します
    • 価格レベル: S (1 分あたり 1,000 通話)
    • このボックスをオンにすることで、責任ある AI 通知の条項を承認し、同意したことを確認します: 選択済み。
  3. リソースを確認して作成し、デプロイが完了するまで待ちます。

会話言語理解アプリを作成する

会話言語理解を使って自然言語を理解できるようにするには、アプリを作成し、次にエンティティ、意図、発話を追加して、アプリで実行するコマンドを定義します。

  1. 新しいブラウザー タブで Language Studio ポータル (https://language.azure.com) を開き、お使いの Azure サブスクリプションに関連付けられている Microsoft アカウントを使ってサインインします。

  2. 言語リソースの選択を求めるメッセージが表示されたら、次の設定を選択します。
    • Azure ディレクトリ: お使いのサブスクリプションを含む Azure ディレクトリ。
    • Azure サブスクリプション: ご利用の Azure サブスクリプション
    • 言語リソース: 先ほど作成した言語リソース。

    ヒント 言語リソースの選択を求めるダイアログが表示 “されない” 場合、お使いのサブスクリプションに複数の言語リソースが存在していることが原因である場合があります。その場合は、次の操作を行います。**

    1. ページの上部にあるバーで、[設定] (⚙) ボタンをクリックします。
    2. [設定] ページで、[リソース] タブを表示します。
    3. お使いの言語リソースを選択し、[リソースの切り替え] をクリックします。
    4. ページの上部で、[Language Studio] をクリックして、Language Studio のホーム ページに戻ります。
  3. ポータルの上部にある [新規作成] メニューで、[会話言語理解] を選択します。

  4. [プロジェクトの作成] ダイアログ ボックスの [基本情報の入力] ページで、次の詳細を入力し、[次へ] をクリックします。
    • 名前: 一意の名前を作成する
    • 説明: Simple home automation
    • 発話の主要言語: 英語
    • プロジェクトで複数の言語を有効にする: 選択しない**

    プロジェクトの詳細を入力します。

    ヒント “プロジェクト名” を書き留めておいてください。後で使用します。**

  5. [確認と終了] ページで、[作成] をクリックします。

意図、発話、エンティティの作成

“意図” は、実行するアクションです。たとえば、照明のスイッチを入れたり、ファンの電源を切ったりすることができます。** ここでは、2 つの意図を定義します。1 つはデバイスをオンに切り替える意図で、もう 1 つはデバイスをオフに切り替える意図です。 それぞれの意図には、その意図を示すために使用する言語の種類を表すサンプル発話を指定します。

  1. [スキーマ定義] ペインで [意図] が選ばれていることを確認します。次に、[追加] をクリックし、(小文字で) switch_on という名前の意図を追加して、[意図を追加する] をクリックします。

    [スキーマのビルド] ペインの [意図] の下にある [追加] をクリックします。 switch_on 意図を追加し、[意図の追加] を選択します。

  2. switch_on 意図を選択します。 これにより、[データのラベル付け] ページに移動します。 [意図] ドロップダウンで、 [switch_on] を選択します。 switch_on 意図の横に、発話「turn the light on」を入力し、Enter キーを押して、この発話を一覧に送信します。

    発話の下に「turn the light on」と入力して、トレーニング セットに発話を追加します。

  3. 言語サービスでは、言語モデルを十分にトレーニングするために、意図ごとに少なくとも 5 つの異なる発話の例が必要です。 switch_on 意図に、さらに 5 つの発話の例を追加します。
    • 扇風機のスイッチを入れる
    • ファンをオンにする
    • put the light on
    • 照明のスイッチを入れる
    • ファンの電源を入れる
  4. 画面の右側にある [トレーニング用のエンティティのラベル付け] ペインで、[ラベル] を選び、[エンティティの追加] を選択します。 (小文字で) 「device」と入力し、[リスト] を選び、[エンティティの追加] を選択します。

    [トレーニング] パネルの [タグ付けエンティティ] で [タグ] を選択してエンティティを追加し、[エンティティの追加] を選択します。 [エンティティ名] に「device」と入力し、[リスト] を選択してから、[エンティティの追加] を選択します。

  5. “扇風機の電源を入れる” 発話で、”扇風機” という単語を強調表示します。 次に、表示される一覧の Search for an entity ボックスで “デバイス” を選びます。

    発話でファンという単語を強調表示し、[デバイス] を選択します。

  6. すべての発話に対して同じ操作を行います。 残りの ‘‘扇風機’’ または ‘‘照明’’ 発話に、”デバイス” エンティティのラベルを付けます。 完了したら、以下の発話があることを確認して、必ず [変更の保存] を選択します。

    意図 発話 エンティティ
    switch_on 扇風機をオンにする デバイス - “ファンを選択する” **
    switch_on 照明を点ける デバイス - “照明を選択する” **
    switch_on 照明のスイッチを入れる デバイス - “照明を選択する” **
    switch_on 扇風機の電源を入れる デバイス - “ファンを選択する” **
    switch_on ファンのスイッチを入れる デバイス - “ファンを選択する” **
    switch_on 照明の電源を入れる デバイス - “照明を選択する” **

    完了したら、[変更の保存] を選択します。

  7. 左側のペインで、[スキーマ定義] をクリックし、switch_on 意図が一覧表示されていることを確認します。 [追加] をクリックし、(小文字で) switch_off という名前の新しい意図を追加します。

    [スキーマのビルド] 画面に戻り、switch_off 意図を追加します。

  8. switch_off 意図をクリックします。 これにより、[データのラベル付け] ページに移動します。 [意図] ドロップダウンで、 [switch_off] を選択します。 switch_off 意図の横に、発話照明をオフにしてを追加します。

  9. switch_off 意図に、さらに 5 つの発話の例を追加します。
    • 扇風機のスイッチを切る
    • put the fan off
    • 照明を消す
    • 照明の電源を切る
    • ファンのスイッチを切る
  10. 単語の ‘‘照明’’ または ‘‘扇風機’’ に device エンティティのラベルを付けます。 完了したら、以下の発話があることを確認して、必ず [変更の保存] を選択します。

    意図 発話 エンティティ
    switch_off ファンをオフにする デバイス - “ファンを選択する” **
    switch_off 照明をオフにする デバイス - “照明を選択する” **
    switch_off 照明の電源を切る デバイス - “照明を選択する” **
    switch_off 扇風機のスイッチを切る デバイス - “ファンを選択する” **
    switch_off 扇風機のスイッチを切る デバイス - “ファンを選択する” **
    switch_off 照明の電源を切る デバイス - “照明を選択する” **

モデルをトレーニングする

これで、定義した意図とエンティティを使って、アプリの会話言語モデルをトレーニングする準備ができました。

  1. Language Studio の左側で、[ジョブのトレーニング] を選び、[ジョブのトレーニングの開始] を選択します。 次の設定を使用します。
    • 新しいモデルのトレーニング: モデル名を選ぶ**
    • トレーニング モード: 標準トレーニング (無料)
    • データ分割: [テスト セットをトレーニング データから自動的に分割する] を選択し、既定のパーセンテージを保持する
    • ページの下部にある [トレーニング] をクリックします。
  2. トレーニングが完了するまで待ちます。

モデルをデプロイしてテストする

クライアント アプリケーションでトレーニング済みのモデルを使用するには、クライアント アプリケーションが新しい発話を送信できるエンドポイントとしてそのモデルをデプロイする必要があります。そのエンドポイントから、意図とエンティティが予測されます。

  1. Language Studio の左側で、[モデルのデプロイ] をクリックします。

  2. モデル名を選び、[デプロイの追加] をクリックします。 次の設定を使用します。
    • デプロイ名を作成または既存のものを選択する: ‘’ [新しいデプロイ名の作成] を選択します。一意の名前を追加します’‘。
    • トレーニング済みモデルをデプロイ名に割り当てる: ‘‘トレーニング済みモデルの名前を選択します’‘。
    • [デプロイ] をクリックします。

    ヒント “デプロイ名” を書き留めておいてください。後で使用します。**

  3. モデルがデプロイされたら、ページの左側で [デプロイのテスト] をクリックしてから、[デプロイ名] でデプロイ済みモデルを選択します。

  4. 次のテキストを入力し、[テストの実行] を選択します。

    switch the light on

    デプロイしたモデルを選択し、テキストを入力して [テストの実行] を選択して、モデルをテストします。

    返された結果を確認します。予測された意図 (switch_on の必要がある) および予測されたエンティティ (デバイス) と、予測された意図とエンティティに対してモデルで計算された確率を示す信頼度スコアが含まれていることに注意してください。 [JSON] タブには、考えられる各意図の信頼度の比較が表示されます (信頼度スコアが最も高いものが予測された意図です)

  5. テキスト ボックスをクリアし、 [独自のテキストを入力するかテキスト ドキュメントをアップロードする] で次の発話を使用してモデルをテストします。
    • turn off the fan (扇風機の電源を切る)
    • put the light on (照明をオンにする)
    • put the fan off (扇風機をオフにする)

Cloud Shell の実行

では、配置したモデルを試してみましょう。 これを行うには、Azure 上の Cloud Shell で実行されるコマンドライン アプリケーションを使用します。

  1. Language Studio が開かれているブラウザー タブをそのままにして、Azure portal を含むブラウザー タブに戻ります。

  2. Azure portal で、ページの上部の検索ボックスの右側にある [>_] (Cloud Shell) ボタンを選択します。 ボタンをクリックすると、ポータルの下部に Cloud Shell ペインが開きます。

    上部の検索ボックスの右側にあるアイコンをクリックして、Cloud Shell を起動します

  3. Cloud Shell を初めて開くと、使用するシェルの種類 (Bash または PowerShell) を選択するように求められる場合があります。 [PowerShell] を選択します。 このオプションが表示されない場合は、このステップをスキップします。

  4. Cloud Shell のストレージを作成するように求めるメッセージが表示された場合は、サブスクリプションが指定されていることを確認して、[ストレージの作成] を選択します。 その後、ストレージが作成されるのを 1 分程度待ちます。

    確認をクリックしてストレージを作成します。

  5. [Cloud Shell] ペインの左上に表示されるシェルの種類が PowerShell に切り替えられたことを確認します。 Bash の場合は、ドロップダウン メニューを使用して PowerShell に切り替えます。

    PowerShell に切り替えるための左側のドロップダウン メニューを見つける方法

  6. PowerShell が起動するまで待ちます。 Azure portal に次の画面が表示されます。

    PowerShell が起動するまで待ちます。

クライアント アプリケーションを構成して実行する

次に、事前に作成された、クライアント アプリケーションを実行するスクリプトを開いて編集します。

  1. コマンド シェルで、次のコマンドを入力してサンプル アプリケーションをダウンロードし、ai-900 という名前のフォルダーに保存します。

     git clone https://github.com/MicrosoftLearning/AI-900-AIFundamentals ai-900
    

    別のラボで既にこのコマンドを使用して ai-900 リポジトリを複製した場合は、この手順をスキップできます。

  2. ファイルが ai-900 という名前のフォルダーにダウンロードされます。 ここで、このフォルダー内のすべてのファイルを表示して操作します。 シェルに次のコマンドを入力します。

     cd ai-900
     code .
    

    スクリプトにより、次の図のようなエディターが開きます。

    コード エディター。

  3. 左側の [ファイル] ペインで、ai-900 フォルダー内の understand.ps1 ファイルを選択します。 このファイルには会話言語理解モデルを使うコードがいくつか含まれています。

    プログラムを実行する前に変更して保存する必要がある資格情報を囲むボックスが表示されている言語理解ラボのコード。

    コードの詳細についてはあまり気にしないでください。 重要なのは、以下の手順を使用してファイルを変更し、トレーニングした言語モデルを指定することです。

  4. Language Studio を含むブラウザー タブに戻ります。 その後、Language Studio で、[モデルのデプロイ] ページを開き、モデルを選択します。 次に、[予測 URL の取得] ボタンをクリックします。 このダイアログ ボックスでは、次の 2 つの情報を必要とします。
    • モデルのエンドポイント - エンドポイントは、[予測 URL] からコピーできます。
    • モデルのキー - キーは、Ocp-Apim-Subscription-Key パラメーターの値としてサンプル リクエスト内にあり、0ab1c23de4f56gh7i8901234jkl567m8 のようになります。
  5. エンドポイント値をコピーし、Cloud Shell が含まれているブラウザー タブに戻って、コード エディターに貼り付けます。YOUR_ENDPOINT (引用符内) を置き換えてください。 キーにもこのプロセスを繰り返し、YOUR_KEYを置き換えます。

  6. 次に、YOUR_PROJECT_NAME をご自分のプロジェクトの名前に置き換え、YOUR_DEPLOYMENT_NAME をデプロイしたモデルの名前に置き換えます。 最初のコード行は以下のようになるはずです。

     $endpointUrl="https://some-name.cognitiveservices.azure.com/language/..."
     $key = "0ab1c23de4f56gh7i8901234jkl567m8"
     $projectName = "name"
     $deploymentName = "name"
    
  7. エディター ペインの右上の […] ボタンを使用してメニューを開き、[保存] を選択して変更を保存します。 次に、メニューを再度開き、[エディターを閉じる] を選択します。

  8. PowerShell ウィンドウで、次のコマンドを入力してコードを実行します。

     ./understand.ps1 "Turn on the light"
    
  9. 結果を確認します。 アプリは、意図したアクションが「switch on the light (照明をつける)」という予測を行っている必要があります。

  10. 次に、別のコマンドを試してみます。

     ./understand.ps1 "Switch the fan off"
    
  11. このコマンドの結果を確認します。 アプリは、意図したアクションが「switch off the fan (扇風機のスイッチを切る)」という予測を行っている必要があります。

  12. さらにいくつかのコマンドを試してください。モデルでのサポートがトレーニングされていないコマンド、例えば、「Hello (こんにちは)」や「switch on the oven (オーブンのスイッチを入れる)」などです。 通常、アプリはその言語モデルが定義されているコマンドを理解する必要がありますが、他の入力に対して故意に失敗します。

毎回、先頭を ./understand.ps1 にし、その後にフレーズを続ける必要があります。 フレーズは引用符で囲みます。

詳細情報

このアプリでは、言語サービスの会話言語理解の一部の機能しか示されていません。 このサービスで実行できる操作の詳細については、会話言語理解のページを参照してください。