ゼファーネットのロゴ

自動化されたコンテンツエンリッチメントを備えたインテリジェントな検索ソリューションを構築する

日付:

企業に属する非構造化データは増え続けており、顧客や従業員が必要な情報を入手することは困難です。 アマゾンケンドラ は、機械学習(ML)を利用した高精度のインテリジェント検索サービスです。 複数の場所やコンテンツリポジトリに散在している場合でも、探しているコンテンツを簡単に見つけることができます。

Amazon Kendraは、ディープラーニングと読解を活用して正確な回答を提供します。 人間の専門家と対話するようなユーザーエクスペリエンスのための自然言語検索を提供します。 ドキュメントに明確な回答がない場合、または質問があいまいな場合、Amazon Kendraは、ユーザーが選択できる最も関連性の高いドキュメントのリストを返します。

関連するドキュメントのリストを絞り込むために、を割り当てることができます 提供するドキュメントの取り込み時に フィルタリングとファセット Webページの左側にフィルタリングオプションが表示されるAmazon.com小売サイトと同様のエクスペリエンスのための機能。 しかし、元のドキュメントにメタデータがない場合、またはユーザーがこの情報の分類方法を優先する場合はどうなりますか? MLを使用してメタデータを自動的に生成し、コンテンツを充実させ、検索と発見を容易にすることができます。

この投稿では、を使用してメタデータの生成を自動化および簡素化する方法の概要を説明します アマゾンコンプリヘンドメディカル、MLを使用して、医療エンティティや非構造化医療テキストの関係など、ヘルスケアおよびライフサイエンス(HCLS)に関連する洞察を見つける自然言語処理(NLP)サービス。 生成されたメタデータは、次のように取り込まれます。 カスタム属性 ドキュメントと一緒に アマゾンケンドラインデックス。 一般的な情報またはHCLS以外のドメインに関連する情報を含むドキュメントを含むリポジトリの場合、次の方法で同様のアプローチを使用できます。 Amazon Comprehend メタデータの生成を自動化します。

豊富なデータを使用したインテリジェントな検索ソリューションを示すために、にリストされている医薬品のWikipediaページを使用します。 世界保健機関(WHO)必須医薬品のモデルリスト。 このコンテンツを、Amazon Comprehend Medicalを使用して自動的に生成されたメタデータと組み合わせて、統合されたAmazon Kendraインデックスにまとめ、検索可能にします。 あなたは訪問することができます 検索アプリケーション 「大人に推奨されるパラセタモールの投与量は?」など、自分で質問してみてください。 次のスクリーンショットは結果を示しています。

ソリューションの概要

コンテンツの取り込みプロセスでは、カスタムコンテンツの強化にXNUMX段階のアプローチを採用しています。

  1. Amazon Comprehend Medicalを使用して、各ドキュメントのメタデータを特定します。
  2. AmazonKendraインデックスに基づく検索ソリューションでメタデータと一緒にドキュメントを取り込みます。

Amazon Comprehend Medicalは、NLPを使用して、投薬、病状、解剖学的位置、経路と投薬などのエンティティ間の関係、否定などの特性などの医療エンティティを抽出することにより、ドキュメントのコンテンツに関する医学的洞察を抽出します。 この例では、WHO必須医薬品モデルリストの各医薬品のウィキペディアページに、 DetectEntitiesV2操作 カテゴリ内のエンティティを検出するためのAmazonComprehendMedicalの ANATOMY, MEDICAL_CONDITION, MEDICATION, PROTECTED_HEALTH_INFORMATION, TEST_TREATMENT_PROCEDURE, TIME_EXPRESSION。 これらのエンティティを使用して、ドキュメントのメタデータを生成します。

タイプのカスタム属性を定義することにより、AmazonKendraインデックスを準備します STRING_LIST エンティティカテゴリに対応 ANATOMY, MEDICAL_CONDITION, MEDICATION, PROTECTED_HEALTH_INFORMATION, TEST_TREATMENT_PROCEDURE, TIME_EXPRESSION。 ドキュメントごとに、 DetectEntitiesV2 Amazon Comprehend Medicalの操作により、エンティティの分類されたリストが返されます。 十分に高い信頼スコア(このユースケースでは0.97より大きい)を持つこのリストの各エンティティは、そのカテゴリに対応するカスタム属性に追加されます。 検出されたすべてのエンティティがこのように処理された後、入力された属性を使用して、 そのドキュメントに対応するJSONファイル。 Amazon Kendraには、属性の上限が10文字です。 STRING_LIST タイプ。 この例では、処理されたドキュメントで発生頻度が最も高い上位10個のエンティティを取得します。

