Amazon のテキスト分析スキームの設定 CloudSearch - Amazon CloudSearch

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon のテキスト分析スキームの設定 CloudSearch

Amazon CloudSearch では、 textおよび text-arrayフィールドごとに言語固有の分析スキームを設定できます。分析スキームは、インデックス作成中にフィールドのコンテンツを処理する方法を制御します。ほとんどの場合、各言語のデフォルト設定も適切に機能しますが、分析オプションを微調整することで、検索するデータに関する知識に基づいて検索結果を最適化することができます。サポートされている言語のリストについては、「サポートされている言語」を参照してください。

分析スキームは、処理するテキストの言語と次の分析オプションを指定します。

  • アルゴリズムによるステミング - アルゴリズムによるステミングの実行レベルを指定します。使用可能なステミングレベルは、言語によって異なります。

  • 日本語トークナイゼーションディクショナリ - 日本語を処理する場合にアルゴリズムトークナイゼーションのオーバーライドを指定します。ディクショナリは、文字の特定のセットを単語として分類する方法を指定します。

  • ステミングディクショナリ - アルゴリズムによるステミングの結果にオーバーライドを指定します。ディクショナリは、共通のルート語またはステムに特定の関連する単語をマッピングします。

  • ストップワード - インデックス作成時および検索中に無視する単語を指定します。

  • シノニム - データ内に存在する単語と同じ意味の単語を指定して、同じ検索結果が得られるようにします。

テキストの処理中に、フィールド値と検索用語は小文字に変換 (大文字/小文字変換) されるため、ストップワード、語幹、およびシノニムの大文字と小文字は区別されません。インデックス作成時および検索リクエストの処理時に Amazon がテキスト CloudSearch を処理する方法の詳細については、「」を参照してくださいAmazon CloudSearch でのテキスト処理

分析スキームごとに言語を指定し、text および text-array フィールドごとに分析スキームを設定する必要があります。Amazon CloudSearch コンソールを使用してフィールドを設定する場合、分析スキームはデフォルトで_en_default_分析スキームになります。分析スキームの分析オプションを指定しない場合、Amazon は指定された言語のデフォルトオプション CloudSearch を使用します。各言語のデフォルト設定については、「言語固有の設定」を参照してください。

分析スキームを定義する最も簡単な方法は、Amazon コンソールの分析スキームページを使用することです。 CloudSearch フィールドを有効にするには、分析スキームを適用する必要があります。[Indexing Options] (インデックスオプション) ページから、フィールドに分析スキームを適用できます。コマンドラインツールおよび AWS SDK を使用して、分析スキームを定義し、フィールドごとに分析スキームを設定することもできます。

インデックスフィールドに新しい分析スキームを適用するか、使用されている分析スキームを変更したときは、明示的なrebuild the indexにより、検索結果に変更を反映させる必要があります。

Amazon でのステミング CloudSearch

ステミングは、関連する単語を共通のステムに対応付けるマッピングプロセスです。ステムは、通常バリアントの派生元であるルートまたはベース語です。例えば、runrunningran のステムです。ステミングは、インデックス作成中だけでなく、クエリ時にも実行されます。ステミングは、インデックスに含まれる用語の数を減らし、検索用語が検索されるコンテンツ内に存在する用語のバリアントの場合、一致を促進します。例えば、用語をマップするとします。実行していますステムに走る次に、実行していますの場合、リクエストはを含むドキュメントと一致します。走る同様です実行しています

Amazon は、アルゴリズムによるステミングと明示的なステミングディクショナリの両方 CloudSearch をサポートしています。アルゴリズムによるステミングは、使用するステミングのレベルを指定することで設定します。アルゴリズムによるステミングに使用可能なレベルは、言語によって異なります。

  • なし - アルゴリズムによるステミングを無効にします。

  • 最小 - 複数のサフィックスを削除することにより、基本的なステミングを実行します。

  • ライト - 最も一般的な名詞/形容詞屈折と派生したサフィックスが対象になります。

  • フル - 屈折とサフィックスを積極的にステム解釈します。

実行されるアルゴリズムによるステミングのレベルを制御するだけでなく、特定の関連する単語を共通ステムにマッピングするステミングディクショナリを指定できます。ディクショナリは、用語をそのステムにマッピングする文字列:値のペアのコレクションを含む JSON オブジェクトとして指定します。例えば、{"term1": "stem1", "term2": "stem2", "term3": "stem3"} のようになります。アルゴリズムによるステミングに加えて、ステミングディクショナリが適用されます。これによって、アルゴリズムステミングの結果をオーバーライドし、特定のステミングの過剰または不足のケースを修正できます。ステミングディクショナリの最大サイズは 500 KB です。ステミングディクショナリのエントリは小文字である必要があります。

