18 明示的セマンティック分析

特徴抽出ファンクションの教師なしアルゴリズムとして、また分類の教師ありアルゴリズムとして、明示的セマンティック分析(ESA)を使用する方法を学習します。

18.1 明示的セマンティック分析とは

Oracle Database 12cリリース2には、特徴抽出のために教師なしアルゴリズムとして、明示的セマンティック分析(ESA)が導入されました。Oracle Database 18c以降では、ESAが分類の教師ありアルゴリズムとして機能強化されています。

特徴抽出アルゴリズムとしてのESAは、潜在的な特徴を検出するのではなく、既存のナレッジ・ベースで示される明示的な特徴を使用します。特徴抽出アルゴリズムとしてのESAは、主にテキスト・ドキュメントの意味的な類似性の計算と明示的なトピックのモデリングに使用されます。分類アルゴリズムとしてのESAは、主にテキスト・ドキュメントを分類するために使用されます。ESAの特徴抽出と分類の両方のバージョンは、数値と分類型の入力データにも適用できます。

ESAへの入力は属性ベクターのセットです。すべての属性ベクターが概念に関連付けらます。概念とは、特徴抽出の場合は特徴のこと、分類の場合はターゲット・クラスのことです。特徴抽出の場合、1つの属性ベクターのみを任意の特徴に関連付けできます。分類では、指定されたターゲット・クラスに関連付けられた複数個の属性ベクターをトレーニング・セットに含めることができます。こうした1つのターゲット・クラスに関連する複数の行は、ESAアルゴリズムによって1つの行に集計されます。

ESAの出力は、最も重要な属性と概念の相関が含まれるスパース属性概念マトリックスです。相関の強度は各属性と概念ペアの重みの値によって取得されます。属性と概念の行列は、属性ごとに最も重要な概念がリストされる逆インデックスとして保存されます。

ノート:

特徴抽出の場合、ESAアルゴリズムは元の特徴空間を投影せず、次元数が減少することはありません。ESAアルゴリズムは制限されたまたは有益でない属性セットの機能を除外します。

ESAで処理される分類タスクの範囲は、Naive Bayesやサポート・ベクター・マシンなどの分類アルゴリズムとは異なります。ESAでは、数十万もの異なるクラスがある大規模な分類を実行できます。大規模な分類には、いくつかのクラスが相当数のトレーニング・サンプルを保持していて、それ以外のクラスがトレーニング・データセット内で疎表現される膨大なトレーニング・データ・セットが必要になります。

ESAトピック空間にドキュメントを投影すると高次元スパース・ベクターが作成されますが、これは他の機械学習アルゴリズムへの入力には適していません。この問題に対処するため、Oracle Database 23cで埋込みが追加されました。自然言語処理において、埋込みは言語モデリングのセットと特徴学習手法を指し、これにより単語、フレーズまたは文書が実数のベクターにマップされます。これには、多次元空間から極小次元を持つ連続ベクター空間への数学的変換が必要になります。通常、埋込みは既存のナレッジ・ベースの最上部に構築されて、コンテキスト・データの収集を行います。この方法を使用すると、スパース高次元ベクターを高密度の低次元ベクターにマップでき、ESAコンテキストも他の機械学習アルゴリズムが使用できる状態で維持されます。出力はdoc2vec(ドキュメントからベクター)マッピングで、「言葉のバッグ(bag of words)」アプローチのかわりに使用できます。ESA埋込みでは、ESAモデルを利用して、テキストまたはその他のESA入力の埋込みを生成できます。これには単一の単語の埋込みが含まれますが、これに限定されません。

ポイントのセットのディメンショナリティを下げるには、ランダム投影アルゴリズムのスパース・バージョンを使用します。ランダム投影では、ポイント間のおおよその距離が保持されるように、元のデータが適切な低次元の空間に投影されます。他のアプローチと比較すると、ランダム投影法にはパワー、シンプルさ、および低誤差率という特徴があります。多くの自然言語タスクでランダム投影法が採用されています。

次の例では、ESA埋込みを定義するコード・スニペットを表示します。この例を使用すると、ESA埋込みを使用して密投影を作成できます。mining_build_textビューは、dmsh.sqlスクリプトのmining_dataビューから作成されます。テキスト・ポリシーが作成され、変換が設定されてから、CREATE_MODEL2プロシージャを使用してモデルが構築されます。

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

  v_setlst DBMS_DATA_MINING.SETTING_LIST;

BEGIN
  v_setlst('PREP_AUTO')               := 'ON';
  v_setlst('ALGO_NAME')               := 'ALGO_EXPLICIT_SEMANTIC_ANALYS';
  v_setlst('ODMS_TEXT_POLICY_NAME')   := 'DMDEMO_ESA_POLICY';
  v_setlst('ESAS_MIN_ITEMS')          := '5';
  v_setlst('ODMS_TEXT_MIN_DOCUMENTS') := '2';
  v_setlst('ESAS_EMBEDDINGS')         := 'ESAS_EMBEDDINGS_ENABLE';
  v_setlst('ESAS_EMBEDDING_SIZE')     := '1024';

  dbms_data_mining_transform.SET_TRANSFORM(
    xformlist, 'comments', null, 'comments', 'comments',
      'TEXT(POLICY_NAME:DMDEMO_ESA_POLICY)(TOKEN_TYPE:STEM)');

  DBMS_DATA_MINING.CREATE_MODEL2(
    model_name          => 'ESA_text_sample_dense',
    mining_function     => 'FEATURE_EXTRACTION',
    data_query          => 'SELECT * FROM mining_build_text',
    case_id_column_name => 'cust_id',
    set_list            => v_setlst,
    xform_list          => xformlist);
