10 Oracle Textでのシソーラスの使用

この章では、問合せアプリケーションをシソーラスを使用して改善する方法を説明します。この章の内容は次のとおりです。

10.1 Oracle Textシソーラス機能の概要

問合せアプリケーションのユーザーが、特定のトピックに関する情報を検索するとき、そのトピックについて書かれたドキュメント内で使用されているワードがわからない場合があります。

Oracle Textでは、ワードと句のシノニムおよび階層関係を定義する大/小文字を区別するシソーラスまたは大/小文字を区別しないシソーラスを作成できます。その結果、シソーラスで定義した類似語または関連語が含まれるように問合せを拡張して、関連テキストを含むドキュメントを取り出すことができます。

シソーラスは、アプリケーション開発者が作成し、システムにロードできます。

この項では、次の項目について説明します。

注意:

Oracle Textのシソーラスの形式および機能性は、ISO-2788およびANSI Z39.19(1993)の両標準に準拠しています。

10.1.1 Oracle Textシソーラスの作成とメンテナンス

シソーラスとシソーラスのエントリは、CTXAPPロールを持つすべてのOracle Textユーザーが作成、変更、削除、インポートおよびエクスポートできます。

この項では、次の項目について説明します。

10.1.1.1 CTX_THESパッケージ

シソーラスをプログラムでメンテナンスおよびブラウズするには、PL/SQLパッケージCTX_THESを使用できます。このパッケージを使用すると、語句および階層関係のブラウズ、語句の追加と削除、シソーラス・リレーションの追加と削除、シソーラス表に対するシソーラスのインポートとエクスポートを実行できます。

10.1.1.2 シソーラス演算子

また、CONTAINS句でシソーラス演算子を使用すると、ロードしたシソーラスに基づいて問合せ語句を拡張できます。たとえば、SYN演算子を使用すると、次のようにdogなどの語句をそのシノニムに拡張できます。

'syn(dog)'

10.1.1.3 ctxloadユーティリティ

ctxloadユーティリティは、シソーラスをプレーン・テキスト・ファイルからシソーラス表にロードする場合、およびシソーラスをシソーラス表から出力(つまりダンプ)ファイルにダンプする場合に使用できます。

ctxloadで作成されたシソーラスのダンプ・ファイルは、出力したり、他のアプリケーションの入力として使用できます。ダンプ・ファイルは、シソーラス表にシソーラスをロードする場合にも使用できます。このことは、既存のシソーラスを新しいシソーラスを作成するための基礎として使用する場合に便利です。

警告:

セキュリティを確実にするために、インタラクティブ・モードを使用し、ユーザー・パスワードの入力を求められたときにctxloadにパスワードを入力することをお薦めします。コマンドラインにパスワードを入力しないことをお薦めします。

注意:

また、PL/SQLパッケージCTX_THESIMPORT_THESAURUSプロシージャとEXPORT_THESAURUSプロシージャを使用すると、シソーラス表に対するシソーラスのインポートとエクスポートをプログラム的に実行することもできます。

これらのプロシージャの詳細は、『Oracle Textリファレンス』を参照してください。

10.1.2 大/小文字を区別するシソーラスの使用

大/小文字を区別するシソーラスでは、語句(ワードおよび句)は、入力したとおり正確に格納されます。たとえば、語句を大/小文字の混合で入力した場合(CTX_THESパッケージまたはシソーラスのロード・ファイルのいずれかを使用)、シソーラスでは、そのエントリを大/小文字の混合で格納します。

注意:

大/小文字を区別するシソーラスから取得した問合せ拡張を利用するには、索引も大/小文字を区別する必要があります。

シソーラスのロード時に、-thescaseパラメータを使用して、大/小文字を区別してロードするように指定できます。

CTX_THES.CREATE_THESAURUSまたはCTX_THES.IMPORT_THESAURUSによるシソーラスの作成時に、大/小文字を区別して作成するように指定できます。

また、大/小文字を区別するシソーラスを問合せで指定した場合、シソーラス検索では、問合せ語句は問合せで入力したとおりに正確に使用されます。したがって、大/小文字を区別するシソーラスを使用する問合せでは、索引も大/小文字を区別しているかぎり、問合せ拡張における精度が向上し、検索が容易になります。