分析スキームのカスタムステミングディクショナリを定義するには、StemmingDictionary キーを使用します。ディクショナリは文字列 CloudSearch として Amazon に渡すため、文字列内のすべての二重引用符をエスケープする必要があります。例えば、次の分析スキームは running および jumping の語幹を定義します。

{ "AnalysisSchemeName": "myscheme", "AnalysisSchemeLanguage": "en", "AnalysisOptions": { "AlgorithmicStemming": "light", "StemmingDictionary": "{\"running\": \"run\",\"jumping\": \"jump\"}" } }

分析スキームでアルゴリズムによるステミングのレベルまたはステミングディクショナリを指定しない場合、Amazon CloudSearch は指定された言語のデフォルトのアルゴリズムによるステミングレベルを使用します。ステミングは、検索結果から除外されていた可能性がある関連ドキュメントを見つけるのに役立ちますが、過剰なステミングにより、関連性に疑問の余地がある一致が大量に結果に含まれる可能性があります。各言語に設定されているデフォルトのアルゴリズムによるステミングレベルは、ほとんどのユースケースで十分に機能します。通常、デフォルトから始めて、その後検索結果がユースケースにとって最適になるように調整することをお勧めします。各言語のデフォルト設定については、「言語固有の設定」を参照してください。

Amazon のストップワード CloudSearch

ストップワードは、重要でないか、あまりに一般的であるために大量の一致が発生するという理由で、通常インデックス作成時にも検索時にも無視される単語です。

インデックス作成中、Amazon は textおよび text-arrayフィールドを処理するときにストップワードディクショナリ CloudSearch を使用します。ほとんどの場合、ストップワードはインデックスに含まれません。ストップワードディクショナリは、検索リクエストをフィルタするためにも使用されます。

ストップワードディクショナリは、用語の JSON 配列です。例えば、["a", "an", "the", "of"] のようになります。ストップワードディクショナリでは、無視する各単語を明示的にリストする必要があります。ワイルドカードや正規表現はサポートされていません。

分析スキームのカスタムストップワードディクショナリを定義するには、Stopwords キーを使用します。ディクショナリは文字列 CloudSearch として Amazon に渡すため、文字列内のすべての二重引用符をエスケープする必要があります。例えば、次の分析スキームは aan および the というストップワードを設定します。

{ "AnalysisSchemeName": "myscheme", "AnalysisSchemeLanguage": "en", "AnalysisOptions": { "Stopwords": "[\"a\",\"an\",\"the\"]" } }

分析スキームでストップワードディクショナリを指定しない場合、Amazon CloudSearch は指定された言語のデフォルトのストップワードディクショナリを使用します。各言語に設定されているデフォルトのストップワードは、ほとんどのユースケースで適切に機能します。通常、デフォルトから始めて、その後検索結果がユースケースにとって最適になるように調整することをお勧めします。各言語のデフォルト設定については、「言語固有の設定」を参照してください。

Amazon のシノニム CloudSearch

検索しているデータ内に存在する用語に対してシノニムを設定できます。そうすることで、インデックス用語ではなくシノニムを検索した場合、結果にはインデックスされた用語が含まれるドキュメントが含まれます。例えば、カスタムシノニムを定義して次のようなことができます。

  • 一般的な綴りの誤りを正しい綴りにマッピングする

  • filmmovie のような、同等の用語を定義する

  • fishbarracuda のように、一般的な用語をより特殊な用語にマッピングする

  • tool boxtoolbox のように、複数の単語を 1 つの単語に (またはその逆も) マッピングする

シノニムを定義すると、そのシノニムはインデックスのベーストークンが出現するすべての場所に追加されます。例えば、fish のシノニムとして barracuda を定義した場合、fish という用語が barracuda という用語を含むすべてのドキュメントに追加されます。多数のシノニムを追加すると、インデックスのサイズだけでなく、クエリのレイテンシーも増大しますシノニムを使用すると一致件数が増加し、一致件数が増加すれば、それだけ結果処理にかかる時間も長くなります。

シノニムディクショナリは、インデックス作成時にテキストフィールドに出現する用語にマッピングを設定するために使用されます。検索リクエストでは、シノニム処理は行われません。デフォルトでは、Amazon CloudSearch はシノニムを定義しません。

