The ML.BAG_OF_WORDS function
Use a função ML.BAG_OF_WORDS
para calcular uma representação de documentos tokenizados como o pacote (multiconjunto) das palavras, desconsiderando a ordem e a gramática das palavras. É possível usar ML.BAG_OF_WORDS
na cláusula
TRANSFORM.
Sintaxe
ML.BAG_OF_WORDS( tokenized_document [, top_k] [, frequency_threshold] ) OVER()
Argumentos
ML.BAG_OF_WORDS
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. Para mais informações sobre tokenização no BigQuery, consulteTEXT_ANALYZE
.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. Usa um valorINT64
que representa 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 pelo menos três vezes no documento tokenizado para ser adicionado ao dicionário.
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.
Saída
ML.BAG_OF_WORDS
retorna um valor para cada linha na entrada. Cada valor tem o
seguinte tipo:
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 de0
.value
: as contagens correspondentes no documento.
Cotas
Consulte Cotas e limites de funções de serviço da IA do Cloud.
Exemplo
O exemplo a seguir chama a função ML.BAG_OF_WORDS
em uma coluna de entrada f
, sem termos desconhecidos:
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;
O resultado será assim:
+----+---------------------------------------------------------------------------------------+ | 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"}] | +----+---------------------------------------------------------------------------------------+
Não há índice 0
no resultado, porque não há termos desconhecidos.
O exemplo a seguir chama a função ML.BAG_OF_WORDS
em uma coluna 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;
O resultado será assim:
+----+---------------------------------------------------------------------------------------+ | 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"}] | +----+---------------------------------------------------------------------------------------+
Observe que os valores de b
e d
não são retornados porque aparecem em apenas um documento quando o valor de frequency_threshold
está definido como 2
.
O exemplo a seguir chama a função ML.BAG_OF_WORDS
com um 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;
O resultado será assim:
+----+---------------------------------------------------------------------------------------+ | 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"}] | +----+---------------------------------------------------------------------------------------+
Observe como o valor de b
não é retornado porque especificamos que queremos os dois termos principais, e b
aparece apenas em um documento.
O exemplo a seguir contém dois termos com a mesma frequência. Um dos termos foi excluído dos resultados devido à ordem alfabética.
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;
Os resultados têm a seguinte aparência:
+----+---------------------------------------------------------------------------------------+ | 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"}] | +----+---------------------------------------------------------------------------------------+
A seguir
- Saiba mais sobre a função
BAG_OF_WORDS
fora do machine learning.