固有表現抽出 (NER) の介入では、認識結果を修正し、エンティティの優先度を調整できます。デフォルトの NER 結果が不正確な場合は、NER の介入辞書を使用して修正できます。
基本概念
NER 介入
NER の介入辞書を作成してクエリ分析に適用することで、NER 結果を修正できます。セマンティックエンティティはアナライザーと密接に関連しているため、介入辞書を作成する際にはアナライザーを選択する必要があります。クエリ分析の設定では、辞書のアナライザーがインデックスで使用されているアナライザーと一致する場合にのみ、その辞書を使用できます。
-
NER の介入辞書を作成する際、特化モデルアナライザーは専用アプリケーションでのみ設定できます。
-
辞書内のエントリでは、完全一致または部分一致を選択できます。
-
各介入辞書には、最大 1,000 個の介入エントリを含めることができます。
-
介入エントリを追加する際、介入クエリは大文字を小文字に変換し、全角文字を半角文字に変換して正規化する必要があります。正規化しない場合、エントリは追加できますが、検索時に有効になりません。
-
クエリ分析で NER の介入辞書を設定する際、検索クエリ内のスペースを無視するかどうかを選択できます。
-
アナライザーのアップグレード後など、一部のケースでは、検索クエリの形態素解析結果が介入エントリ作成時に生成された結果と異なる場合があります。このような場合、介入は失敗し、検索時にエラーコード 6612 が返されます。このエラーが発生した場合は、コンソールで介入エントリを修正する必要があります。
エンティティ優先度の介入
OpenSearch には、ビジネスニーズに基づいて調整できる、デフォルトのエンティティ優先度設定が用意されています。この設定は、クエリリライトルールに影響します。
-
検索クエリが複数の介入エントリに一致する場合、マッチの重みが大きいエントリが優先されます。
-
マッチの重みが同じ場合、クエリ内で先に出現するエントリが優先されます。
-
マッチ位置も同じ場合、セマンティックタームが多いエントリが優先されます。
-
エンティティ優先度を設定する際、高優先度と中優先度の両方を空にすることはできません。両方とも空にすると、NER ベースのクエリリライト機能が機能しなくなります。
-
各エンティティには、1つの優先度レベルのみ設定できます。
使用方法
介入辞書を作成することで、NER の結果を手動で修正できます。このプロセスは通常、4 つの手順で構成されます。
-
NER の介入辞書を作成します。
検索アルゴリズムセンター > 検索設定 > 辞書管理に移動します。表示されたページで、右上隅の [作成] をクリックします。辞書タイプを選択し、名前を指定します。辞書が作成されると、辞書リストに表示されます。 -
介入エントリを追加・管理します。 辞書が作成されたら、その名前をクリックするか、リストの [管理] をクリックして詳細ページに移動します。このページで、介入エントリを追加および管理できます。
-
介入辞書を使用します。 辞書を作成してエントリを追加したら、アプリケーションのクエリ分析で辞書を選択できます。
-
辞書をテストし、デプロイします。 クエリ分析ルールに辞書を適用したら、検索パフォーマンスをテストして期待どおりの結果が得られることを確認してから、本番環境にデプロイします。
ウォークスルー
シナリオ:E コマースのショッピングガイドサービスが、OpenSearch アプリケーションで NER 機能を有効にしたクエリ分析ルールを使用しています。しかし、本番環境でバッドケースが発生し、介入が必要になりました。
バッドケース:ユーザー クエリ「Chanel cushion」に対して、デフォルトの固有表現抽出 (NER) は「Chanel」を「一般ターム」として、「cushion」を「material」として分類します。その結果、クエリは title:'cushion' RANK title:'Chanel' にリライトされます。しかし、ビジネスの観点からは、「Chanel」は一般タームではありません。問題診断:「Chanel」はビジネス固有の固有名詞であり、NER の介入が必要です。
解決策:NER の新しい介入辞書を作成し、本番環境で使用されているクエリ分析ルールに適用します。
手順:
-
コンソールで、[検索アルゴリズムセンター] > [検索設定] > [辞書管理] に移動し、[作成] をクリックします。
[名前] を入力します。[辞書タイプ] で、[エンティティ認識] を選択します。[アナライザータイプ] で、クエリ分析で設定されているアナライザーに基づいて [組み込みアナライザー/カスタムアナライザー] を選択します。[関連付けられたアナライザー] のドロップダウンリストには、互換性のあるアナライザーが自動的にフィルタリングされて表示されます。なお、NER は [E コマース形態素解析] タイプのアナライザーに対してのみ設定できる点にご注意ください。
クエリ分析で設定されているインデックスが特化モデルアナライザーを使用している場合は、[アナライザータイプ] を [特化モデルアナライザー] に設定します。[インスタンス] で、[Ha3 エンジン] と対応する [アプリケーション名] を選択します。[関連付けられたアナライザー] がクエリ分析設定のアナライザーと一致していることを確認してください。
-
新しく作成した介入辞書に、介入エントリを追加 します。クエリを入力し、システムの認識結果を修正します。
元の誤った認識結果:
クエリ
Chanel cushionに対して、システムは Chanel を 一般ターム として、cushion を material として識別します。介入後の結果:クエリChanel cushionに対して、[システム認識結果を取得] をクリックすると、システムはエンティティ Chanel を ブランド として、cushion を material として識別します。介入辞書が 特化モデルアナライザー に基づいている場合、介入エントリを追加する際にアナライザー バージョンを選択する必要があります。このバージョンは、特化検索モデルで使用されるモデルバージョンに対応します。
重要[介入タイプ] で、[完全一致] は、入力クエリが介入クエリと完全に一致する場合にのみ介入が適用されることを意味します。[部分一致] は、入力クエリに介入クエリが含まれている場合に介入が適用されることを意味します。
-
クエリ分析ページで、新しく作成した介入辞書を非本番環境のクエリ分析ルールに適用して、その効果をテストします。
[クエリ分析設定] リストで、対象の非本番環境クエリ分析ルールを見つけ、[操作] 列の [設定] をクリックします。設定ページで、[エンティティ認識] チェックボックスをオンにします。[介入辞書] のドロップダウンリストから、[dic_entity] を選択します。[スペースを無視] を [はい] に設定し、[OK] をクリックします。
重要[スペースを無視] 機能は、NER の介入を実行する際にクエリ内のスペースを無視するかどうかを指定します。この機能はデフォルトで無効になっています。例: 入力クエリが「dress women」で、介入エントリが「dresswomen」の場合、「はい」を選択すると介入が適用されます。「いいえ」を選択した場合、介入は実行されません。
-
検索テストで期待どおりの結果が得られます(「Chanel cushion」に関するドキュメントが取得されます)。
検索テストページで、[query] フィールドに
title:'Chanel cushion'を入力し、[qp] パラメータにtest_entityを設定します。検索後、実際のクエリは(name:"Chanel" AND name:"cushion")にリライトされます。これは、クエリ分析プラグインが有効になり、一致するドキュメント「Chanel New Water-Gel Jelly Cushion Foundation BB Cream」が 1 件正常に返されたことを示します。