次の 2 通りの方法でシノニムを指定できます。

  • グループ内の各用語はグループ内の他のすべての用語のシノニムの合成グループとして見なされます。

  • 特定の用語のエイリアスとして。エイリアスは指定した用語のシノニムと見なされますが、用語はエイリアスのシノニムとは見なされません。

シノニムディクショナリは、シノニムグループとエイリアスを定義する JSON オブジェクトとして指定されます。groups 値は、配列の配列で、各サブ配列は合成グループです。aliases 値は、文字列:値のペアのコレクションを含むオブジェクトです。ここで、文字列は用語を指定し、値の配列はその用語の各シノニムを指定します。次の例には、合成グループとエイリアスの両方が含まれています。

{ "groups": [["1st", "first", "one"], ["2nd", "second", "two"]], "aliases": { "youth": ["child", "kid", "boy", "girl"], "adult": ["men", "women"] } }

グループ、エイリアスのいずれも、複数の単語からなるシノニムに対応します。次の例では、合成グループとエイリアスの両方で複数の単語からなるシノニムが使用されています。

{ "groups": [["tool box", "toolbox"], ["band saw", "bandsaw"]], "aliases": { "workbench": ["work bench"]} }

分析スキームのカスタムシノニムディクショナリを定義するには、Synonyms キーを使用します。ディクショナリは文字列 CloudSearch として Amazon に渡すため、文字列内のすべての二重引用符をエスケープする必要があります。例えば、次の分析スキームは youth という用語のエイリアスを設定します。

{ "AnalysisSchemeName": "myscheme", "AnalysisSchemeLanguage": "en", "AnalysisOptions": { "Synonyms": "{\"aliases\": {\"youth\": [\"child\",\"kid\"]}}" } }

Amazon CloudSearch コンソールを使用した分析スキームの設定

Amazon CloudSearch コンソールの分析スキームペインから分析スキームを定義できます。

分析スキームを定義するには
  1. https://console.aws.amazon.com/cloudsearch/home で Amazon CloudSearch コンソールを開きます。

  2. 左側のナビゲーションペインから [ドメイン] を選択します。

  3. ドメイン名を選択し、設定を開きます。

  4. [高度な検索オプション] タブに移動します。

  5. [分析スキーム] ペインで、[分析スキームを追加] を選択します。

  6. 分析スキームの名前を指定し、言語を選択します。

  7. [次へ] をクリックします。

  8. 次の 3 つのステップでは、スキームのテキストストップワード、ステミング、およびシノニムオプションを設定します。独自のストップワード、ステム、およびシノニムを設定するか、表示されたディクショナリを直接編集することができます。ディクショナリは、JSON の形式です。ストップワードは、文字列の配列として指定されます。ステムは、1 つ以上のキー:値のペアを含むオブジェクトとして指定されます。シノニムエイリアスも、1 つ以上のキー:値ペアを持つ JSON オブジェクトとして指定されます。ここで、エイリアス値は文字列の配列として指定されます。シノニムグループは JSON 配列として指定されます。(シノニムディクショナリは配列の配列です。)

    言語として日本語を選択した場合、特定の語句のデフォルトのトークン化をオーバーライドするカスタムのトークン化ディクショナリを指定するオプションも使用できます。詳細については、「日本語トークナイゼーションカスタマイズ」を参照してください。

  9. 概要ページで、分析スキームの設定を確認し、[保存] を選択します。

重要

分析スキームを使用するには、1 つ以上の text または text-array フィールドを適用し、インデックスを再構築する必要があります。[インデックスオプション] タブから、フィールドの分析スキームを設定できます。インデックスを再構築するには、[アクション][インデックス作成の実行] を選択します。

AWS CLI を使用した分析スキームの設定

ステミングオプション、ストップワード、シノニムなど、言語固有のテキスト処理オプションを定義するには、aws cloudsearch define-analysis-scheme コマンドを使用します。AWS CLI のインストールおよびセットアップの詳細については、「AWS Command Line Interface ユーザーガイド」を参照してください。

text または text-array フィールドの設定の一部として分析スキームを指定します。詳細については、「configure indexing options」を参照してください。

