16.5 コロケートの識別

コロケートはドキュメント内で頻繁に共起する単語のグループです。コロケートは、指定されたキーワードに関連する他のキーワードや概念の簡単な概要を示します。問合せで他のキーワードを使用してより関連性のある結果を取得できます。

検索問合せに基づいてコロケートを識別します。問合せから返されるドキュメントごとに、検索キーワードに関連するテキストのスニペットが自動的に抽出されます。次に、これらのスニペットの語が統計メジャーを使用して問合せキーワードに関連付けられ、ドキュメント・セット全体における抽出語の発生頻度に応じて、返された各共起語にスコアが割り当てられます。

コロケートを識別するには、RSIを使用します。問合せで返される必要のある共起語の数を指定できます。また、普通名詞のコロケートを指定するか、独自性を強調するコロケートを識別するか指定することもできます。指定された検索キーワードのシノニムも返すことができます。

ノート:

コロケートはBASIC_LEXERでのみサポートされます。

コロケートを識別するには:

  1. 問合せ対象のドキュメント・セット表を作成します。
  2. ドキュメント・セット表にOracle Text索引を作成します。
  3. XML問合せのRSIを使用して、コロケートを識別する問合せを定義および入力します。必要な属性を持つcollocates要素を含めます。

例16-1 ドキュメント・セット内のコロケートの識別

この例で、データ・セット内のドキュメントの問合せに使用されているキーワードは'Nobel'です。Oracle Textは、ドキュメント・セット内のこのキーワードの出現を検索します。結果セットに加えて、コロケートを使用して'Nobel'で共起する5つの共通語を検索します。max_words属性を使用して、生成するコロケートの数を識別します。use_tscore属性をTRUEに設定して、共通語をコロケート用に識別する必要があることを指定します。コロケートを識別するためにキーワードの各側で選択する単語の数は10個です。

次に、コロケートの判別に使用される入力RSI記述子を示します。

declare
rsd varchar2(32767);
 begin
  ctx_query.result_set('tdrbnbsan01idx', 'nobel',
  <ctx_result_set_descriptor>
  <collocates radius = "10" max_words="5" use_tscore="TRUE"/>
  </ctx_result_set_descriptor>',
  :rs);
  end;
/

次に、問合せの出力結果セットを示します。

<ctx_result_set>
<collocates>
    <collocation>
       <word>PRIZE</word>
       <score>82</score>
    </collocation>
    <collocation>
       <word>LAUREATE</word>
       <score>70</score>
    </collocation>
    <collocation>
       <word>NOBELPRIZE</word>
       <score>44</score>
    </collocation>
    <collocation>
       <word>AWARD</word>
       <score>42</score>
    </collocation>
    <collocation>
       <word>ORG</word>
       <score>41</score>
    </collocation
</collocates>
</ctx_result_set>

'Nobel'の上位5つの共通コロケートは、上から順に、Prize、Laureate、Nobelprize、awardおよびorgです。各語には、発生頻度を示すスコアが割り当てられます。コロケートは、hitlist要素が返された後常に返されます。

同じ例でuse_tscoreFALSEに設定すると、共通性の少ない(一意の)単語が識別されます。次に、出力結果セットを示します。

<ctx_result_set>
<collocates>   
    <collocation>
       <word>MOLA</word>
       <score>110</score>   
    </collocation>
    <collocation>
       <word>BISMARCK</word>
       <score>89</score>
    </collocation>
    <collocation>
       <word>COLONNA</word>
       <score>67</score>
    </collocation>
    <collocation>
       <word>LYNEN</word>
       <score>55</score>
    </collocation>
    <collocation>
       <word>TIMBERGEN</word>
       <score>25</score>
    </collocation>
    </collocates>
</ctx_result_set>

関連項目:

コロケートで使用する属性の詳細は、『Oracle Textリファレンス』を参照してください。