Categorias:

Funções de cadeia de caracteres e binários (funções de AI)

CLASSIFY_TEXT (SNOWFLAKE.CORTEX)

Nota

AI_CLASSIFY é a versão mais recente dessa função. Você pode usar o AI_CLASSIFY para classificação de imagens e de vários rótulos. Você pode continuar a usar CLASSIFY_TEXT (SNOWFLAKE.CORTEX).

Classifica o texto de forma livre em categorias fornecidas pelo usuário.

Sintaxe

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

Argumentos

Obrigatório:

input

Cadeia de caracteres a ser classificada. A cadeia de caracteres de entrada diferencia maiúsculas de minúsculas. É possível obter resultados diferentes para a mesma cadeia de caracteres que usa capitalização diferente.

list_of_categories

Matriz que representa as categorias. Deve conter no mínimo duas e no máximo 100 categorias exclusivas. As categorias diferenciam maiúsculas de minúsculas.

As categorias podem ser cadeias de caracteres simples ou objetos SQL; todas as categorias devem ser do mesmo tipo. Usando objetos, é possível fornecer uma descrição e exemplos de cada categoria, fornecendo um contexto que pode ajudar a melhorar a precisão da classificação. Não é obrigatório fornecer descrições ou exemplos para cada categoria; você tem a liberdade de fornecer uma descrição, exemplos, ambos ou nenhum para cada categoria.

  • label: o nome da categoria. Essa chave é necessária.

  • description: uma descrição da categoria. As descrições não devem ter mais de 25 palavras (1 a 2 frases). Essa chave é opcional.

  • examples: uma matriz de exemplos que sejam representativos da categoria. Normalmente, não são necessários mais de cinco exemplos, mas há um limite de 20 exemplos por categoria. O número de exemplos não precisa ser o mesmo para cada categoria. Essa chave é opcional.

Nota

As descrições e os exemplos contam como tokens de entrada, o que aumenta o custo da operação de classificação. Leia mais em Considerações sobre custo.

Opcional:

options

Um objeto com configuração opcional (como pares chave-valor) para a operação de classificação. Atualmente, a única chave disponível é:

  • task_description: uma cadeia de caracteres com uma breve explicação da tarefa de classificação de texto. As descrições de tarefas não devem conter mais do que 50 palavras (3 a 4 frases).

Retornos

Um valor OBJECT (VARIANT). O campo label do objeto é uma cadeia de caracteres que especifica a categoria à qual pertence o prompt de entrada.

Requisitos de controle de acesso

Os usuários devem usar uma função que tenha a função do banco de dados SNOWFLAKE.CORTEX_USER. Consulte Privilégios obrigatórios para obter mais informações sobre esse privilégio.

Notas de uso

Para um desempenho ideal, siga estas diretrizes:

  • Use texto em inglês simples para entradas e categorias.

  • Limite a quantidade de texto que não seja em inglês simples no texto de entrada. Por exemplo, tente limitar conteúdo como trechos de código ou logs na entrada de texto.

  • O texto não deve conter código ou formatos que não sejam de código aberto (linguagens específicas da empresa, formatos proprietários etc.). A função não retornará um erro, mas os resultados podem não ser os esperados.

  • Não use abreviações, caracteres especiais ou jargões nos rótulos das categorias.

  • As categorias devem ser descritivas. Por exemplo, usar uma categoria como Xa4s3 ou category 1 não produzirá bons resultados.

  • As categorias devem ser mutuamente exclusivas.

  • A inclusão de uma descrição clara da tarefa pode melhorar a precisão quando a relação entre o texto de entrada e as categorias for ambígua ou diferenciada.

  • A adição de descrições de rótulos pode melhorar a precisão nos casos em que as descrições são ambíguas ou quando uma lógica específica deve ser seguida ao selecionar um determinado rótulo. Ao escrever descrições, concentre-se nos principais aspectos que distinguem um determinado rótulo dos demais.

  • Cada rótulo, descrição e exemplo conta como tokens de entrada para cada registro processado por uma chamada de função CLASSIFY_TEXT. Os custos são incorridos de acordo.

  • Exemplos podem ajudar a melhorar a precisão.

Exemplos

Como usar argumentos necessários

Esses exemplos ilustram como usar a função CLASSIFY_TEXT apenas com os argumentos necessários.

O exemplo a seguir classifica o prompt em uma das duas categorias, travel ou cooking:

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

O exemplo a seguir cria uma tabela, text_classification_table, que contém uma coluna para texto e uma coluna para possíveis categorias para esse texto. A função CLASSIFY_TEXT é chamada em cada linha da tabela para classificar a cadeia de caracteres na coluna de texto.

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

Como usar argumentos opcionais

Esses exemplos ilustram como usar a função CLASSIFY_TEXT com descrições e exemplos de categorias e/ou uma descrição de tarefa.

O exemplo a seguir classifica o prompt em uma das três categorias (viagem, culinária ou condicionamento físico), fornecendo apenas uma descrição da tarefa:

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

O exemplo a seguir classifica o prompt em uma das categorias viagem, culinária ou condicionamento físico, usando todas as opções.

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

O exemplo a seguir classifica o prompt em uma das três categorias (viagem, culinária ou condicionamento físico) usando todas as opções. No entanto, a descrição ou os exemplos são omitidos para algumas categorias, e o número de exemplos varia.

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

Limitações

As funções do Snowflake Cortex não são compatíveis com tabelas dinâmicas.