次の方法で共有


Language Understanding (LUIS) から Conversational Language Understanding (CLU) に移行する

Conversational Language Understanding (CLU) は、Azure AI Language におけるクラウドベースの AI オファリングです。 これは最新世代の Language Understanding (LUIS) であり、以前に作成された LUIS アプリケーションとの下位互換性を提供します。 CLU は、最新の機械学習インテリジェンスを採用して、ユーザーが会話の発話における意図とエンティティを予測するためのカスタム自然言語理解モデルを構築できるようにします。

CLU は、LUIS に比べて次の利点を備えています。

  • 最新の機械学習モデルを使用して精度を向上させて、意図の分類とエンティティの抽出を改善しました。 LUIS では、意図とエンティティの特定の概念を一般化するためのより多くの例が必要になりましたが、CLU の高度な機械学習により、必要なデータが少なくなることで顧客の負担が軽減されます。
  • モデルの学習とトレーニングに対する多言語サポート。 1 つの言語でプロジェクトをトレーニングし、96 の言語全体で意図とエンティティをすぐに予測します。
  • オーケストレーション ワークフローを使用したさまざまな CLU とカスタム質問と回答プロジェクトとの容易な統合。
  • デプロイ前のモデル パフォーマンス評価に Language Studio と API を使用して、エクスペリエンス内にテスト データを追加する機能。

開始するには、 CLU を直接使用 するか、 LUIS アプリケーションを移行します

LUIS と CLU の比較

次の表では、LUIS と CLU の特徴を並べて比較しています。 また、CLU に移行した後の LUIS アプリケーションの変更点が強調表示されています。 変更点の詳細を確認するには、リンクされた概念を選択してください。

LUIS の特徴 CLU の特徴 移行後の処理
機械学習エンティティと構造化された ML エンティティ 学習エンティティ コンポーネント サブエンティティのない機械学習エンティティは、CLU エンティティとして転送されます。 構造化 ML エンティティは、リーフ ノード (独自のサブエンティティを持たない最下位レベルのサブエンティティ) のみを CLU のエンティティとして転送します。 CLU のエンティティの名前は、親と連結されたサブエンティティの名前です。 例: Order.Size
リスト、正規表現、および事前構築済みエンティティ リスト、正規表現、および事前構築済みのエンティティ コンポーネント リスト、正規表現、および事前構築済みエンティティは、エンティティの種類に基づいて設定されたエンティティ コンポーネントを持つエンティティとして CLU で転送されます。
Pattern.Any エンティティ 現在、利用できません Pattern.Any エンティティが削除されます。
アプリケーションごとに 1 つのカルチャ 多言語モデルでは、プロジェクトごとに複数の言語が有効になります。 プロジェクトの主な言語は、LUIS アプリケーション カルチャとして設定されます。 プロジェクトは、さまざまな言語に拡張するようにトレーニングできます。
エンティティのロール ロールは不要になりました。 エンティティ ロールはエンティティとして転送されます。
設定: 句読点の正規化、分音記号の正規化、単語形式の正規化、すべてのトレーニング データの使用 設定は不要になりました。 設定は転送されません。
パターンとフレーズ リストの特徴 パターンとフレーズ リストの特徴は不要になりました。 パターンとフレーズ リストの機能は転送されません。
エンティティの特徴 エンティティ コンポーネント エンティティに特徴として追加されたリストエンティティまたは事前構築済みエンティティは、追加されたコンポーネントとしてそのエンティティに転送されます。 エンティティ機能 は意図に対して転送されません。
意図と発話 意図と発話 すべての意図と発話が転送されます。 発話には、転送されたエンティティのラベルが付けられます。
アプリケーション GUID プロジェクト名 アプリケーション名を使用して、移行するアプリケーションごとにプロジェクトが作成されます。 CLU では、アプリケーション名内のすべての特殊文字が削除されます。
バージョン管理 トレーニングを行うたびに、モデルが作成され、プロジェクトのバージョンとして機能します。 選択したアプリケーション バージョンのプロジェクトが作成されます。
バッチ テストを使用した評価 テスト セットを使用した評価 テスト データセットを追加 する必要があります。
LUIS リソースのロールベースのアクセス制御 (RBAC) 言語リソースに使用できるロールベースのアクセス制御 (RBAC) 言語リソースの RBAC は、移行後に手動で追加する必要があります。
単一トレーニング モード 標準および高度なトレーニング モード アプリケーションの移行後にトレーニングが必要です。
2 つの発行スロットとバージョンの発行 カスタム名前付けを使用する 10 個のデプロイ スロット デプロイは、アプリケーションの移行とトレーニングの後に必要です。
.NET、Python、Java、および Node.js での LUIS オーサリング API と SDK のサポート CLU オーサリング REST API 詳細については、CLU オーサリング API に関するクイック スタートの記事を参照してください。 リファクタリングは、CLU オーサリング API を使用するために必要です。
.NET、Python、Java、および Node.js での LUIS ランタイム API と SDK のサポート CLU ランタイム API.NETPython に対する CLU ランタイム SDK のサポート。 詳細については、API の呼び出し方法に関するページを参照してください。 リファクタリングは、CLU ランタイム API 応答を使用するために必要です。

