17.3 センチメント分類子のトレーニング

センチメント分類子をトレーニングすると、検索キーワードに関して肯定的または否定的なセンチメントを提供するために使用される分類ルールが生成されます。

次の例では、カメラのユーザー・レビューに関するセンチメント分析を実行できるセンチメント分類子をトレーニングします。

  1. トレーニング・ドキュメント表の作成および移入この表には、トレーニング・セット・ドキュメントまたはファイル名(ドキュメントが外部に存在する場合)の実際のテキストが含まれます。

    トレーニング・ドキュメントが、トレーニングされたセンチメント分類子の潜在的なバイアスを避けるためにランダムに選択されていることを確認します。肯定的なドキュメントと否定的なドキュメントの分布を歪めることはできません。Oracle Textでは、センチメント分類子のトレーニング中にこの分布をチェックします。

    create table training_camera (review_id number primary key, text varchar2(2000));
    insert into training_camera values( 1,'/sa/reviews/cameras/review1.txt');
    insert into training_camera values( 2,'/sa/reviews/cameras/review2.txt');
    insert into training_camera values( 3,'/sa/reviews/cameras/review3.txt');
    insert into training_camera values( 4,'/sa/reviews/cameras/review4.txt');
    
  2. カテゴリ表の作成および移入

    この表では、ドキュメント表内に存在するドキュメントのトレーニング・ラベルを指定します。トレーニング・セット・ドキュメント正しいセンチメントが分類子に伝えられます。

    ドキュメント表のプライマリ・キーには、カテゴリ表の一意のキーとの外部キー関係が必要です。これらの列の名前をCTX_CLS.SA_TRAINプロシージャに渡して、センチメント・ラベルを対応するドキュメントに関連付けることができるようにする必要があります。

    Oracle Textは、分類子プリファレンスとcategory値に対して指定されているパラメータを検証します。category値は、肯定的な場合は1、否定的な場合は2、中立のセンチメントの場合は0に制限されます。categoryが0のドキュメント(中立のドキュメント)は、分類子のトレーニング中に使用されません。ドキュメントIDとカテゴリを除く、カテゴリ表の追加の列も分類子で使用されません。

    create table train_category (doc_id number, category number, category_desc varchar2(100));
    
    insert into train_category values (1,0,'neutral');
    insert into train_category values (2,1,'positive');
    insert into train_category values (3,2,'negative');
    insert into train_category values (4,2,'negative');
    
  3. トレーニング・ドキュメント表でコンテキスト索引を作成します。この索引を使用して、センチメント分類子のトレーニング中にドキュメントのトレーニングに関連するメタデータを抽出します。

    この例では、索引を移入なしで作成します。

    exec ctx_ddl.create_preference('fds','DIRECTORY_DATASTORE');
    create index docx on training_camera(text) indextype is ctxsys.context parameters ('datastore fds nopopulate');
  4. (オプション)カメラ・レビューで構成されるドキュメント・セットでセンチメント分析を実行するclsfier_cameraセンチメント分類子プリファレンスを作成します。
  5. センチメント分類子clsfier_camera.をトレーニングします

    トレーニング中、Oracle Textでは否定的なドキュメントに対する肯定的なドキュメントの比率が確認されます。この比率が0.4から0.6の範囲内にない場合、センチメント分類子が歪められていることを示す警告がCTXログに書き込まれます。センチメント分類子は、トレーニング後、センチメント問合せで使用してセンチメント分析を実行できるようになります。

    次の例では、clsfier_cameraはトレーニングされているセンチメント分類子の名前、review_idはドキュメント・トレーニング・セットのドキュメントID列の名前、train_categoryはトレーニング・セット・ドキュメントのラベルを含むカテゴリ表の名前、doc_idはカテゴリ表のドキュメントID列、categoryはカテゴリ表のカテゴリ列、およびclsfierは分類子のトレーニングに使用されるセンチメント分類子プリファレンスの名前です。

    exec ctx_cls.sa_train_model('clsfier_camera','docx','review_id','train_category','doc_id','category','clsfier');

    ノート:

    CTX_CLS.SA_TRAIN_MODELプロシージャの実行時にセンチメント分類子プリファレンスを指定しないと、Oracle TextではデフォルトのプリファレンスCTXSYS.DEFAULT_SENTIMENT_CLASSIFIER.が使用されます