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

シソーラスを使用して問合せアプリケーションを改善できます。

この章のトピックは、次のとおりです:

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

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

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

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

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

ノート:

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

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

CTXAPPロールがある場合は、シソーラスおよびシソーラス・エントリを作成、変更、削除、インポートおよびエクスポートできます。

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

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

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

    'syn(dog)'

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

    シソーラス・ダンプ・ファイルは、出力して他のアプリケーションの入力として使用し、それを使用してシソーラス表にシソーラスをロードできます(新しいシソーラスの基礎として既存のシソーラスを使用するときに便利です)。

    警告:

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

    ノート:

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

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

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

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

ノート:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • CTX_THES.CREATE_THESAURUS(PL/SQL)

  • CTX_THES.IMPORT_THESAURUS (PL/SQL)

  • ctxloadユーティリティ

    関連項目:

    ctxloadおよびCTX_THESパッケージの使用方法についてさらに学習するには、『Oracle Textリファレンス』を参照してください

13.1.5 提供されるシソーラス

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

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

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

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

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

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

    <Oracle_home_directory>
        <Oracle_Text_directory>
           sample
               thes

関連項目:

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

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

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

13.2.1 シノニムの定義

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

XML
SYN Extensible Markup Language

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

'SYN(XML)'

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

'XML, Extensible Markup Language'

13.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'

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

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

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

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

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

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

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

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

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

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

カスタム・シソーラスを作成するには:

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

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

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

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

カスタム・シソーラスで既存のナレッジ・ベースを補強するには:

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

13.5.1 メリット

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

13.5.2 制限事項

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

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

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

関連項目:

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

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

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

例として、医学用語の階層を含む医学シソーラス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

13.7 ctxloadによるシソーラスのロードの例

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

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

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

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

この例では、大/小文字を区別するシソーラスを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で例外が発生します。

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

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

ctxkbtc -user ctxsys -name medthes 

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

警告:

セキュリティを確実にするために、対話型モードでctxloadおよびctxkbtcにパスワードを入力することをお薦めします。このモードでは、ユーザー・パスワードの入力が要求されます。コマンドラインにパスワードを入力しないことをお薦めします。

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

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

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

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

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

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

  • Social environment(社会環境)

  • Geography(地理)

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

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

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

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

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

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

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

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

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

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

言語固有のナレッジ・ベースをロードするには:

  1. カスタム・シソーラスをctxloadを使用してロードします。
  2. 言語部分がターゲット言語になるように、NLS_LANGを設定します。charset部分は、シングルバイト文字セットに設定する必要があります。
  3. ctxkbtcを使用してロードしたシソーラスをコンパイルし、-userのパスワードを要求に応じて入力します。この文は、言語固有のナレッジ・ベースをロード済のシソーラスからコンパイルします。
    ctxkbtc -user ctxsys -name my_lang_thes

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

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

次に、ナレッジ・ベースの追加に関する制限事項を示します。

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

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

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

  • NLS_LANG言語に対して許可されるナレッジ・ベースは1つのみです。

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

    関連項目:

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