LUIS アプリケーションを移行する

LUIS ポータルまたは REST API を使用して LUIS アプリケーションを移行するには、次の手順を使用します。

LUIS ポータルを使用して LUIS アプリケーションを移行する

LUIS ポータルを使用して移行を開始するには、以下の手順を実行します。

  1. LUIS ポータルにログインしたら、画面の上部にあるバナーのボタンをクリックして移行ウィザードを起動します。 移行により、選択した LUIS アプリケーションが CLU にコピーされます。

    LUIS ポータルの移行バナーを示すスクリーンショット。

    [移行の概要] タブでは、会話言語理解とその利点について簡単に説明しています。 [次へ] をクリックして続行します。

    [移行の概要] ウィンドウを示すスクリーンショット。

  2. LUIS アプリケーションを移行する先の言語リソースを決定します。 言語リソースを既に作成している場合は、Azure サブスクリプションの後に言語リソースを選択し、[次へ] を選択します。 言語リソースがない場合は、新しい言語リソースを作成するリンクをクリックします。 その後、リソースを選択し、[次へ] を選択します。

    リソース選択ウィンドウを示すスクリーンショット。

  3. 移行するすべての LUIS アプリケーションを選択し、それぞれのバージョンを指定します。 [次へ] を選択します。 アプリケーションとバージョンを選択すると、LUIS アプリケーションから引き継がれない機能を通知するメッセージが表示されます。

    注意

    特殊文字は、会話言語の理解ではサポートされていません。 選択した LUIS アプリケーション名のすべての特殊文字は、移行された新しいアプリケーションで削除されます。 アプリケーション選択ウィンドウを示すスクリーンショット。

  4. 言語リソースと LUIS アプリケーションの選択内容を確認します。 [完了] をクリックしてアプリケーションを移行します。

  5. ポップアップ ウィンドウを使用すると、アプリケーションの移行状態を追跡できます。 移行を開始していないアプリケーションの状態は [ 未開始] です。 移行を開始したアプリケーションの状態は [進行中] になり、状態の移行が完了すると [成功] になります。 失敗したアプリケーションでは、移行プロセスを繰り返す必要があります。 すべてのアプリケーションの移行が完了したら、[完了] を選択します。

    アプリケーション移行の進行状況ウィンドウを示すスクリーンショット。

  6. アプリケーションが移行したら、次の手順を実行できます。

よく寄せられる質問

どの LUIS JSON バージョンが CLU でサポートされますか?

CLU では、モデル JSON バージョン 7.0.0 がサポートされます。 JSON 形式が古い場合は、最初に LUIS にインポートしてから、最新バージョンの LUIS からエクスポートする必要があります。

CLU でエンティティはどのように異なりますか?

CLU では、1 つのエンティティに、抽出方法が異なる複数のエンティティ コンポーネントを含めることができます。 これらのコンポーネントは、定義できるルールを使用して組み合わされます。 使用可能なコンポーネントは次のとおりです。

  • 学習済み: LUIS の ML エンティティに相当し、提供されたラベルのコンテンツとコンテキストに基づいてエンティティを予測する機械学習モデルをトレーニングするためにラベルが使用されます。
  • リスト: LUIS のリスト エンティティと同様に、リスト コンポーネントは一連のシノニムと完全に一致し、リスト キーと呼ばれる正規化された値にマップします。
  • 事前構築済み: 事前構築済みコンポーネントでは、LUIS と CLU の両方で使用できる一般的な種類の事前構築済みエクストラクターを使用してエンティティを定義できます。
  • 正規表現: 正規表現コンポーネントは、LUIS の正規表現エンティティとまったく同じように、正規表現を使用してカスタム定義パターンをキャプチャします。

LUIS のエンティティは、CLU で同じ名前のエンティティとして転送され、同等のコンポーネントが転送されます。

移行後、構造化された機械学習リーフ ノードと下位レベルのサブエンティティは新しい CLU モデルに転送されますが、すべての親エンティティと上位レベルのエンティティは無視されます。 エンティティの名前は、下位レベルのエンティティの名前を親エンティティと連結したものです。

