카테고리:

문자열 및 이진 함수 (AI 함수)

CLASSIFY_TEXT(SNOWFLAKE.CORTEX)

참고

AI_CLASSIFY 는 이 함수의 최신 버전입니다. 다중 레이블 및 이미지 분류에는 AI_CLASSIFY 를 사용할 수 있습니다. 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문장) 이내로 작성해야 합니다.

반환

OBJECT 값(VARIANT). 오브젝트의 label 필드는 입력 프롬프트가 속한 카테고리를 지정하는 문자열입니다.

액세스 제어 요구 사항

사용자는 SNOWFLAKE.CORTEX_USER 데이터베이스 역할 이 부여된 역할을 사용해야 합니다. 이 권한에 대한 자세한 내용은 필수 권한 섹션을 참조하십시오.

사용법 노트

최적의 성능을 위해 다음 지침을 따르십시오.

  • 입력 및 카테고리에는 일반 영어 텍스트를 사용하십시오.

  • 입력 텍스트에서는 일반 영어가 아닌 텍스트의 양을 제한합니다. 예를 들어, 텍스트 입력에서 코드 조각이나 로그와 같은 콘텐츠를 제한해 보십시오.

  • 텍스트에는 오픈 소스가 아닌 코드나 형식(회사 고유의 언어, 독점 형식 등)이 포함되어서는 안 됩니다. 이 함수는 오류를 반환하지 않지만, 결과가 예상한 것과 다를 수 있습니다.

  • 카테고리 레이블에는 약어, 특수 문자 또는 전문 용어를 사용하지 마십시오.

  • 카테고리는 설명적인 내용이어야 합니다. 예를 들어 Xa4s3 또는 category 1 과 같은 카테고리를 사용하면 좋은 결과를 얻을 수 없습니다.

  • 카테고리는 상호 배타적이어야 합니다.

  • 입력 텍스트와 카테고리 간의 관계가 모호하거나 미묘한 경우 명확한 작업 설명을 추가하면 정확도를 높일 수 있습니다.

  • 라벨 설명을 추가하면 설명이 모호하거나 특정 라벨을 선택할 때 특정 논리를 따라야 하는 경우 정확도를 높일 수 있습니다. 설명을 작성할 때는 특정 레이블을 다른 레이블과 구별하는 핵심적인 측면에 집중하십시오.

  • 각 레이블, 설명 및 예시는 CLASSIFY_TEXT 함수 호출로 처리되는 각 레코드에 대한 입력 토큰으로 계산됩니다. 비용은 그에 따라 발생합니다.

  • 예제를 통해 정확도를 높일 수 있습니다.

필수 인자 사용하기

이 예제는 필수 인자만 사용하여 CLASSIFY_TEXT 함수를 사용하는 방법을 설명합니다.

다음 예에서는 프롬프트를 travel 또는 cooking 의 두 카테고리 중 하나로 분류합니다.

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 함수를 사용하는 방법을 설명합니다.

다음 예제에서는 프롬프트를 세 가지 카테고리(여행, 요리 또는 피트니스) 중 하나로 분류하여 작업 설명만 제공합니다.

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"
}

다음 예제에서는 모든 옵션을 사용하여 프롬프트를 세 가지 범주(여행, 요리 또는 피트니스) 중 하나로 분류합니다. 단, 일부 카테고리의 경우 설명이나 예제가 생략되어 있으며, 예제의 개수도 다양합니다.

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"
}

제한 사항

Snowflake Cortex 함수는 동적 테이블을 지원하지 않습니다.