すべてのドキュメントのメタデータJSONファイルが作成された後、それらはにコピーされます。 Amazon シンプル ストレージ サービス (Amazon S3)Amazon Kendraインデックスへのデータソースとして設定されたバケット。データソースの同期が実行され、メタデータとともにインデックス内のドキュメントが取り込まれます。

前提条件

この投稿のソリューションを展開して操作するには、次のものがあることを確認してください。

アーキテクチャ

私たちは、使用 AWS CloudFormation template medkendratemplate.yaml タイプのカスタム属性を使用してAmazonKendraインデックスをデプロイする STRING_LIST エンティティカテゴリに対応 ANATOMY, MEDICAL_CONDITION, MEDICATION, PROTECTED_HEALTH_INFORMATION, TEST_TREATMENT_PROCEDURE, TIME_EXPRESSION.

次の図は、ソリューションアーキテクチャを示しています。

このアーキテクチャに基づいて、ソリューションを構築して使用する手順は次のとおりです。

  1. CloudShellでは、Bashスクリプトが getpages.sh 薬のウィキペディアページをダウンロードし、テキストファイルとして保存します。
  2. と呼ばれるPythonスクリプト meds.py、メタデータ生成の自動化のコアロジックが含まれているため、 検出エンティティ_v2 Amazon Comprehend MedicalへのAPI呼び出しにより、各Wikipediaページのエンティティを検出し、返されたエンティティに基づいてメタデータを生成します。 このスクリプトで使用される手順は次のとおりです。
    1. ウィキペディアのページテキストを、許可されている最大テキストサイズよりも小さいチャンクに分割します。 detect_entities_v2 API呼び出し。
    2. 作る detect_entities_v2 コール。
    3. によって検出されたエンティティをフィルタリングします detect_entities_v2 しきい値信頼スコア(この例では0.97)を使用して呼び出します。
    4. そのカテゴリとそのエンティティの発生頻度に対応する各一意のエンティティを追跡します。
    5. エンティティカテゴリごとに、そのカテゴリのエンティティを発生頻度の高いものから低いものの順に並べ替え、上位10個のエンティティを選択します。
    6. 選択したエンティティに基づいてメタデータオブジェクトを作成し、JSON形式で出力します。
  3. AWS CLIを使用して、S3コネクタを使用してAmazonKendraインデックスへのデータソースとして設定されているS3バケットにテキストデータとメタデータをコピーします。
  4. Amazon Kendraコンソールを使用してデータソースの同期を実行し、AmazonKendraインデックスのメタデータとともにドキュメントのコンテンツを取り込みます。
  5. 最後に、Amazon Kendra検索コンソールを使用して、インデックスへのクエリを実行します。

データソースとして使用するAmazonS3バケットを作成します

AmazonKendraインデックスのデータソースとして使用するAmazonS3バケットを作成します。

インフラストラクチャをCloudFormationスタックとしてデプロイします

このソリューションのインフラストラクチャとリソースを展開するには、次の手順を実行します。

別のブラウザタブで、 AWSマネジメントコンソール、AWSアカウントにログインしていることを確認してください。 次のボタンをクリックしてCloudFormationスタックを起動し、インフラストラクチャをデプロイします。

その後、次の画像のようなページが表示されます。

S3データソースバケット、s3://プレフィックスなしでデータソースバケット名を入力し、を選択します AWSCloudFormationがカスタム名でIAMリソースを作成する可能性があることを認めます。 それから、 スタックを作成.

スタックの作成は、完了するまでに30〜45分かかる場合があります。 スタックの作成ステータスは、 スタック情報 タブ。 次のようなさまざまなタブを確認することもできます。 イベント , リソース, テンプレート。 スタックの作成中に、次のいくつかの手順でデータの取得とメタデータの生成に取り組むことができます。

データを取得してメタデータを生成する

