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