Función ML.TF_IDF

El término frecuencia de un documento con frecuencia inversa (TF-IDF) refleja la importancia de una palabra para un documento de una colección o un corpus. Usa la función ML.TF_IDF a fin de calcular el TF-IDF de términos en un documento, dada la frecuencia inversa del documento procesado previamente para su uso en la creación del modelo de aprendizaje automático. Puedes usar ML.TF_IDF dentro de la cláusula TRANSFORM.

Esta función usa un algoritmo de TF-IDF para calcular la relevancia de los términos en un conjunto de documentos con asignación de token. TF-IDF multiplica dos métricas: cuántas veces aparece un término en un documento (frecuencia de término) y la frecuencia de documento inversa del término en una colección de documentos (frecuencia de documento inversa).

  • TF-IDF:

    term frequency * inverse document frequency
    
  • Frecuencia de términos:

    (count of term in document) / (document size)
    
  • Frecuencia inversa del documento:

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

Los términos se agregan a un diccionario de términos si cumplen con los criterios para top_k y frequency_threshold; de lo contrario, se consideran el término desconocido. El término desconocido siempre es el primer término del diccionario y se representa como 0. El resto del diccionario está en orden alfabético.

Sintaxis

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

Argumentos

ML.TF_IDF toma los siguientes argumentos:

  • tokenized_document: el valor ARRAY<STRING> que representa un documento al que se le asignó un token. Un documento con asignación de token es una colección de términos (tokens), que se usan para el análisis de texto.
  • top_k: Argumento opcional. Toma un valor INT64, que representa el tamaño del diccionario, sin incluir el término desconocido. Los términos top_k que aparecen en la mayoría de los documentos se agregan al diccionario hasta que se cumple este límite. Por ejemplo, si este valor es 20, los 20 términos únicos principales que aparecen en la mayoría de los documentos se agregan y, luego, no se agregan términos adicionales.
  • frequency_threshold: Argumento opcional. Toma un valor INT64 que represente la cantidad mínima de documentos en los que un término debe aparecer para incluirse en el diccionario. Por ejemplo, si este valor es 3, un término debe aparecer en al menos tres documentos para agregarlo al diccionario.

Salida

ML.TF_IDF muestra la tabla de entrada más las siguientes columnas:

ARRAY<STRUCT<index INT64, value FLOAT64>>

Definiciones:

  • index: el índice del término que se agregó al diccionario. Los términos desconocidos tienen un índice de 0.

  • value: El cálculo de TF-IDF del término.

Cuotas

Consulta Cuotas y límites de las funciones del servicio de Cloud AI.

Ejemplo

En el siguiente ejemplo, se crea una tabla ExampleTable y se aplica la función 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;

El resultado es similar al siguiente:

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

¿Qué sigue?

  • Obtén más información sobre TF-IDF fuera del aprendizaje automático.