たとえば、大/小文字を区別するシソーラスを作成する場合、異なる意味を持つ語句、たとえばTurkey(国名)とturkey(鳥の種類)には、異なるエントリが使用されます。このシソーラスを使用すると、Turkeyへの問合せは、Turkeyに対応付けられているエントリのみを含むように拡張されます。

10.1.3 大/小文字を区別しないシソーラスの使用

大/小文字を区別しないシソーラスでは、語句は、当初の入力時の文字に関係なく、すべて大文字で格納されます。

ctxloadプログラムは、デフォルトでは大/小文字を区別しないモードでシソーラスをロードします。

CTX_THES.CREATE_THESAURUSまたはCTX_THES.IMPORT_THESAURUSによるシソーラスの作成時、シソーラスは、デフォルトでは大/小文字を区別せずに作成されます。

また、大/小文字を区別しないシソーラスを問合せで指定した場合、シソーラス検索では、問合せ語句はすべて大文字に変換されます。その結果、Oracle Textでは、大/小文字の混合で表記されたときに異なる意味を持つ語句を区別できません。

たとえば、大/小文字を区別しないシソーラスを作成する場合、2つの異なる意味を持つ語句TURKEY(国名と鳥の種類)には、異なるエントリが使用されます。このシソーラスを使用すると、Turkeyまたはturkeyのいずれに対する問合せも、シソーラス検索ではTURKEYに変換された後、2つの意味に対応付けられているすべてのエントリを含むように拡張されます。

関連項目:

ctxloadユーティリティ

10.1.4 デフォルトのシソーラス

問合せでシソーラス名を指定しない場合、デフォルトで、シソーラス演算子は、DEFAULTという名前のシソーラスを使用します。ただし、Oracle Textには、デフォルトのシソーラスはありません。

したがって、シソーラス演算子に対してデフォルトのシソーラスを使用する場合は、DEFAULTという名前のシソーラスを作成する必要があります。このシソーラスの作成には、Oracle Textがサポートしている次のシソーラス作成方法を使用できます。

10.1.5 提供されるシソーラス

Oracle Textには、デフォルトのシソーラスはありません。ただし、Oracle Textでは、シソーラスをctxloadでロードするファイルの形式で提供しています。このファイルを使用して汎用の英語シソーラスを作成できます。

このシソーラス・ロード・ファイルを使用すると、Oracle Textのデフォルトのシソーラスを作成できます。あるいは、このファイルを特定の主題または主題の範囲にあわせたシソーラスを作成するための基礎として使用することもできます。

この項では、次の項目について説明します。

関連項目:

ctxloadおよびCTX_THESパッケージの使用方法の詳細は、『Oracle Textリファレンス』およびこの章のctxloadユーティリティを参照

10.1.5.1 提供されるシソーラスの構造と内容

提供されるシソーラスは、Roget's Thesaurus(ロジェの分類語彙辞典)のような従来のシソーラスに類似しています。同義の語句や語義的に関連する語句のリストを備えています。

提供されるシソーラスは語句を階層形式に編成し、下位語とその上位語との実世界での実用的な関係を定義して付加価値を付けています。

また、階層の異なる領域の語句間で相互参照もできます。

10.1.5.2 提供されるシソーラスの場所

このシソーラス・ロード・ファイルの正確な名前と場所は、オペレーティング・システム固有です。ただし、通常、ファイル名は、dr0thsus(適切なテキスト・ファイルの拡張子が付きます)で、ファイルは次のディレクトリ構造内に置かれます。

<Oracle_home_directory>
    <interMedia_Text_directory>
       sample
           thes

10.2 シソーラスの用語の定義

シソーラスを使用して、シノニム、関連語および階層関係を作成できます。

この項では、次の項目について説明します。

10.2.1 シノニムの定義

コンピュータ・サイエンス用語のシソーラスがある場合、語句XMLのシノニムをExtensible Markup Languageと定義します。これによって、この語句のいずれを問い合せても、同じドキュメントが戻ります。

XML
SYN Extensible Markup Language

次のようにSYN演算子を使用すると、XMLをそのシノニムにまで拡張できます。

'SYN(XML)'

次のように拡張されます。

'XML, Extensible Markup Language'

10.2.2 階層関係の定義

