カテゴリ:

文字列とバイナリ関数 (大規模言語モデル)

CLASSIFY_TEXT (SNOWFLAKE.CORTEX)

自由形式のテキストをプロバイダーが指定したカテゴリに分類します。

構文

SNOWFLAKE.CORTEX.CLASSIFY_TEXT( <input> , <list_of_categories>, [ <options> ] )
Copy

引数

必須:

input

分類する文字列。入力文字列は大文字と小文字を区別します。同じ文字列でも大文字と小文字が異なれば、結果は異なる場合があります。

list_of_categories

カテゴリを表す配列。少なくとも2個、多くても100個の一意のカテゴリが含まれている必要があります。カテゴリは大文字と小文字を区別します。これらの要件が満たされない場合、関数はエラーを返します。エラーの全リストについては、 エラー条件 をご参照ください。

カテゴリは単純な文字列でも SQL オブジェクトでもかまいません。すべてのカテゴリは同じ型にする必要があります。オブジェクトを使用して、各カテゴリの説明と例を提供し、分類精度を向上させるのに役立つコンテキストを提供することができます。各カテゴリについて、説明や例を記載する必要はありません。各カテゴリの説明や例を両方提供することも、両方とも提供しないことも自由です。

  • label: カテゴリの名前。このキーは必須です。

  • description: カテゴリの説明。説明は25単語(1~2文)以内にまとめてください。このキーはオプションです。

  • examples: カテゴリを代表する例の配列。通常必要なのは5例までですが、カテゴリごとに20例までの制限があります。例の数は、すべてのカテゴリで同じにする必要はありません。このキーはオプションです。

注釈

説明と例は入力トークンとしてカウントされるため、分類操作のコストが高くなります。詳細については、 コストの考慮事項 をご参照ください。

オプション:

options

分類操作のオプション構成(キー/値ペアとして)を含むオブジェクト。現在、利用可能なキーは以下のみです。

  • task_description: テキスト分類タスクの短い説明を含む文字列。タスクの説明は、50単語(3~4文)以内にまとめる必要があります。

戻り値

JSON オブジェクトを含む文字列を返します。JSON オブジェクトには、入力プロンプトが分類されているカテゴリが含まれます。無効な引数が指定されると、エラーが返されます。エラーの詳細については、 エラー条件 をご参照ください。

アクセス制御の要件

ユーザーは、 SNOWFLAKE.CORTEX_USER データベースロール が付与されているロールを使用する必要があります。この権限の詳細については、 必要な権限 をご参照ください。

使用上の注意

最適なパフォーマンスを得るためには、以下のガイドラインに従ってください。

  • 入力とカテゴリには平易な英語のテキストを使用します。

  • 入力テキストに含まれる平易な英語以外のテキストの量を制限します。例えば、テキスト入力でのコードスニペットやログなどのコンテンツを制限してみてください。

  • テキストには、オープンソースでないコードやフォーマット(会社固有の言語、独自のフォーマットなど)を含めないでください。この関数はエラーを返しませんが、結果は期待したものとは異なる場合があります。

  • カテゴリラベルに略語、特殊文字、専門用語を使用しないでください。

  • カテゴリは説明的である必要があります。例えば、 Xa4s3category 1 などのカテゴリを使用しても、良い結果は得られません。

  • カテゴリは相互に排他的である必要があります。

  • 入力テキストとカテゴリの関係があいまいな場合や、ニュアンスが異なる場合には、明確なタスクの説明を加えると精度を向上させることができます。

  • ラベルの説明を追加すると、説明があいまいな場合や、特定のラベルを選択する際に特定のロジックに従う必要がある場合の精度を向上させることができます。説明を記述するときは、特定のラベルを他のラベルと区別するキーポイントに焦点を当てます。

  • 例を挙げると、精度を向上させることができます。

必須引数の使用

これらの例では、 CLASSIFY_TEXT 関数を必要な引数のみで使用する方法を説明しています。

次の例では、プロンプトを travel または cooking の2つのカテゴリに分類しています。

SELECT SNOWFLAKE.CORTEX.CLASSIFY_TEXT('One day I will see the world', ['travel', 'cooking']);
Copy
{
  "label": "travel"
}

以下の例では、 text_classification_table というテーブルを作成しています。このテーブルには、テキストの列と、そのテキストに対して可能なカテゴリの列があります。CLASSIFY_TEXT 関数は、テーブルの各行で呼び出され、テキスト列の文字列を分類します。

CREATE OR REPLACE TEMPORARY TABLE text_classification_table AS
SELECT 'France' AS input, ['North America', 'Europe', 'Asia'] AS classes
UNION ALL
SELECT 'Singapore', ['North America', 'Europe', 'Asia']
UNION ALL
SELECT 'one day I will see the world', ['travel', 'cooking', 'dancing']
UNION ALL
SELECT 'my lobster bisque is second to none', ['travel', 'cooking', 'dancing'];

SELECT input,
       classes,
       SNOWFLAKE.CORTEX.CLASSIFY_TEXT(input, classes)['label'] as classification
FROM text_classification_table;
Copy

オプション引数の使用

これらの例は、 CLASSIFY_TEXT 関数の使い方を、カテゴリの説明や例、タスクの説明とともに説明しています。

次の例では、プロンプトを3つのカテゴリ(旅行、料理、フィットネス)のいずれかに分類し、タスクの説明のみを提供します。

SELECT SNOWFLAKE.CORTEX.CLASSIFY_TEXT(
  'When I am not at work, I love creating recipes using every day ingredients',
  ['travel', 'cooking', 'fitness'],
  {
    'task_description': 'Return a classification of the Hobby identified in the text'
  }
);
Copy
{
  "label": "cooking"
}

次の例では、すべてのオプションを使用して、プロンプトを旅行、料理、フィットネスのいずれかのカテゴリに分類します。

SELECT SNOWFLAKE.CORTEX.CLASSIFY_TEXT(
  'I love running every morning before the world wakes up',
  [{
    'label': 'travel',
    'description': 'Hobbies related to going from one place to another',
    'examples': ['I like flying to Europe', 'Every summer we go to Italy' , 'I love traveling to learn new cultures']
  },{
    'label': 'cooking',
    'description': 'Hobbies related to preparing food',
    'examples': ['I like learning about new ingredients', 'You must bring your soul to the recipe' , 'Baking is my therapy']
    },{
    'label': 'fitness',
    'description': 'Hobbies related to being active and healthy',
    'examples': ['I cannot live without my Strava app', 'Running is life' , 'I go to the Gym every day']
    }],
  {'task_description': 'Return a classification of the Hobby identified in the text'})
Copy
{
  "label": "fitness"
}

次の例では、すべてのオプションを使用して、プロンプトを3つのカテゴリ(旅行、料理、フィットネス)のいずれかに分類します。ただし、カテゴリによっては説明や例が省略されていたり、例の数にばらつきがあったりします。

SELECT SNOWFLAKE.CORTEX.CLASSIFY_TEXT(
  'I love running every morning before the world wakes up',
  [{
    'label': 'travel',
    'description': 'Hobbies related to going from one place to another',
    'examples': ['I like flying to Europe']
  },{
    'label': 'cooking',
    'examples': ['I like learning about new ingredients', 'You must bring your soul to the recipe' , 'Baking is my therapy']
    },{
    'label': 'fitness',
    'description': 'Hobbies related to being active and healthy'
    }],
  {'task_description': 'Return a classification of the Hobby identified in the text'})
Copy
{
  "label": "fitness"
}