Amazon のテキスト分析スキームの設定 CloudSearch - アマゾン CloudSearch

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

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

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

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

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

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

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

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

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

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

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

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

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

Amazon のステミング CloudSearch

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

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

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

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

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

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

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

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

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

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

Amazon のストップワード CloudSearch

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

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

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

分析スキームのカスタムストップワードディクショナリを定義するには、Stopwords キーを使用します。辞書をAmazonに渡すから CloudSearch 文字列として、文字列内のすべての二重引用符をエスケープする必要があります。例えば、次の分析スキームは 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 キーを使用します。辞書をAmazonに渡すから CloudSearch 文字列として、文字列内のすべての二重引用符をエスケープする必要があります。例えば、次の分析スキームは youth という用語のエイリアスを設定します。

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

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

分析スキームは分析スキームAmazonのペイン CloudSearch console.

分析スキームを定義するには

  1. アマゾンを開く CloudSearch コンソールhttps://console.aws.amazon.com/cloudsearch/home

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

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

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

  5. 分析スキームペインで、[]分析スキームを追加

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

  7. [次へ] を選択します。

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

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

  9. [Summary] (概要) ページで、分析スキームの設定を確認し、保存

重要

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

重要

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

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

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

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

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

中国語、日本語、韓国語でバイグラムにインデックスを作成するには

  1. テキスト分析スキームを作成し、言語を複数言語 (mul) に設定します。

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

フィールドの言語をに設定した分析スキームを割り当てるとmul、アマゾン 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 キーを使用します。トークン化辞書をAmazonに渡すから CloudSearch 文字列として、文字列内のすべての二重引用符をエスケープする必要があります。例えば、以下の分析スキームのディクショナリは、漢字カナ混じりの場合のセグメンテーションのオーバーライド、および固有名詞のカスタムな読みを指定します。

{ "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 タグは停止タグとして設定されたタグの 1 つと一致した場合、そのエントリはストップワードとして扱われます。

次の表は、Amazon で停止タグとして設定される品詞タグを示しています。 CloudSearch。

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