ドキュメント・セットがニュース記事で構成されている場合は、シソーラスを使用して、地理用語の階層を定義できます。たとえば、米国のカリフォルニア州の地理階層を示す次の階層があるとします。

California
   NT Northern California
       NT San Francisco
       NT San Jose
   NT Central Valley
       NT Fresno
   NT Southern California
       NT Los Angeles

NT演算子を使用すると、カリフォルニアに対する問合せを次のように拡張できます。

'NT(California)'

次のように拡張されます。

'California, Northern California, San Francisco, San Jose, Central Valley,
  Fresno, Southern California, Los Angeles'

結果のヒットリストには、米国のカリフォルニア州の地域や都市に関連するすべてのドキュメントが表示されます。

10.3 問合せアプリケーションでのシソーラスの使用

カスタム・シソーラスを定義すると、問合せをより優れた方法で処理できます。使用しているアプリケーションのユーザーには、トピックを表現するワードがわからない場合があるため、予想される問合せ語句にシノニムまたは下位語を定義できます。シソーラス演算子を使用すると、問合せをシソーラス語句に拡張できます。

カスタム・シソーラスを使用して、問合せをよりインテリジェントに処理できるように問合せアプリケーションを拡張するには、次の2つの方法があります。

  • カスタム・シソーラスをロードし、シソーラス演算子を使用して問合せを入力します。

  • カスタム・シソーラスを使用してナレッジ・ベースを補強し(英語のみ)、ABOUT演算子を使用して問合せを拡張します。

どちらのアプローチにも、それぞれメリットとデメリットがあります。

この項では、次の項目について説明します。

10.3.1 カスタム・シソーラスのロードおよびシソーラス・ベースの問合せの発行

カスタム・シソーラスを作成およびロードできます。

この方法を使用するメリットは、索引付け後にシソーラスを変更できることです。

この方法の制限事項は、問合せにシソーラス拡張演算子を使用する必要があることです。問合せが長いと、シソーラスの拡張で余分なオーバーヘッドが発生し、問合せ速度が遅くなります。

カスタム・シソーラスを作成する手順は、次のとおりです。

  1. シソーラスを作成します。シソーラスの用語の定義を参照してください。
  2. ctxloadを使用してシソーラスをロードします。次の例では、tech_docというシソーラスをtech_thesaurus.txtというインポート・ファイルからインポートします。
    ctxload -thes -name tech_doc -file tech_thesaurus.txt 
  3. プロンプト表示されたら、ユーザー名とパスワードを入力します。セキュリティを確実にするために、コマンドラインにパスワードを入力しないでください。
  4. シソーラス演算子を使用して問合せを行います。たとえば次のようにすると、XMLと、tech_docで定義したXMLとそのシノニムを含むすべてのドキュメントを検索できます。
    'SYN(XML, tech_doc)'

10.3.2 カスタム・シソーラスによるナレッジ・ベースの拡張

カスタム・シソーラスを既存のナレッジ・ベースのブランチに追加できます。ナレッジ・ベースは、テーマの索引付け、ABOUT問合せおよびドキュメント・サービスでのドキュメント・テーマの抽出などに使用する概念の階層ツリーです。

既存のナレッジ・ベースを新しいシソーラスで補強する場合は、シノニムや下位語に暗黙的に拡張するABOUT演算子を使用して問い合せます。この問合せにシソーラス演算子は使用しません。

カスタム・シソーラスで既存のナレッジ・ベースを補強する手順は、次のとおりです。

  1. カスタム・シソーラスを作成し、新規語句を既存のナレッジ・ベースの語句にリンクします。
  2. 次のいずれかの方法でシソーラスをロードします。
  3. ctxkbtcコンパイラを使用して、ロード済シソーラスを次のようにコンパイルします。
  4. ドキュメントを索引付けします。デフォルトでは、システムが索引のテーマ・コンポーネントを作成します。
  5. ABOUT演算子を使用して問合せを行います。たとえば、語句politicsに関連するシノニムまたは下位語を含むすべてのドキュメントを検索するには、次の問合せを入力します。
10.3.2.1 メリット

カスタム・シソーラスを索引付けの前に既存のナレッジ・ベースにコンパイルすると、ABOUT演算子を使用することにより問合せが高速かつ単純になります。また、ドキュメント・サービスで、テーマ・サマリーと要旨を作成する際にカスタマイズされた情報を利用できます。