データをフェッチしてメタデータの生成を開始するには、次の手順を実行します。

  1. AWSマネジメントコンソールで、次の図の赤い円で示されているアイコンをクリックして開始します AWS クラウドシェル.

  1. ファイルをコピーしますcode-data.tgz 次のコマンドを使用してコンテンツを抽出します AWS クラウドシェル:
aws s3 cp s3://aws-ml-blog/artifacts/build-an-intelligent-search-solution-with-automated-content-enrichment/code-data.tgz .
tar zxvf code-data.tgz

  1. 作業ディレクトリを次のように変更します code-data:
cd code-data

この時点で、データを取得し、Amazon Comprehend Medicalを使用してメタデータを作成し(約35〜40分かかります)、Amazonでメタデータと一緒にデータを取り込むというエンドツーエンドのワークフローを実行することを選択できます。 Kendraインデックスを作成するか、Amazon Comprehend Medicalを使用して生成され、便宜上パッケージで提供されているメタデータを使用してデータを取り込むための最後の手順を完了します。

  1. パッケージで提供されているメタデータを使用するには、次のコードを入力してから、手順6にジャンプします。
tar zxvf med-data-meta.tgz

  1. この手順を実行して、エンドツーエンドソリューションの構築を実際に体験してください。 次のコマンドは、main.shというbashスクリプトを実行します。このスクリプトは、次のスクリプトを呼び出します。
    1. prereq.sh 前提条件をインストールし、データとメタデータを格納するためのサブディレクトリを作成します
    2. getpages.sh リスト内の医薬品のウィキペディアページを取得するには
    3. getmetapar.sh を呼び出す meds.py 各ドキュメントのPythonスクリプト

Pythonスクリプト meds.py を作成するためのロジックが含まれています get_entities_v2 Amazon Comprehend Medicalを呼び出してから、出力を処理してJSONメタデータファイルを生成します。 これが完了するまでに約30〜40分かかります。

手順5の実行中に、CloudShellがタイムアウトした場合、セキュリティトークンが更新された場合、またはすべてのデータが処理される前にスクリプトが停止した場合は、CloudShellセッションを再開して実行します。 getmetapar.sh、停止した時点からデータ処理を開始します。

./getmetapar.sh

  1. 次のAWSCLIコマンドを使用して、AmazonKendraインデックスのデータソースとして使用されているS3バケットにデータとメタデータをアップロードします。
aws cp Data/ s3://<REPLACE-WITH-NAME-OF-YOUR-S3-BUCKET>/Data/ —recursive
aws cp Meta/ s3://<REPLACE-WITH-NAME-OF-YOUR-S3-BUCKET>/Meta/ —recursive

Amazon Kendraの設定を確認し、データソースの同期を開始します

この手順を開始する前に、CloudFormationスタックの作成が完了していることを確認してください。 次の手順では、データソースの同期を開始して、ドキュメントのクロールとインデックス作成を開始します。

  1. Amazon Kendraコンソールで、CloudFormationスタックの一部として作成されたインデックスAuthKendraIndexを選択します。

  1. ナビゲーションペインで、 データソース.
  2. ソフトウェア設定ページで、下図のように 設定 タブで、構成されているデータソースバケットを確認できます。
  3. データソースを選択し、 今すぐ同期.

データソースの同期が完了するまでに10〜15分かかる場合があります。

AmazonKendraインデックスファセットの定義を確認する

ナビゲーションペインで、 ファセット定義。 次のスクリーンショットは、のエントリを示しています ANATOMY, MEDICAL_CONDITION, MEDICATION, PROTECTED_HEALTH_INFORMATION, TEST_TREATMENT_PROCEDURE, TIME_EXPRESSION。 これらは、Amazon ComprehendMedicalによって検出されたエンティティのカテゴリです。 これらは、AmazonKendraインデックスの作成に使用したCloudFormationテンプレートのカスタム属性として定義されています。 のfacetableチェックボックス PROTECTED_HEALTH_INFORMATION & TIME_EXPRESSION は選択されていないため、検索ユーザーインターフェイスのファセットには表示されません。

必須医薬品のWHOモデルリストのリポジトリを照会する

これで、検索ソリューションにクエリを実行する準備が整いました。

  1. Amazon Kendraコンソールで、インデックスに移動して、 検索コンソール.
  2. 検索フィールドに次のように入力します What is the treatment for diabetes?

