Función ML.BAG_OF_WORDS
Usa la función ML.BAG_OF_WORDS
para calcular una representación de documentos con asignación de token como la bolsa (multiconjunto) de sus palabras, sin tener en cuenta el orden de las palabras y la gramática. Puedes usar ML.BAG_OF_WORDS
dentro de la cláusula TRANSFORM.
Sintaxis
ML.BAG_OF_WORDS( tokenized_document [, top_k] [, frequency_threshold] ) OVER()
Argumentos
ML.BAG_OF_WORDS
toma los siguientes argumentos:
tokenized_document
: el valorARRAY<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. Para obtener más información sobre la asignación de token en BigQuery, consultaTEXT_ANALYZE
.top_k
: Argumento opcional. Toma un valorINT64
, que representa el tamaño del diccionario, sin incluir el término desconocido. Los términostop_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 es20
, 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 valorINT64
que representa la cantidad mínima de documentos en los que debe aparecer un término para que se incluya en el diccionario. Por ejemplo, si el valor es3
, un término debe aparecer al menos tres veces en el documento con asignación de token para que se lo agregue al diccionario.
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 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.
Salida
ML.BAG_OF_WORDS
muestra un valor para cada fila en la entrada. Cada valor tiene el siguiente tipo:
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 de0
.value
: Los registros correspondientes en el documento.
Cuotas
Consulta Cuotas y límites de las funciones del servicio de Cloud AI.
Ejemplo
En el siguiente ejemplo, se llama a la función ML.BAG_OF_WORDS
en una columna de entrada f
, sin términos desconocidos:
WITH ExampleTable AS ( SELECT 1 AS id, ['a', 'b', 'b', 'c'] AS f UNION ALL SELECT 2 AS id, ['a', 'c'] AS f ) SELECT ML.BAG_OF_WORDS(f, 32, 1) OVER() AS results FROM ExampleTable ORDER BY id;
El resultado es similar al siguiente:
+----+---------------------------------------------------------------------------------------+ | id | results | +----+---------------------------------------------------------------------------------------+ | 1 | [{"index":"1","value":"1.0"},{"index":"2","value":"2.0"},{"index":"3","value":"1.0"}] | | 2 | [{"index":"1","value":"1.0"},{"index":"3","value":"1.0"}] | +----+---------------------------------------------------------------------------------------+
Ten en cuenta que no hay un índice 0
en el resultado, ya que no hay términos desconocidos.
En el siguiente ejemplo, se llama a la función ML.BAG_OF_WORDS
en una columna de entrada f
:
WITH ExampleTable AS ( SELECT 1 AS id, ['a', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'd', 'd'] AS f UNION ALL SELECT 2 AS id, ['a', 'c', NULL] AS f ) SELECT ML.BAG_OF_WORDS(f, 4, 2) OVER() AS results FROM ExampleTable ORDER BY id;
El resultado es similar al siguiente:
+----+---------------------------------------------------------------------------------------+ | id | results | +----+---------------------------------------------------------------------------------------+ | 1 | [{"index":"0","value":"5.0"},{"index":"1","value":"1.0"},{"index":"2","value":"4.0"}] | | 2 | [{"index":"0","value":"1.0"},{"index":"1","value":"1.0"},{"index":"2","value":"1.0"}] | +----+---------------------------------------------------------------------------------------+
Ten en cuenta que los valores de b
y d
no se muestran como aparecen en un solo documento cuando el valor de frequency_threshold
se establece en 2
.
En el siguiente ejemplo, se llama a la función ML.BAG_OF_WORDS
con un valor menor de top_k
:
WITH ExampleTable AS ( SELECT 1 AS id, ['a', 'b', 'b', 'c'] AS f UNION ALL SELECT 2 AS id, ['a', 'c', 'c'] AS f ) SELECT ML.BAG_OF_WORDS(f, 2, 1) OVER() AS results FROM ExampleTable ORDER BY id;
El resultado es similar al siguiente:
+----+---------------------------------------------------------------------------------------+ | id | results | +----+---------------------------------------------------------------------------------------+ | 1 | [{"index":"0","value":"2.0"},{"index":"1","value":"1.0"},{"index":"2","value":"1.0"}] | | 2 | [{"index":"1","value":"1.0"},{"index":"2","value":"2.0"}] | +----+---------------------------------------------------------------------------------------+
Ten en cuenta cómo no se muestra el valor de b
, ya que especificamos que queremos los dos términos principales y b
solo aparece en un documento.
El siguiente ejemplo contiene dos términos con la misma frecuencia. Uno de los términos está excluido de los resultados debido al orden alfabético.
WITH ExampleData AS ( SELECT 1 AS id, ['a', 'b', 'b', 'c', 'd', 'd', 'd'] as f UNION ALL SELECT 2 AS id, ['a', 'c', 'c', 'd', 'd', 'd'] as f ) SELECT id, ML.BAG_OF_WORDS(f, 2 ,2) OVER() as result FROM ExampleData ORDER BY id;
Los resultados se ven de la siguiente manera:
+----+---------------------------------------------------------------------------------------+ | id | result | +----+---------------------------------------------------------------------------------------+ | 1 | [{"index":"0","value":"5.0"},{"index":"1","value":"1.0"},{"index":"2","value":"1.0"}] | | 2 | [{"index":"0","value":"3.0"},{"index":"1","value":"1.0"},{"index":"2","value":"2.0"}] | +----+---------------------------------------------------------------------------------------+
¿Qué sigue?
- Obtén información sobre la función
BAG_OF_WORDS
fuera del aprendizaje automático.