10.3.2.2 制限事項

ABOUT演算子を使用するには、索引内にテーマ・コンポーネントが存在していることが必要であり、この場合は必要なディスク領域が多少増加します。ドキュメントを索引付けする前にシソーラスを定義する必要があります。シソーラスを変更した場合は、シソーラスを再コンパイルし、ドキュメントを再索引付けする必要があります。

10.3.2.3 新規語句の既存語句へのリンク

ナレッジ・ベースに語句を追加する場合は、テーマの検証で最適な結果が得られるように、新規語句をナレッジ・ベースのカテゴリの1つにリンクすることをお薦めします。

関連項目:

提供される英語のナレッジ・ベースの詳細は、『Oracle Textリファレンス』を参照してください。

新規語句が既存のカテゴリから完全に分離している場合は、新規語句から検証されるテーマが少なくなります。その結果、ABOUT問合せの精度が低下し、要旨およびテーマのハイライト表示の品質も低下します。

既存語句を新規語句の上位語にすることによって、新規語句を既存語句にリンクします。

10.3.2.3.1 例: 新規語句の既存語句へのリンク

医学用語の階層を含む医学シソーラスmedthesを購入したとします。このシソーラスの4つの最上位語は、次のとおりです。

  • Anesthesia and Analgesia(麻酔および無痛)

  • Anti-Allergic and Respiratory System Agents(抗アレルギー薬および呼吸器系薬)

  • Anti-Inflammatory Agents, Antirheumatic Agents, and Inflammation Mediators(抗炎症薬、抗リウマチ薬および炎症伝達物質)

  • Antineoplastic and Immunosuppressive Agents(抗腫瘍薬および免疫抑制薬)

これらの語句を既存のナレッジ・ベースにリンクするには、医学シソーラスに次のエントリを追加して、新規語句を既存のhealth and medicineブランチにマップします。

health and medicine
 NT Anesthesia and Analgesia
 NT Anti-Allergic and Respiratory System Agents
 NT Anti-Inflamammatory Agents, Antirheumatic Agents, and Inflamation Mediators
 NT Antineoplastic and Immunosuppressive Agents
10.3.2.4 ctxloadによるシソーラスのロード

医学シソーラスがmed.thesというファイルにあるとします。次のように、ctxloadを使用して、シソーラスをmedthesとしてロードします。

ctxload -thes -thescase y -name medthes -file med.thes -user ctxsys

ctxloadコマンドラインを入力すると、ユーザー・パスワードの入力を要求されます。セキュリティを確実にするために、コマンドラインにパスワードを入力しないでください。かわりに、-userを省略し、ユーザー名とパスワードのそれぞれに対してctxloadでプロンプト表示するようにできます。

10.3.2.5 PL/SQLプロシージャCTX_THES.IMPORT_THESAURUSによるシソーラスのロード

次の例では、大/小文字を区別するシソーラスをmythesaurusという名前で作成し、myclobに存在するそのシソーラスの内容をOracle Textシソーラス表にインポートします。

declare 
 myclob clob; 
begin 
 myclob := to_clob('peking SYN beijing BT capital country NT beijing tokyo');
 ctx_thes.import_thesaurus(‘mythesaurus', myclob, ‘Y');
end;

インポートするシソーラスの形式(この場合myclob)は、ctxloadユーティリティで使用される形式と同じである必要があります。インポートするシソーラスの形式が正しくない場合は、IMPORT_THESAURUSで例外が発生します。

10.3.2.6 ロード済のシソーラスのコンパイル

ロードされたシソーラスmedthesをナレッジ・ベースにリンクするには、次のようにctxkbtcを使用します。

ctxkbtc -user ctxsys -name medthes 

ctxkbtcコマンドラインを入力すると、ユーザー・パスワードの入力を要求されます。ctxloadに関して、セキュリティを確実にするために、コマンドラインにパスワードを入力しないでください。

警告:

セキュリティを確実にするために、インタラクティブ・モードを使用し、ユーザー・パスワードの入力を求められたときにctxloadおよびctxkbtcにパスワードを入力することをお薦めします。コマンドラインにパスワードを入力しないことをお薦めします。

10.4 提供されるナレッジ・ベース