次のスクリーンショットは結果を示しています。

  1. 選択する 検索結果をフィルタリングする ファセットを見るために。

の見出し MEDICATION, ANATOMY, MEDICAL_CONDITION, TEST_TREATMENT_PROCEDURE はAmazonKendraファセットとして定義されたカテゴリであり、その下のアイテムのリストは、検索対象のドキュメントでAmazon ComprehendMedicalによって検出されたこれらのカテゴリのエンティティです。 PROTECTED_HEALTH_INFORMATION & TIME_EXPRESSION 表示されていません。

  1. 病状選択 妊娠 検索結果を絞り込むため。

あなたはに戻ることができます ファセット定義 ページと作成 PROTECTED_HEALTH_INFORMATION & TIME_EXPRESSION ファセットテーブルを作成し、構成を保存します。 検索コンソールに戻り、新しいクエリを作成して、ファセットをもう一度観察します。 これらのファセットを試して、ニーズに最適なものを確認してください。

追加のクエリを作成し、ファセットを使用して検索結果を絞り込みます。 次のクエリを使用して開始できますが、独自のクエリを試すこともできます。

  • 一般的な鎮痛剤とは何ですか?
  • パルセタモールは子供にとって安全ですか?
  • 高血圧を管理する方法は?
  • BCGワクチンはいつ投与する必要がありますか?

ドメイン固有のファセットが検索エクスペリエンスをどのように改善するかを観察できます。

インフラストラクチャのクリーンアップ

CloudFormationスタックの一部としてデプロイされたインフラストラクチャを削除するには、AWSCloudFormationコンソールからスタックを削除します。 スタックの削除には20〜30分かかる場合があります。

スタックステータスが次のように表示される場合 Delete Complete、に行きます イベント タブをクリックして、各リソースが削除されたことを確認します。 Amazon Kendraコンソールでインデックスが削除されていることを確認して、相互検証することもできます。

CloudFormationスタックの一部として作成されていないため、データソースバケットを個別に削除する必要があります。

まとめ

この投稿では、AmazonComprehendまたはAmazonComprehendMedicalを使用してAmazonKendraインデックスのドメイン固有のメタデータを生成し、検索ソリューションのユーザーエクスペリエンスを向上させることで、コンテンツを充実させるプロセスを自動化する方法を示しました。

この例では、Amazon Comprehend Medicalによって検出されたエンティティを使用して、AmazonKendraメタデータを生成しました。 コンテンツリポジトリのドメインに応じて、事前にトレーニングされたモデルで同様のアプローチを使用できます。 カスタムトレーニングモデル アマゾン理解の。 私たちのソリューションを試してみて、あなたの考えを教えてください! 次のような他の要素を使用して、メタデータをさらに拡張できます。 保護された健康情報(PHI) Amazon ComprehendMedicalおよび イベント, キーフレーズ, 個人を特定できる情報(PII), 支配的な言語, 感情, 構文 AmazonComprehendの場合。


著者について

アビナブ・ジャワデカールアビナブ・ジャワデカール アマゾンウェブサービスのシニアパートナーソリューションアーキテクトです。 AbhinavはAWSパートナーと協力して、クラウドジャーニーの支援を行っています。

ウディ・ヘルシュコビッチ 2018年からAWSのプリンシパルWWAI / MLサービススペシャリストを務めています。AWSの前は、UdiはAIスタートアップや、LeanFM Technologiesの共同創設者兼CEOを含むエンタープライズイニシアチブで複数の指導的地位を占め、施設管理におけるMLを活用した予測メンテナンスを提供しています。 2015年にAmazonが買収した機械翻訳スタートアップであるSafabaTranslation SolutionsのCEO、およびAmdocsのコンタクトセンターインテリジェンスのプロフェッショナルサービスの責任者。 Udiは、イスラエルのヘルズリヤにある学際センターで法律とビジネスの学位を取得しており、米国ペンシルベニア州ピッツバーグに住んでいます。

コインスマート。 BesteBitcoin-ヨーロッパのBörse
ソース:https://aws.amazon.com/blogs/machine-learning/build-an-intelligent-search-solution-with-automated-content-enrichment/

スポット画像

最新のインテリジェンス

スポット画像