6.3 テキストに対する機械学習操作を含むモデルの作成
モデルを作成し、テキストに対して機械学習操作を実行する設定を指定します。
Oracle Machine Learning for SQLでは、VARCHAR2、CHAR、CLOB、BLOBおよびBFILEの列内の非構造化テキストをサポートしています(次の表を参照)。
表6-1 非構造化テキストを格納できる列のデータ型
| データ型 | 説明 |
|---|---|
|
|
Oracle Machine Learning for SQLでは、モデルの作成時に |
|
|
OML4SQLでは、 |
|
|
OML4SQLでは、デフォルトでは |
|
|
OML4SQLでは、4000より長いデータを持つ OML4SQLでは、デフォルトでは長さが4000以下のデータを持つ |
次の表で説明されている設定は、モデルのテキスト属性に対する用語抽出プロセスを制御します。モデルの設定を指定する手順については、「モデルの設定の指定」を参照してください。
表6-2 テキスト用のモデルの設定
| 名前の設定 | データ型 | 値の設定 | 説明 |
|---|---|---|---|
|
|
|
|
非構造化テキストからの個々のトークンの抽出方法に影響を与える。 |
|
|
|
1 <= 値 <= 100000 |
デフォルトは3000です。 |
モデルには1つ以上のテキスト属性を含めることができます。テキスト属性を持つモデルには、質的属性と量的属性を含めることもできます。
テキスト属性を含むモデルを作成するには:
-
Oracle Textのポリシー・オブジェクトを作成します。
-
表6-2で説明されているモデルの構成設定を指定します。
-
テキストとして処理する必要がある列を指定し、必要に応じて、個々の属性に対してテキスト変換指示を提供します。
-
モデルの設定とテキスト変換指示を、
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.
---------------------------