27 非構造化テキストのマイニング

Oracle Data Miningを使用して非構造化テキストをマイニングする方法について説明します。

27.1 非構造化テキストについて

データ・マイニングのアルゴリズムは、量的データまたは質的データに対して動作します。量的データは順序付けされます。これは、NUMBERFLOATなどの数値データ型の列に格納されます。質的データは、カテゴリまたは分類によって識別されます。これは、VARCHAR2CHARなどの文字データ型の列に格納されます。

非構造化テキスト・データは、量的でも質的でもありません。非構造化テキストには、Webページ、ドキュメント・ライブラリ、PowerPointプレゼンテーション、製品仕様、電子メール、レポートのコメント・フィールド、コール・センターのメモなどの項目が含まれます。非構造化テキストは、企業のすべてのデータの4分の3以上を占めると言われています。非構造化テキストから意味のある情報を抽出することは、ビジネスの成功にとって不可欠となります。

27.2 テキスト・マイニングとOracle Textについて

テキスト・マイニングおよびOracle Textについて理解します。

テキスト・マイニングとは、データ・マイニング手法をテキスト用語(テキストの特徴またはテキスト・トークンとも呼ばれる)に適用するプロセスです。テキスト用語とは、テキスト・ドキュメントから抽出して、量的な重みを割り当てられた単語または単語のグループです。テキスト用語は、操作および分析の対象となるテキストの基本単位です。

Oracle Textとは、用語抽出、単語とテーマの検索およびその他のテキスト問合せ用ユーティリティを提供するデータベース・テクノロジです。トレーニング・データにテキストの列が存在する場合、Oracle Data MiningはOracle Textのユーティリティと用語の重み付け方針を使用して、テキストをマイニング用に変換します。Oracle Data Miningは、ユーザー提供の構成情報をOracle Textに渡し、その結果をモデル作成プロセスで使用します。

27.3 テキストの特徴のデータ準備に関する項

テキストの特徴のモデル・ディテール・ビューはDM$VXmodel_nameです。

テキストの特徴ビューDM$VXmodel_nameは、テキスト属性が存在する場合に、抽出されたテキストの特徴を示します。このビューには次のスキーマが含まれます。

Name                                Type
 --------------            ---------------------
 PARTITION_NAME                     VARCHAR2(128)
 COLUMN_NAME                        VARCHAR2(128)
 TOKEN                              VARCHAR2(4000)
 DOCUMENT_FREQUENCY                 NUMBER

表27-1 抽出されたテキストの特徴のテキストの特徴ビュー

列名 説明

PARTITION_NAME

詳細を取得するパーティション化されたモデルのパーティション

COLUMN_NAME

識別子列の名前

TOKEN

通常、単語または語幹であるテキスト・トークン

DOCUMENT_FREQUENCY

トレーニング・セット全体内のトークン頻度の測定基準

27.4 テキスト・マイニングを含むモデルの作成

テキスト・マイニングを含むモデルを作成する方法を説明します。

Oracle Data Miningでは、VARCHAR2CHARCLOBBLOBおよびBFILEの列内の非構造化テキストをサポートしています(次の表を参照)。

表27-2 非構造化テキストを格納できる列のデータ型

データ型 説明

BFILEおよびBLOB

Oracle Data Miningでは、モデルの作成時にBLOBおよびBFILEの列をテキストとして特定した場合のみ、これらの列をテキストとして解釈します。列をテキストとして特定していない場合は、CREATE_MODELがエラーを戻します。

CLOB

Oracle Data Miningでは、CLOBをテキストとして解釈します。

CHAR

Oracle Data Miningでは、デフォルトではCHARを質的として解釈します。モデルの作成時に、CHARの列をテキストとして特定することができます。

VARCHAR2

Oracle Data Miningでは、4000より長いデータを持つVARCHAR2をテキストとして解釈します。

Oracle Data Miningでは、デフォルトでは長さが4000以下のデータを持つVARCHAR2を質的として解釈します。モデルの作成時に、これらの列をテキストとして特定することができます。