Oracle Textでは、英語とフランス語のナレッジ・ベースを提供します。提供されるナレッジ・ベースには、テーマ分析の実行に使用する情報が含まれています。テーマ分析には、テーマの索引付け、ABOUT問合せおよびCTX_DOCパッケージによるテーマの抽出が含まれます。

ナレッジ・ベースは、概念とカテゴリの階層ツリーです。次の6つの主要ブランチがあります。

  • Science and technology(サイエンスおよびテクノロジ)

  • Business and economics(ビジネスおよび経済)

  • Government and military(政府および軍隊)

  • Social environment(社会環境)

  • Geography(地理)

  • Abstract ideas and concepts(抽象観念および概念)

提供されるナレッジ・ベースは階層形式であり、上位語、下位語および関連語情報が含まれているという点で、シソーラスに似ています。したがって、新規語句を既存語句にリンクして業界固有のシソーラスで既存のナレッジ・ベースを補強することで、テーマ分析の精度を向上させることができます。

また、言語固有のシソーラスをナレッジ・ベースにコンパイルすると、テーマ機能を別の言語に拡張できます。

ナレッジ・ベースは、任意のシングルバイト・キャラクタ・セットで格納できます。提供されるナレッジ・ベースは、WE8ISO8859P1です。拡張ナレッジ・ベースは、US7ASCIIなどの別のキャラクタ・セットで格納できます。

この項では、次の項目について説明します。

10.4.1 言語固有のナレッジ・ベースの追加

シングルバイトの空白で区切られた言語の独自のナレッジ・ベースをロードすると、スペイン語など、英語やフランス語以外の言語にテーマ機能を拡張できます。

テーマ機能には、テーマの索引付け、ABOUT問合せ、テーマのハイライト表示およびCTX_DOCを使用したテーマ、要旨およびテーマ・サマリーの生成などの機能が含まれます。

テーマ機能は、ユーザー定義ナレッジ・ベースを追加して拡張します。たとえば、スペイン語シソーラスからスペイン語のナレッジ・ベースを作成できます。

言語固有のナレッジ・ベースをロードする手順は、次のとおりです。

  1. ユーザー定義シソーラスをctxloadを使用してロードします。
  2. 言語部分がターゲット言語になるように、NLS_LANGを設定します。charset部分は、シングルバイト・キャラクタ・セットに設定する必要があります。
  3. ロード済のシソーラスをctxkbtcを使用して次のようにコンパイルします。

    ctxkbtc -user ctxsys -name my_lang_thes

    プロンプト表示されたら、-userのパスワードを入力します。

    この文は、言語固有のナレッジ・ベースをロード済のシソーラスからコンパイルします。

索引付けおよびABOUT問合せ時のテーマ分析にこのナレッジ・ベースを使用するには、NLS_LANG言語をBASIC_LEXERプリファレンスのTHEME_LANGUAGE属性値として指定します。

10.4.2 ナレッジ・ベースの追加に関する制限事項

ナレッジ・ベースの追加には、次の制限事項が適用されます。

  • Oracleが提供するナレッジ・ベースは、英語とフランス語のみです。それ以外の言語に対しては、独自のシソーラスを用意する必要があります。

  • ナレッジ・ベースは、シングルバイト・キャラクタ・セットを持つ言語に対してのみ追加できます。マルチバイト・キャラクタ・セットでのみ表現される言語に対しては、ナレッジ・ベースを作成できません。データベースが、UTF-8などのマルチバイト・ユニバーサル・キャラクタ・セットの場合は、そのシソーラスのコンパイル時に、NLS_LANGパラメータを互換性のあるシングルバイト・キャラクタ・セットに設定する必要があります。

  • ナレッジ・ベースの追加によって、空白で区切られた言語が最適に機能します。

  • NLS_LANG言語ごとに最大で1つのナレッジ・ベースを持つことができます。

  • 上位語、下位語および関連語などの階層問合せフィードバック情報の取得操作は、英語とフランス語以外の言語では機能しません。その他の言語は、ナレッジ・ベースがユーザーのシソーラスからのみ導出されます。したがって、使用しているシソーラスから直接階層情報を取得することをお薦めします。

    関連項目:

    テーマの索引付け、ABOUT問合せ、CTX_DOCパッケージの使用方法および提供される英語のナレッジ・ベースの詳細は、『Oracle Textリファレンス』を参照してください。