6.3 テキストに対する機械学習操作を含むモデルの作成

モデルを作成し、テキストに対して機械学習操作を実行する設定を指定します。

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

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

データ型 説明

BFILEおよびBLOB

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

CLOB

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

CHAR

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

VARCHAR2

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

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

ノート:

テキストは、ネストした列ではサポートされておらず、また教師あり機械学習ターゲットとして使用することはできません。

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

表6-2 テキスト用のモデルの設定

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

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. 表6-2で説明されているモデルの構成設定を指定します。

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

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

    ノート:

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

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

次の例では、SVMモデルを使用して、アフィニティ・カードのロイヤルティ・プログラムに好反応を示す可能性が最も高い顧客を予測します。データには、ユーザーが生成したコメントを含むテキスト列が含まれています。Oracle Textポリシーを作成し、モデル設定を指定することで、アルゴリズムは自動的にテキスト列を使用し、構造化データと非構造化テキストの両方でモデルを構築します。

この例では、SH.SALES表から作成された、mining_dataというビューを使用します。mining_train_textというトレーニング・データ・セットも作成されます。

次の問合せは、Oracle Textポリシーを作成し、CREATE_MODEL2プロシージャを使用してモデルを構築する方法を示します。

%script

BEGIN

EXECUTE ctx_ddl.create_policy('dmdemo_svm_policy');

出力は次のとおりです。


PL/SQL procedure successfully completed.

---------------------------

PL/SQL procedure successfully completed.
%script

BEGIN DBMS_DATA_MINING.DROP_MODEL('T_SVM_Clas_sample');
EXCEPTION WHEN OTHERS THEN NULL; END;
/
DECLARE
    v_setlst DBMS_DATA_MINING.SETTING_LIST;
    xformlist dbms_data_mining_transform.TRANSFORM_LIST;

BEGIN
   
    v_setlst(dbms_data_mining.algo_name) := dbms_data_mining.algo_support_vector_machines;
    v_setlst(dbms_data_mining.prep_auto) :=  dbms_data_mining.prep_auto_on;
    v_setlst(dbms_data_mining.svms_kernel_function) := dbms_data_mining.svms_linear;
    v_setlst(dbms_data_mining.svms_complexity_factor) := '100';
    v_setlst(dbms_data_mining.odms_text_policy_name) := 'DMDEMO_SVM_POLICY';
  
    v_setlst(dbms_data_mining.svms_solver) :=  dbms_data_mining.svms_solver_sgd;
    dbms_data_mining_transform.SET_TRANSFORM(
        xformlist, 'comments', null, 'comments', null, 'TEXT');
    DBMS_DATA_MINING.CREATE_MODEL2(
        model_name          => 'T_SVM_Clas_sample',
        mining_function     => dbms_data_mining.classification,
        data_query          => 'select * from mining_train_text',
        set_list            => v_setlst,
        case_id_column_name => 'cust_id',
        target_column_name  => 'affinity_card',
        xform_list => xformlist);
END;
/ 

出力は次のとおりです。



PL/SQL procedure successfully completed.

---------------------------

PL/SQL procedure successfully completed.

---------------------------