注意:

テキストは、ネストした列ではサポートされておらず、また監視ありデータ・マイニングでターゲットとして使用することはできません。

次の表で説明されている設定は、モデルのテキスト属性に対する用語抽出プロセスを制御します。モデルの設定を指定する手順については、「モデルの設定の指定」を参照してください。

表27-3 テキスト用のモデルの設定

設定名 データ型 設定値 説明

ODMS_TEXT_POLICY_NAME

VARCHAR2(4000)

CTX_DDL.CREATE_POLICYで作成されたOracle Textのポリシー・オブジェクトの名前。

非構造化テキストからの個々のトークンの抽出方法に影響を与える。「テキスト・ポリシーの作成」を参照。

ODMS_TEXT_MAX_FEATURES

INTEGER

1 <= <= 100000

CREATE_MODELに渡される(各テキスト列のすべてのドキュメントの)ドキュメント・セットから使用する特徴の最大数。

デフォルトは3000です。

モデルには1つ以上のテキスト属性を含めることができます。テキスト属性を持つモデルには、質的属性と量的属性を含めることもできます。

テキスト属性を含むモデルを作成するには、次の手順を実行します。

  1. Oracle Textのポリシー・オブジェクトを作成します。

  2. 表27-3で説明されているモデルの構成設定を指定します。

  3. テキストとして処理する必要がある列を指定し、必要に応じて、個々の属性に対してテキスト変換指示を提供します。

  4. モデルの設定とテキスト変換指示をDBMS_DATA_MINING.CREATE_MODELに渡します。

    注意:

    O-Clusterを除くすべてのアルゴリズムでは、非構造化テキストの列をサポートできます。

    相関ルール(Apriori)では非構造化テキストを使用しないことをお薦めします。

27.5 テキスト・ポリシーの作成

Oracle Textのポリシーは、テキスト内容をどのように解釈する必要があるのかを指定します。モデル、属性、またはモデルと個々の属性の両方を制御するテキスト・ポリシーを提供できます。

モデル固有のポリシーが存在し、1つ以上の属性が独自のポリシーを持つ場合、Oracle Data Miningでは、指定された属性に対しては属性のポリシーを使用し、その他の属性に対してはモデル固有のポリシーを使用します。

テキスト・ポリシーの作成は、CTX_DDL.CREATE_POLICYプロシージャで行います。

CTX_DDL.CREATE_POLICY(
          policy_name    IN VARCHAR2,
          				filter         IN VARCHAR2 DEFAULT NULL,
          				section_group  IN VARCHAR2 DEFAULT NULL,
          				lexer          IN VARCHAR2 DEFAULT NULL,
          				stoplist       IN VARCHAR2 DEFAULT NULL,
          				wordlist       IN VARCHAR2 DEFAULT NULL);

CTX_DDL.CREATE_POLICYのパラメータについては、次の表で説明します。

表27-4 CTX_DDL.CREATE_POLICYプロシージャのパラメータ

パラメータ名 説明

policy_name

新しいポリシー・オブジェクトの名前。Oracle Textのポリシーとテキスト索引は、同じネームスペースを共有します。

filter

索引付けのためにドキュメントをプレーン・テキストに変換する方法を指定します。例としては、キャラクタ・セット用のCHARSET_FILTERや、プレーン・テキスト、HTMLおよびXML用のNULL_FILTERがあります。

filter値については、『Oracle Textリファレンス』フィルタ型に関する説明を参照してください。

section_group

ドキュメント内のセクションを特定します。たとえば、HTML_SECTION_GROUPはHTMLドキュメント内のセクションを定義します。

section_group値については、『Oracle Textリファレンス』セクション・グループ型に関する説明を参照してください。

注意: CONTEXT索引でサポートされている任意のセクション・グループを指定できます。

lexer

索引付けされている言語を特定します。たとえば、BASIC_LEXERは、空白で区切られた単語を使用する言語(英語やほとんどの西ヨーロッパ言語など)のテキストから用語を抽出するためのレクサーです。