例:

LUIS エンティティ:

  • ピザ注文
    • Topping
    • サイズ

CLU へ移行された LUIS エンティティ:

  • ピザオーダー.トッピング
  • Pizza Order.Size

また、同じ文字スパンに対して CLU で 2 つの異なるエンティティにラベルを付けることはできません。 CLU の学習済みコンポーネントは相互に排他的であり、学習されたコンポーネントに対してのみ重複する予測を提供しません。 LUIS アプリケーションを移行する場合、重複したエンティティ ラベルは最長のラベルを保持し、他のラベルを無視しました。

エンティティ コンポーネントの詳細については、「エンティティ コンポーネント」を参照してください。

エンティティのロールはどのように CLU に転送されますか?

あなたの役割は、それぞれのラベル付きの発話と共に、個別のエンティティとして転送されます。 各ロールのエンティティの種類によって、設定されるエンティティ コンポーネントが決まります。 たとえば、リストエンティティの役割は、役割と同じ名前のエンティティとして移行され、そのエンティティにはリストコンポーネントが設定されます。

エンティティの特徴は CLU でどのように転送されますか?

意図の機能として使用されるエンティティは転送されません。 他のエンティティの特徴として使用されるエンティティは、関連するコンポーネントに入力されます。 たとえば、 SizeList という名前のリスト エンティティが 、Size という名前の機械学習エンティティの機能として使用された場合、 Size エンティティは、リスト コンポーネントに追加された SizeList のリスト値と共に CLU に転送されます。 事前構築済みエンティティと正規表現エンティティにも同じことが当てはまります。

CLU でエンティティ信頼度スコアはどのように異なりますか?

抽出されたエンティティには 100% 信頼度スコアがあるため、エンティティ間で決定を行うためにエンティティ信頼度スコアを使用しないでください。

会話言語理解はどのように多言語ですか?

会話言語理解プロジェクトでは、さまざまな言語で発話を受け入れます。 さらに、1 つの言語でモデルをトレーニングし、それを拡張して他の言語で予測することもできます。

例:

トレーニング発話 (英語): How are you?

ラベル付き意図: あいさつ

ランタイム発話 (フランス語): Comment ça va?

予測された意図: あいさつ

CLU の精度は LUIS よりもどのように優れていますか?

CLU では、最新のモデルを使用して、意図の分類とエンティティ抽出のさまざまなモデルの機械学習パフォーマンスを向上させます。

これらのモデルはわずかな違いを認識せず、句読点の正規化分音記号の正規化単語形式の正規化すべてのトレーニング データの使用の設定の必要がなくなります。

さらに、新しいモデルでは、語句リスト機能はサポートされていません。精度を高めるために、意味的に類似した単語を提供するためにユーザーからの補足情報が不要になったためです。 パターンは、新しいモデル パラダイムでは必要ないルールベースの照合手法を使用して、意図の分類を改善するためにも使用されました。 以下の質問では、これを詳しく説明しています。

LUIS で使用している機能が存在しなくなった場合はどうすればよいですか?

LUIS には、CLU で使用できなくなったいくつかの機能があります。 これには、パターンと pattern.any エンティティ、および構造化エンティティを備えた、特徴エンジニアリングを行う機能が含まれます。 LUIS でこれらの特徴に依存していた場合は、次のガイダンスを使用してください。

  • パターン: 正規表現テンプレートの発話を定義することにより意図の分類を支援するために、LUIS にパターンが追加されました。 これには、(発話の例がない) パターンのみの意図を定義する機能が含まれていました。 CLU は、最先端のモデルを使用して一般化できます。 特定のパターンと CLU の意図に一致する発話をいくつか提供できます。パターン テンプレートの発話を必要とせずに、異なるパターンを最上位の意図として分類する可能性があります。 これにより、LUIS で制限されていたこれらのパターンを作成する要件が簡素化され、意図分類エクスペリエンスが向上します。

  • フレーズ リストの特徴: 特徴を関連付ける機能は、主に、使用する主な要素/特徴を強調表示することで意図の分類を支援するために生じました。 CLU で使用されるディープなモデルには、言語に固有の要素を識別する機能が既に備わっているため、これが不要になりました。 これらの特徴を削除しても、モデルの分類能力には影響しません。

  • 構造化エンティティ: 構造化エンティティを定義する機能は、主に発話の複数レベルの解析を可能にするためのものでした。 サブエンティティの可能性が異なると、LUIS では、エンティティのすべての異なる組み合わせを定義し、例としてモデルに提示する必要があります。 CLU では、重複する学習コンポーネントはサポートされていないため、これらの構造化エンティティはサポートされなくなりました。 これらの構造化された抽出を処理するには、いくつかの方法が考えられます。

    • あいまいでない抽出: ほとんどの場合、リーフ エンティティの検出で、全スパン内の必須項目を十分に理解できます。 たとえば、送信元と送信先 ("ロンドンからニューヨークまで"、または "自宅から職場まで") にわたる "移動" などの構造化されたエンティティは、送信元と送信先について予測される個々のスパンで識別できます。 個々の予測として存在することにより、"移動" エンティティが通知されます。
    • あいまいな抽出: 異なるサブエンティティの境界が明確でない場合。 例として、「ペパロニピザと余分なチーズベジタリアンピザを注文したい」を見てみましょう。 異なるピザの種類とトッピングの変更を抽出できますが、コンテキストなしで抽出すると、余分なチーズが追加される場所があいまいになります。 この場合、スパンの範囲はコンテキストベースであり、これを判断するには ML が必要になります。 あいまいな抽出の場合は、次のいずれかの方法を使用できます。
  1. 同じエンティティ内の異なるエンティティ コンポーネントにサブエンティティを結合します。