分析スキームを定義するには
  • aws cloudsearch define-analysis-scheme コマンドを実行し、--analysis-scheme オプションと、分析オプションを含む JSON オブジェクトを指定します。分析スキームは有効な JSON である必要があります。分析オプションキーおよび値ペアは引用符で囲む必要があります。また、オプション値内のすべての引用符は、バックスラッシュでエスケープする必要があります。分析オプションの形式については、「 コマンドリファレンスdefine-analysis-scheme」のAWS CLI「」を参照してください。ステミング、ストップワード、およびシノニムオプションの指定方法については、「分析スキームの設定」を参照してください。

    言語として日本語 (ja) を指定すると、特定の語句のデフォルトのトークン分割をオーバーライドするカスタムのトークン分割ディクショナリを指定するオプションも使用できます。詳細については、「日本語トークナイゼーションカスタマイズ」を参照してください。

    ヒント

    AWS CLI で分析スキームを設定するもっとも簡単な方法は、分析スキームをテキストファイルに保存し、そのファイルを --analysis-scheme 値として指定します。こうすることで、スキームを読みやすくフォーマットできます。例えば、以下のスキームはライトレベルのアルゴリズムによるステミングを使用し、2 つのストップワードを設定した myscheme という英語の分析スキームを定義しています。

    { "AnalysisSchemeName": "myscheme", "AnalysisSchemeLanguage": "en", "AnalysisOptions": { "AlgorithmicStemming": "light", "Stopwords": "[\"a\", \"the\"]" } }

    このスキームを myscheme.txt というテキストファイルに保存すると、そのファイルを --analysis-scheme パラメータの値として渡すことができます。

    aws cloudsearch define-analysis-scheme --region us-east-1 --domain-name movies --analysis-scheme file://myscheme.txt
重要

分析スキームを使用するには、1 つ以上の text または text-array フィールドを適用し、インデックスを再構築する必要があります。フィールドの分析スキームは aws cloudsearch define-index-field コマンドで設定できます。インデックスを再構築するには、aws cloudsearch index-documents を呼び出します。

AWS SDK を使用した分析スキームの設定

AWS SDKs (Android および iOS SDKs) は、 を含む Amazon CloudSearch Configuration API で定義されているすべての Amazon CloudSearch アクションをサポートしますDefineAnalysisScheme。AWS SDK のインストールと使用の詳細については、「AWS Software Development Kits」(AWS ソフトウェアデベロップメントキット) を参照してください。

重要

分析スキームを使用するには、1 つ以上の text または text-array フィールドを適用し、インデックスを再構築する必要があります。フィールドの分析スキームを、インデックスフィールドを定義するメソッドで設定できます。インデックスを再構築するには、インデックスドキュメントのメソッドを使用します。

Amazon での中国語、日本語、韓国語のバイラムのインデックス作成 CloudSearch

中国語、日本語、韓国語には、明確な単語の境界がありません。単純に個々の文字 (ユニグラム) に対してインデックスを作成すると、検索クエリにあまり関係ないものが一致してしまいます。解決方法の 1 つは、バイグラム でインデックスを付けることです。バイグラムは、文字列の中で隣接する 2 つの文字の連なりです。例えば、次の例は文字列「我的氣墊船裝滿了鱔魚」のバイグラムを示しています。

我的  的氣  氣墊  墊船  船裝  裝滿  滿了  了鱔  鱔魚

バイグラムにインデックスを作成することで検索結果は向上しますが、インデックスのサイズが大幅に増加することに注意してください。

中国語、日本語、韓国語でバイグラムにインデックスを作成するには
  1. テキスト分析スキームを作成し、言語を複数言語 (mul) に設定します。

  2. 複数言語分析スキームを使用する CJK データを含むインデックスフィールドを設定します。

フィールドの言語を に設定する分析スキームを割り当てるとmul、Amazon はフィールド内のすべての中国語、日本語、韓国語テキストのバイグラム CloudSearch を自動的に生成します。

分析スキームの作成と使用の詳細については、「分析スキームの設定」を参照してください。

日本のコンテンツのインデックスを作成する場合、標準的な日本語プロセッサで使用するカスタムトークナイゼーションディクショナリも気になるかと思われます。詳細については、「日本語トークナイゼーションカスタマイズ」を参照してください。

Amazon での日本語トークナイゼーションのカスタマイズ CloudSearch

Amazon が日本語をどのように CloudSearch トークナイゼーションするかをより細かく制御する必要がある場合は、分析スキームにカスタム日本語トークナイゼーションディクショナリを追加できます。カスタムのトークナイゼーションディクショナリを設定すると、標準的な日本語プロセッサで特定のエントリがトークン分割される方法をオーバーライドできます。これによって、特にドメイン固有のフレーズにインデックスを作成し取得する必要がある場合に、検索結果の精度が向上する場合があります。

トークナイゼーションディクショナリは、各エントリが文字のセット、文字のトークン分割方法、各トークンの発音方法 (読み取り)、および part-of-speech タグを指定するエントリのコレクションです。ディクショナリは配列として指定されます。ディクショナリの各エントリは文字列の配列です。エントリは以下のような形式です。