END;
/

18.1.1 ESAでのスコアリング

明示的セマンティック分析(ESA)の特徴抽出の典型的な用途は、指定された入力に最も関連する特徴の識別と、その関連性のスコアリングです。ESAモデルのスコアリングによって、概念の特徴空間にデータ投影が生成されます。

ESAモデルがドキュメントの任意の集合から作成される場合、それぞれが機能として扱われます。これにより、集合内で最も関連するドキュメントを特定できます。特徴抽出関数は、FEATURE_DETAILSFEATURE_IDFEATURE_SETFEATURE_VALUEおよびFEATURE_COMPAREです。ESA埋込みの実装でも同じ関数が使用されますが、特徴の空間が異なります。ESA埋込みの特徴の名前は、1から始まる連続する整数です。FEATURE_IDの出力は数値です。FEATURE_SETおよびFEATURE_DETAILSの出力に含まれる特徴IDも数値です。

ESAの一般的な分類の用途は、特定のドキュメントについてクラスを予測して、その予測の確率を推定することです。分類アルゴリズムとしてのESAは、スコアリング・ファンクションのPREDICTIONPREDICTION_PROBABILITYPREDICTION_SETPREDICTION_DETAILSPREDICTION_COSTを実装しています。

18.1.2 大きいESAモデルのスコアリング

テキスト・ドキュメントの大きな集合に明示的セマンティック分析アルゴリズム(ESA)モデルを作成すると、多くの機能またはタイトルを持つモデルになる場合があります。

スコアリングのモデル情報は、共有(共有プール・サイズ)ライブラリ・キャッシュ・オブジェクトとして、システム・グローバル領域(SGA)にロードされます。別のSQL予測問合せがこのオブジェクトを参照できます。モデル・サイズが大きい場合、データベースのSGAパラメータを大きなオブジェクトに対応する十分なサイズに設定する必要があります。SGAが小さすぎると、モデルが参照されるたびに再ロードする必要があり、パフォーマンスが低下する可能性があります。

18.2 テキスト分析用のESA

テキストの機械学習操作に明示的セマンティック分析(ESA)を使用する方法について説明します。

明示的な知識は、通常、テキスト形式で存在します。複数のナレッジ・ベースがテキスト・ドキュメントの集合として使用できます。これらのナレッジ・ベースは、Wikipediaなど一般的なものでもドメイン固有のものでもかまいません。データ準備は、テキストを属性と概念の相関を取得するベクターに変換します。ESAは、共通の用語がない場合でも、ドキュメントの意味的な関連性を定量化できます。意味的な関連性を計算するために、関数FEATURE_COMPAREを使用できます。

18.3 ESA用のデータ準備

自動データ準備では、明示的セマンティック分析(ESA)のために入力ベクターをユニット長に正規化します。

単純な(ネストされていない)データ型の列に欠損値がある場合、ESAによって質的データの欠損値は最頻値に、量的データの欠損値は平均値に自動的に置換されます。ネストした列に欠損値がある場合、ESAではそれらをスパースとして解釈します。スパースな量的データは0(ゼロ)に、スパースな質的データはゼロ・ベクターに置換されます。Oracle Machine Learning for SQLデータ準備では、入力テキストは実数のベクターに変換されます。これらの数値は、テキスト内の各用語の重要度を表しています。

参照:

使用可能なモデル設定のリストと説明は、DBMS_DATA_MINING -アルゴリズムの設定: 明示的セマンティック分析を参照してください。

ノート:

hyperparameterという用語は、モデル設定でも同じ意味で使用されます。

18.4 明示的セマンティック分析の用語

明示的セマンティック分析(ESA)に関連する用語について説明します。

複数ターゲットの分類

このような大規模な分類では、トレーニング項目が複数のクラスに属しています。その場合の分類の目的は、1つの項目に対して考えられる複数のターゲット・クラスを検出することです。この種の分類は複数ターゲット分類と呼ばれます。ESAベースの分類のターゲット列は拡張されています。コレクションはターゲット列の値として許容されます。ESAベース分類では、ターゲットのコレクション・タイプはORA_MINING_VARCHAR2_NTです。

大規模な分類

大規模な分類は、通常、数万から数十万に及ぶ膨大な数のカテゴリを含んでいるオントロジーに適用されます。この大規模分類には、通常、ばらつきがある膨大なトレーニング・データセットが必要です。これは、いくつかのクラスが相当数のトレーニング・サンプルを保持していて、その他のクラスがトレーニング・データセットで疎表現されているということです。大規模な分類では、通常、特定のテスト・ケースに対して複数のターゲット・クラスが割り当てられます。

トピックのモデリング

トピックのモデリングとは、ドキュメントに含まれる最重要のトピックを導出することです。トピックのモデリングは、明示的にすることも潜在的にすることもできます。明示的なトピックのモデリングでは、特定のドキュメントについて、事前定義された集合から最も関連のあるトピックが選択されます。明示的なトピックには名前があり、言語化できます。潜在的なトピックのモデリングでは、ドキュメントのコレクションについて、潜在的なトピックの特性の集合を識別します。こうした潜在的なトピックの部分集合が調査対象のすべてのドキュメントに関連付けられます。潜在的なトピックには、言語による説明や意味のある解釈がありません。