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