lexer値については、『Oracle Textリファレンス』レクサー型に関する説明を参照してください。

stoplist

用語抽出から除外する単語とテーマを指定します。たとえば、英語言語のドキュメントの場合、通常、単語の「the」はストップリストに含まれます。

デフォルトではシステム提供のストップリストが使用されます。

『Oracle Textリファレンス』ストップリストに関する説明を参照してください。

wordlist

ステミング問合せおよびファジー問合せの拡張方法を指定します。ステムは、異なる文法形式で単一表現を持つことができるように単語の原形を定義します。ファジー問合せには、単語の表現における一般的なスペルミスが含まれます。

『Oracle Textリファレンス』"BASIC_WORDLISTに関する説明を参照してください。

27.6 テキスト属性の構成

列をテキスト属性として特定し、任意の属性の変換指示を指定する方法について説明します。

表27-2に示したとおり、CHAR、短いVARCHAR2 (<=4000)、BFILEおよびBLOBの列は、テキスト属性として特定できます。CHARおよび短いVARCHAR2の列が明示的に非構造化テキストとして特定されていない場合、CREATE_MODELは、これらの列を質的属性として処理します。BFILEおよびBLOBの列が明示的に非構造化テキストとして特定されていない場合、CREATE_MODELはエラーを戻します。

列をテキスト属性として特定するには、属性指定でキーワードTEXTを提供します。属性指定とは、変換レコード(transform_rec)のフィールド(attribute_spec)です。変換レコードは、CREATE_MODELに渡すことのできる変換リスト(xform_list)の構成要素です。

注意:

属性指定には、テキストに関係のない情報も含めることができます。属性指定を作成する手順については、「モデルへの変換の組込み」を参照してください。

次の表に記載されているサブセットで、属性指定のTEXTキーワードを修飾することで、任意のテキスト属性の変換指示を指定できます。

表27-5 属性固有のテキスト変換指示

サブ設定名 説明

POLICY_NAME

CTX_DDL.CREATE_POLICYで作成されたOracle Textのポリシー・オブジェクトの名前。

(POLICY_NAME:my_policy)

TOKEN_TYPE

サポートされている値は次のとおりです。

  • NORMAL (デフォルト)
  • STEM
  • THEME

「属性指定のトークン・タイプ」を参照。

(TOKEN_TYPE:THEME)

MAX_FEATURES

属性から使用する特徴の最大数。

(MAX_FEATURES:3000)

注意:

CLOBおよび長いVARCHAR2 (4000より長い場合)に対しては、変換指示を指定する場合のみ、TEXTキーワードが必要となります。CHAR、短いVARCHAR2BFILEおよびBLOBに対しては、変換指示を指定するかどうかにかかわらず、TEXTキーワードが常に必要となります。

ヒント:

『Oracle Databaseリファレンス』に示すように、データ・ディクショナリ・ビューALL_MINING_MODEL_ATTRIBUTESで属性指定を表示できます。

属性指定のトークン・タイプ

トークン・タイプとしてステムまたはテーマを指定する場合は、テキスト・ポリシーのレクサー・プリファレンスでこれらのタイプのトークンがサポートされている必要があります。

次の例では、BASIC_LEXERにテーマと英語のステムを追加します。

BEGIN
  CTX_DDL.CREATE_PREFERENCE('my_lexer', 'BASIC_LEXER');
  CTX_DDL.SET_ATTRIBUTE('my_lexer', 'index_stems', 'ENGLISH');
  CTX_DDL.SET_ATTRIBUTE('my_lexer', 'index_themes', 'YES');
END;

例27-1 テキスト用の属性指定の例

次の式では、属性に対するテキスト変換でmy_policyという名前のテキスト・ポリシーを使用する必要があることを指定します。トークン・タイプはTHEMEであり、特徴の最大数は3000です。

"TEXT(POLICY_NAME:my_policy)(TOKEN_TYPE:THEME)(MAX_FEATURES:3000)"