例:

LUIS の実装:

  • ピザの注文 (エンティティ)
    • サイズ (サブエンティティ)
    • 数量 (サブエンティティ)

CLU の実装:

  • ピザの注文 (エンティティ)
    • サイズ (リスト エンティティ コンポーネント: 小、中、大)
    • 数量 (事前構築済みエンティティ コンポーネント: 数)

CLU では、サイズと数量を含む "ピザの注文" のスパン全体にラベルを付けます。これにより、サイズのリスト キーと、同じエンティティ オブジェクト内の数量の数値と一緒にピザの注文が返されます。

  1. エンティティに複数のレベルの深さが含まれるもっと複雑な問題の場合、エンティティ構造の深さのレベルごとに 1 つのプロジェクトを作成できます。 これにより、次のオプションが提供されます。
  • 発話を各プロジェクトに渡します。
  • 各プロジェクトの分析を CLU を処理するステージで結合します。

この概念の詳細な例については、GitHub で入手できるピザのサンプル プロジェクトを確認してください。

CLU でバージョンを管理するにはどうすればよいですか?

CLU では、モデルのトレーニングに使用されるデータ資産を保存します。 モデルの資産をエクスポートしたり、任意の時点でプロジェクトに読み込むことができます。 したがって、モデルはプロジェクトの別々のバージョンとして機能します。

Language Studio またはプログラムを使用して CLU プロジェクトをエクスポートし、異なるバージョンの資産をローカルに格納できます。

CLU の分類が LUIS と異なるのはなぜですか? None 分類はどのように機能しますか?

CLU では、二項分類ではなく、複数分類を使用して、異なるモデルのトレーニング方法を提示します。 その結果、スコアの解釈が異なり、トレーニング オプションによっても異なります。 より良い結果を得る可能性は高くなりますが、スコアの違いを観察し、意図の予測を受け入れるための新しいしきい値を決定する必要があります。 プロジェクト設定で None 意図の信頼度スコアしきい値を簡単に追加できます。 これにより、上位の意図が指定された信頼度スコアのしきい値を超えていなかった場合、上位の意図として None が返されます。

CLU モデルには LUIS よりも多くのデータが必要ですか?

新しい CLU モデルでは、LUIS よりも言語のセマンティックの理解が深まり、データを大幅に削減してモデルが一般化するのに役立ちます。 データの量を減らすことを目指すべきではありませんが、LUIS と比較して CLU のバリエーションとシノニムに対するパフォーマンスと回復性の向上が想定されます。

LUIS アプリを移行しない場合、アプリは削除されますか?

既存の LUIS アプリケーションは、2025 年 10 月 1 日まで使用できます。 その後、これらのアプリケーションを使用できなくなり、サービス エンドポイントは機能しなくなり、アプリケーションは完全に削除されます。

.LU ファイルは CLU でサポートされますか?

CLU では JSON 形式のみがサポートされます。 .LU ファイルを LUIS にインポートし、JSON 形式でエクスポートするか、アプリケーションに上記の移行手順を実行できます。

CLU のサービスの制限とは何ですか?

詳細については、サービス制限に関する記事を参照してください。

アプリケーションを LUIS から CLU に移行する場合、コードをリファクタリングする必要がありますか?

CLU アプリケーションの API オブジェクトは LUIS とは異なるため、コードのリファクタリングが必要です。

LUIS プログラム API と ランタイム API を使用している場合は、同等の API に置き換えることができます。

