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_THES
のIMPORT_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
関連項目:
-
Oracle Textのディレクトリ構造の詳細は、使用しているオペレーティング・システム固有のOracle Databaseのインストレーション・マニュアルを参照してください。
-
ctxload
およびCTX_THES
パッケージの使用方法についてさらに学習するには、『Oracle Textリファレンス』を参照してください
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 カスタム・シソーラスのロードおよびシソーラス・ベースの問合せの発行
カスタム・シソーラスを作成およびロードできます。
この方法のメリットは、索引付け後にシソーラスを変更できることです。
この方法の制限事項は、問合せにシソーラス拡張演算子を使用する必要があることです。問合せが長いと、シソーラスの拡張で余分なオーバーヘッドが発生し、問合せ速度が遅くなります。
カスタム・シソーラスを作成するには:
13.5 カスタム・シソーラスによるナレッジ・ベースの拡張
カスタム・シソーラスを既存のナレッジ・ベースのブランチに追加できます。ナレッジ・ベースは、テーマの索引付け、ABOUT
問合せおよびドキュメント・サービスでのドキュメント・テーマの抽出などに使用する概念の階層ツリーです。
既存のナレッジ・ベースを新しいシソーラスで補強する場合は、ABOUT
演算子を使用して問い合せます。この問合せは、シノニムや下位語に暗黙的に拡張します。この問合せにシソーラス演算子は使用しません。
カスタム・シソーラスで既存のナレッジ・ベースを補強するには:
13.5.1 メリット
カスタム・シソーラスを索引付けの前に既存のナレッジ・ベースにコンパイルすると、ABOUT
演算子を使用することにより問合せが高速かつ単純になります。また、ドキュメント・サービスで、テーマ・サマリーと要旨を作成する際にカスタマイズされた情報を利用できます。
13.6 新規語句の既存語句へのリンク
ナレッジ・ベースに語句を追加する場合は、テーマの検証で最適な結果が得られるように、新規語句をナレッジ・ベースのカテゴリの1つにリンクすることをお薦めします。
新規語句を既存のカテゴリから完全に分離すると、新規語句から検証されるテーマが少なくなります。その結果、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.
を使用したテーマ、要旨およびテーマ・サマリーの生成などの機能が含まれます
テーマ機能は、ユーザー定義ナレッジ・ベースを追加して拡張します。たとえば、スペイン語シソーラスからスペイン語のナレッジ・ベースを作成できます。
言語固有のナレッジ・ベースをロードするには:
索引付けおよびABOUT
問合せ時のテーマ分析にこのナレッジ・ベースを使用するには、NLS_LANG
言語をBASIC_LEXER
プリファレンスのTHEME_LANGUAGE
属性値として指定します。
13.10.2 ナレッジ・ベースの追加に関する制限事項
次に、ナレッジ・ベースの追加に関する制限事項を示します。
-
Oracleが提供するナレッジ・ベースは、英語とフランス語のみです。それ以外の言語に対しては、独自のシソーラスを用意する必要があります。
-
ナレッジ・ベースは、シングルバイト文字セットを持つ言語に対してのみ追加できます。マルチバイト文字セットのみで表現される言語に対して、ナレッジ・ベースを作成することはできません。データベースが、UTF-8などのマルチバイト・ユニバーサル文字セットの場合は、そのシソーラスのコンパイル時に、
NLS_LANG
パラメータを互換性のあるシングルバイト文字セットに設定する必要があります。 -
ナレッジ・ベースの追加によって、空白で区切られた言語が最適に機能します。
-
各
NLS_LANG
言語に対して許可されるナレッジ・ベースは1つのみです。 -
階層問合せフィードバック情報(たとえば、上位語、下位語、関連語)の取得操作は、英語とフランス語以外の言語では機能しません。その他の言語は、ナレッジ・ベースがユーザーのシソーラスからのみ導出されます。したがって、使用しているシソーラスから直接階層情報を取得することをお薦めします。