["<text>","<token 1> ... <token n>","<reading 1> ... <reading n>","<part-of-speech tag>"]

各トークンの読み取り値とエントリの part-of-speech タグを指定する必要があります。ストップワードに関連した品詞タグについては、「日本語の品詞タグ」を参照してください。

分析スキームのカスタムトークナイゼーションディクショナリを定義するには、JapaneseTokenizationDictionary キーを使用します。トークナイゼーションディクショナリは文字列 CloudSearch として Amazon に渡すため、文字列内のすべての二重引用符をエスケープする必要があります。例えば、以下の分析スキームのディクショナリは、漢字カナ混じりの場合のセグメンテーションのオーバーライド、および固有名詞のカスタムな読みを指定します。

{ "AnalysisSchemeName": "jascheme", "AnalysisSchemeLanguage": "ja", "AnalysisOptions": { "Stopwords": "[\"a\", \"the\"]", "AlgorithmicStemming": "full", "JapaneseTokenizationDictionary": "[ [\"日本経済新聞\",\"日本 経済 新聞\",\"ニホン ケイザイ シンブン\",\"カスタム名詞\"],[\"トートバッグ\",\"トート バッグ\",\"トート バッグ\",\"かずカナ名詞\"],[\"朝青龍\",\"朝青龍\",\"アサショウリュウ\",\"カスタム人名\"] ]" } }

AWS CLI で分析スキームを設定する場合、分析スキームをテキストファイルに保存し、そのファイルを --analysis-scheme 値として指定できます。こうすることで、スキームを読みやすくフォーマットできます。例えば、jascheme 分析スキームを jascheme.txt というファイルに保存し、aws cloudsearch define-analysis-scheme 呼び出し時にそのファイルを渡すことができます。

aws cloudsearch define-analysis-scheme --region us-east-1 --domain-name mydomain --analysis-scheme file://jascheme.txt

分析スキームの作成と使用の詳細については、「分析スキームの設定」を参照してください。

Amazon の日本語品詞タグ CloudSearch

日本語にカスタムトークナイゼーションディクショナリを使用する場合は、エントリごとに part-of-speech タグを指定します。 part-of-speech タグが停止タグとして設定されたタグのいずれかと一致する場合、エントリはストップワードとして扱われます。

次の表は、Amazon で停止タグとして設定された音声タグの一部を示しています CloudSearch。

停止タグ
タグ 品詞 説明
助動詞 助動詞 つけられた語句に機能的または文法的な意味を付加する動詞。
接続詞 接続詞 独立して現れる接続詞。
フィラー フィラー 会話の中に現れる相槌またはフィラーとして挿入される音。
非言語音 非言語音 言語ではない音。
その他-間投 その他の間投詞 名詞接尾辞または文末の助詞としての分類が困難な単語。
助詞-副詞化 助詞-連体化 名詞と副詞の後に続く「に」および「の」。
助詞-連体化 助詞-連体化 名詞に添えて活用しない単語を変化させる「の」。
助詞-副助詞 助詞-副助詞 位置や移動の方向などをしめす副詞。
助詞-副助詞/並立助詞/終助詞 助詞-副助詞/並立助詞/終助詞 副詞的、並列助詞、終助詞であるかどうか不明な場合の「か」。
助詞-格助詞-連語 Particle-case-compound 主に書く助詞として機能する助詞と動詞の複合。
助詞-格助詞-一般 Particle-case-misc 格助詞。
助詞-格助詞-引用 Particle-case-quote 名詞、話し言葉、引用符、会議の結論の表現、理由、判断、推量などの後に現れる「と」。
助詞-格助詞 助詞-格助詞 亜分類が未定義である格助詞。
助詞-接続助詞 助詞-接続助詞 接続助詞。
助詞-並立助詞 助詞-並立助詞 並立助詞。
助詞-係助詞 助詞-係助詞 係助詞。
助詞-終助詞 終助詞 終助詞。
助詞-間投助詞 間投助詞 文法上間投詞の役割をはたす助詞。
助詞-特殊 助詞-特殊 他の分類に当てはまらない助詞。短歌、俳句などの詩歌に使用される助詞を含みます。
助詞 不変化詞 分類されていない助詞。
記号-括弧閉 記号-括弧閉 括弧閉: ]。
記号-読点 記号-読点 カンマ: ,
記号-一般 記号-一般 他のカテゴリに含まれない一般的な記号。
記号-括弧開 記号-括弧開 括弧開: [。
記号-句点 記号-句点 ピリオドと句点。
記号-空白 記号-空白 全角の空白。
記号 記号 分類されていない記号。