CLU オーサリング API: "発話の追加"、"エンティティの削除"、"意図の名前変更" などの個々のアクションに対する LUIS 固有の CRUD API の代わりに、CLU では、同じ名前を使用してプロジェクトのコンテンツ全体を置き換えるインポート API を提供します。 サービスで LUIS Programmatic API を使用して他の顧客にプラットフォームを提供していた場合は、この新しい設計パラダイムを検討する必要があります。 "プロジェクトのリスト"、"トレーニング"、"デプロイ"、"削除" など、他のすべての API が使用できます。 "インポート" や "デプロイ" などのアクションの API は、LUIS の同期操作ではなく、非同期操作です。

CLU ランタイム API: 新しい API の要求と応答には、"クエリ"、"予測"、"最上位の意図"、"意図"、"エンティティ" とそれらの値など、多くの同じパラメーターが含まれています。 CLU 応答オブジェクトは、より簡単な方法を提供します。 エンティティ予測は発話テキスト内にあるので提供され、解決キーやリスト キーなどの追加情報は、extraInformationresolution と呼ばれる追加のパラメーターで提供されます。

.NET または Python CLU ランタイム SDK を使用して、LUIS ランタイム SDK を置き換えることができます。 現在、CLU で使用できるオーサリング SDK はありません。

CLU でトレーニング時間はどのように異なりますか? 標準トレーニングと高度なトレーニングの違いは何ですか?

CLU では、英語でトレーニングと学習を行う標準的なトレーニングが提供されており、LUIS のトレーニング時間に相当します。 また、高度なトレーニングも提供されます。トレーニングが他のサポートされているすべての言語に拡張されるため、かなり時間が長くなります。 トレーニング API は引き続き非同期プロセスであり、ソリューションに使用する DevOps プロセスの変更を評価する必要があります。

LUIS と比較して、CLU でエクスペリエンスはどのように変わりましたか? 開発ライフサイクルはどのように違いますか?

LUIS では Build-Train-Test-Publish を行いますが、CLU では Build-Train-Evaluate-Deploy-Test を行います。

  1. ビルド: CLU では、トレーニングの前に意図、エンティティ、発話を定義できます。 さらに、CLU では、モデル評価に使用するアプリケーションをビルドするときに "テスト データ" を指定する機能も用意されています。 評価では、テスト データに対するモデルのパフォーマンスが評価され、精度、再現率、F1 メトリックが提供されます。
  2. トレーニング: トレーニングのたびに名前を持つモデルを作成します。 既にトレーニングされたモデルを上書きできます。 "標準" トレーニングまたは "高度な" トレーニングのいずれかを指定し、テスト データを評価に使用するかどうか、またはトレーニングから除外してテスト データとして使用するトレーニング データの割合を決定できます。 トレーニングが完了したら、モデルが外部でどの程度うまく機能しているかを評価できます。
  3. デプロイ: トレーニングが完了し、名前を持つモデルが完成したら、予測のためにデプロイできます。 デプロイにも名前が付けられ、モデルが割り当てられます。 同じモデルに対して複数のデプロイを行うことができます。 デプロイは別のモデルで上書きすることができ、プロジェクト内の他のデプロイとモデルをスワップすることもできます。
  4. テスト: デプロイが完了したら、デプロイ エンドポイントを通じた予測に使用できます。 [Test deployment] (デプロイのテスト) ページで、スタジオでテストすることもできます。

このプロセスは LUIS とは対照的です。LUIS では、アプリケーション ID がすべてにアタッチされ、ステージング スロットまたは運用スロットにアプリケーションのバージョンをデプロイしました。

これは、使用する DevOps プロセスに影響します。

CLU にはコンテナー サポートがありますか?

いいえ。CLU をコンテナーにエクスポートすることはできません。

移行後に LUIS アプリケーションに CLU で名前を付ける方法

LUIS アプリケーション名の特殊文字はすべて削除されます。 クリアされた名前の長さが 50 文字を超える場合、余分な文字は削除されます。 特殊文字を削除した後の名前が空の場合 (LUIS アプリケーション名が @@された場合など)、新しい名前は 無題になります。 同じ名前の会話言語理解プロジェクトが既にある場合、移行された LUIS アプリケーションには最初の重複に対して _1 が追加され、後続の重複ごとに 1 ずつ増加します。 新しい名前の長さが 50 文字で、名前を変更する必要がある場合は、最後の 1 文字または 2 文字を削除して数字を連結でき、50 文字の制限内に収まるようにします。

LUIS Q&A からの移行

この記事で回答が得られない質問がある場合は、Microsoft Q&A スレッドで質問することを検討してください。

次のステップ