Função ML.TF_IDF

O termo frequência inversa de documentos (TF-IDF, na sigla em inglês) reflete a importância de uma palavra para um documento em uma coleção ou corpus. Use a função ML.TF_IDF para calcular o TF-IDF de termos em um documento, considerando a frequência pré-computada do documento inverso para uso na criação de modelos de machine learning. É possível usar ML.TF_IDF na cláusula TRANSFORM.

Essa função usa um algoritmo TF-IDF para calcular a relevância dos termos em um conjunto de documentos tokenizados. O TF-IDF multiplica duas métricas: quantas vezes um termo aparece em um documento (frequência do termo) e a frequência inversa do documento do termo em uma coleção de documentos (frequência inversa de documentos).

  • TF-IDF:

    term frequency * inverse document frequency
    
  • Frequência do termo:

    (count of term in document) / (document size)
    
  • Frequência inversa de documento:

    log(1 + num_documents / (1 + token_document_count))
    

Os termos são adicionados a um dicionário de termos se atenderem aos critérios de top_k e frequency_threshold. Caso contrário, serão considerados o termo desconhecido. O termo desconhecido é sempre o primeiro termo no dicionário e representado como 0. O restante do dicionário está em ordem alfabética.

Sintaxe

ML.TF_IDF(
  tokenized_document
  [, top_k]
  [, frequency_threshold]
)
OVER()

Argumentos

ML.TF_IDF usa os seguintes argumentos:

  • tokenized_document: valor ARRAY<STRING> que representa um documento que foi tokenizado. Um documento tokenizado é uma coleção de termos (tokens) usados para análise de texto.
  • top_k: argumento opcional. Usa um valor INT64, que representa o tamanho do dicionário, excluindo o termo desconhecido. Os termos de top_k que aparecem na maioria dos documentos são adicionados ao dicionário até que esse limite seja atingido. Por exemplo, se esse valor for 20, os 20 principais termos exclusivos que aparecem na maioria dos documentos serão adicionados e nenhum outro termo será adicionado.
  • frequency_threshold: argumento opcional. Use um valor INT64 que represente o número mínimo de documentos em que um termo precisa aparecer para ser incluído no dicionário. Por exemplo, se esse valor for 3, um termo precisará aparecer em pelo menos três documentos para ser adicionado ao dicionário.

Saída

ML.TF_IDF retorna a tabela de entrada mais as seguintes colunas:

ARRAY<STRUCT<index INT64, value FLOAT64>>

Definições:

  • index: o índice do termo que foi adicionado ao dicionário. Os termos desconhecidos têm um índice de 0.

  • value: o cálculo de TF-IDF para o termo.

Cotas

Consulte Cotas e limites de funções de serviço da IA do Cloud.

Exemplo

O exemplo a seguir cria uma tabela ExampleTable e aplica a função ML.TF_IDF:

WITH
  ExampleTable AS (
    SELECT 1 AS id, ['I', 'like', 'pie', 'pie', 'pie', NULL] AS f
    UNION ALL
    SELECT 2 AS id, ['yum', 'yum', 'pie', NULL] AS f
    UNION ALL
    SELECT 3 AS id, ['I', 'yum', 'pie', NULL] AS f
    UNION ALL
    SELECT 4 AS id, ['you', 'like', 'pie', NULL] AS f
  )
SELECT id, ML.TF_IDF(f, 3, 1) OVER () AS results
FROM ExampleTable
ORDER BY id;

O resultado será assim:

+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id |                                                                                     results                                                                                     |
+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|  1 | [{"index":"0","value":"0.12679902142647365"},{"index":"1","value":"0.1412163100645339"},{"index":"2","value":"0.1412163100645339"},{"index":"3","value":"0.29389333245105953"}] |
|  2 |                                                                                        [{"index":"0","value":"0.5705955964191315"},{"index":"3","value":"0.14694666622552977"}] |
|  3 |                                             [{"index":"0","value":"0.380397064279421"},{"index":"1","value":"0.21182446509680086"},{"index":"3","value":"0.14694666622552977"}] |
|  4 |                                             [{"index":"0","value":"0.380397064279421"},{"index":"2","value":"0.21182446509680086"},{"index":"3","value":"0.14694666622552977"}] |
+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

A seguir

  • Saiba mais sobre o TF-IDF (em inglês) fora do machine learning.