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
: valorARRAY<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 valorINT64
, que representa o tamanho do dicionário, excluindo o termo desconhecido. Os termos detop_k
que aparecem na maioria dos documentos são adicionados ao dicionário até que esse limite seja atingido. Por exemplo, se esse valor for20
, 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 valorINT64
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 for3
, 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.