La funzione ML.BAG_OF_WORDS
Utilizza la funzione ML.BAG_OF_WORDS
per calcolare una rappresentazione dei documenti tokenizzati come "bag" (multiset) delle sue parole, senza tenere conto dell'ordine e della grammatica delle parole. Puoi utilizzare ML.BAG_OF_WORDS
all'interno della clausola TRASFORMA.
Sintassi
ML.BAG_OF_WORDS( tokenized_document [, top_k] [, frequency_threshold] ) OVER()
Argomenti
ML.BAG_OF_WORDS
accetta i seguenti argomenti:
tokenized_document
: valoreARRAY<STRING>
che rappresenta un documento che è stato tokenizzato. Un documento tokenizzato è una raccolta di termini (token) utilizzati per l'analisi del testo. Per saperne di più sulla tokenizzazione in BigQuery, consultaTEXT_ANALYZE
.top_k
: argomento facoltativo. Prende un valoreINT64
, che rappresenta la dimensione del dizionario, escluso il termine sconosciuto. I terminitop_k
visualizzati nella maggior parte dei documenti vengono aggiunti al dizionario fino al raggiungimento di questa soglia. Ad esempio, se questo valore è20
, vengono aggiunti i primi 20 termini univoci presenti nella maggior parte dei documenti senza aggiungere altri termini.frequency_threshold
: argomento facoltativo. Prende un valoreINT64
che rappresenta il numero minimo di documenti in cui un termine deve comparire per essere incluso nel dizionario. Ad esempio, se questo valore è3
, un termine deve apparire almeno tre volte nel documento tokenizzato per essere aggiunto al dizionario.
I termini vengono aggiunti a un dizionario se soddisfano i criteri di top_k
e frequency_threshold
, altrimenti vengono considerati come termine sconosciuto. Il termine sconosciuto è sempre il primo termine del dizionario ed è rappresentato come 0
. Il resto del dizionario è in ordine alfabetico.
Output
ML.BAG_OF_WORDS
restituisce un valore per ogni riga nell'input. Ogni valore ha il seguente tipo:
ARRAY<STRUCT<index INT64, value FLOAT64>>
Definizioni:
index
: l'indice del termine aggiunto al dizionario. I termini sconosciuti hanno un indice0
.value
: i conteggi corrispondenti nel documento.
Quote
Consulta Quote e limiti delle funzioni di servizio IA di Cloud.
Esempio
L'esempio seguente chiama la funzione ML.BAG_OF_WORDS
su una colonna di input
f
, senza termini sconosciuti:
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;
L'output è simile al seguente:
+----+---------------------------------------------------------------------------------------+ | 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"}] | +----+---------------------------------------------------------------------------------------+
Tieni presente che il risultato non contiene l'indice 0
, in quanto non sono presenti termini sconosciuti.
L'esempio seguente chiama la funzione ML.BAG_OF_WORDS
su una colonna di input
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;
L'output è simile al seguente:
+----+---------------------------------------------------------------------------------------+ | 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"}] | +----+---------------------------------------------------------------------------------------+
Tieni presente che i valori di b
e d
non vengono restituiti perché vengono visualizzati in un solo documento quando il valore di frequency_threshold
è impostato su 2
.
L'esempio seguente chiama la funzione ML.BAG_OF_WORDS
con un valore inferiore 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;
L'output è simile al seguente:
+----+---------------------------------------------------------------------------------------+ | 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"}] | +----+---------------------------------------------------------------------------------------+
Nota che il valore di b
non viene restituito, poiché specifichiamo che vogliamo i due termini principali e b
compare solo in un documento.
L'esempio seguente contiene due termini con la stessa frequenza. Uno dei termini è escluso dai risultati a causa dell'ordine alfabetico.
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;
I risultati hanno il seguente aspetto:
+----+---------------------------------------------------------------------------------------+ | 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"}] | +----+---------------------------------------------------------------------------------------+
Passaggi successivi
- Scopri di più sulla funzione
BAG_OF_WORDS
al di fuori del machine learning.