UTL_TO_CHUNKS
大きなプレーン・テキスト・ドキュメントをテキストの小さなチャンクに分割するには、DBMS_VECTOR_CHAIN.UTL_TO_CHUNKS
チェーン可能ユーティリティ関数を使用します。
用途
テキストからチャンクへの変換を実行します。このチェーン可能ユーティリティ関数は、操作のためにVECTOR_CHUNKS
SQL関数を内部的にコールします。
大きなドキュメントを埋め込むには、まず、チャンク化と呼ばれる分割プロセスを介して、適切なサイズの複数のセグメントまたはチャンクに分割する必要があります(「データ変換のステージの理解」を参照)。チャンクは、単語(特定の単語や単語の断片を捕らえます)、文(特定の意味を捕らえます)または段落(より広いテーマを捕らえます)です。単一のドキュメントを複数のチャンクに分割し、それぞれをベクトルに変換できます。
構文
DBMS_VECTOR_CHAIN.UTL_TO_CHUNKS (
DATA IN CLOB | VARCHAR2,
PARAMS IN JSON default NULL
) return VECTOR_ARRAY_T;
データ
この関数は、入力データ型をCLOB
またはVARCHAR2
として受け入れます。
CLOB
の配列を返します。各CLOB
には、次のように、JSON形式のメタデータとともにチャンクが含まれています。
{
"chunk_id" : NUMBER,
"chunk_offset" : NUMBER,
"chunk_length" : NUMBER,
"chunk_data" : "VARCHAR2(4000)"
}
{"chunk_id":1,"chunk_offset":1,"chunk_length":6,"chunk_data":"sample"}
-
chunk_id
は、各チャンクのチャンクIDを示します。 -
chunk_offset
は、ソース・ドキュメント内の各チャンクの元の位置を示します(ドキュメントの始まりの位置である1
を基準とする)。 -
chunk_length
は、各チャンクの文字長を示します。 -
chunk_data
は、各チャンクのテキストの部分を示します。
PARAMS
入力パラメータをJSON形式で指定します。
{
"by" : mode,
"max" : max,
"overlap" : overlap,
"split" : split_condition,
"custom_list" : [ split_chars1, ... ],
"vocabulary" : vocabulary_name,
"language" : nls_language,
"normalize" : normalize_mode,
"norm_options" : [ normalize_option1, ... ],
"extended" : boolean
}
次に例を示します。
JSON('
{ "by" : "vocabulary",
"vocabulary" : "myvocab",
"max" : "100",
"overlap" : "0",
"split" : "custom",
"custom_list" : [ "<p>" , "<s>" ],
"language" : "american",
"normalize" : "options",
"norm_options" : [ "whitespace" ]
}')
これらのパラメータの詳細を次に示します:
パラメータ | 説明および許容される値 |
---|---|
|
データを分割するモードを指定します。つまり、文字、単語または語彙トークンの数をカウントして分割します。 有効な値は次のとおりです。:
デフォルト値: |
|
各チャンクの最大サイズの制限を指定します。この設定では、大きいテキストで最大制限に達したときに、固定された位置で入力テキストが分割されます。 有効な値は次のとおりです。:
デフォルト値: |
|
最大サイズ制限に達したときに入力テキストを分割する位置を指定します。これにより、チャンクに対して適切な境界を定義することで、関連するデータが一緒になるように維持できます。 有効な値は次のとおりです。:
デフォルト値: |
|
チャンクに含める必要がある先行するテキストの量(正の整数リテラルまたはゼロ)を指定します(存在する場合)。これは、先行するチャンク・テキストの一部を含めて、関連するテキスト(文など)を論理的に分割するのに役立ちます。 重なりの量は、チャンクの最大サイズの測定方法(文字、単語または語彙トークン)によって異なります。重なりは、指定された 有効な値: デフォルト値: |
|
入力データの言語を指定します。 この句は、別の言語では異なる解釈になる可能性がある特定の文字(句読点や略語など)がテキストに含まれている場合に特に重要です。 有効な値は次のとおりです。:
ノート: エスケープ文字は、SQL予約語でもある言語の略語(たとえば、 次に例を示します。
デフォルト値: セッションの |
|
ドキュメントがテキストに変換されるときに発生する可能性のある問題(連続する複数の空白やスマート・クォートなど)を自動的に前処理または後処理します。正規化モードを使用して高品質のチャンクを抽出することをお薦めします。 有効な値は次のとおりです。:
デフォルト値: |
|
デフォルト値: |
例
SELECT D.id doc,
JSON_VALUE(C.column_value, '$.chunk_id' RETURNING NUMBER) AS id,
JSON_VALUE(C.column_value, '$.chunk_offset' RETURNING NUMBER) AS pos,
JSON_VALUE(C.column_value, '$.chunk_length' RETURNING NUMBER) AS siz,
JSON_VALUE(C.column_value, '$.chunk_data') AS txt
FROM docs D,
dbms_vector_chain.utl_to_chunks(D.text,
JSON('{ "by" : "words",
"max" : "100",
"overlap" : "0",
"split" : "recursively",
"language" : "american",
"normalize": "all" }')) C;
エンドツーエンドの例:
この関数を使用してエンドツーエンドのシナリオ例を実行するには、「チャンク化と埋込みの実行」および「チャンク化パラメータの構成」を参照してください。
関連トピック
親トピック: DBMS_VECTOR_CHAIN