Fonction ML.BAG_OF_WORDS
Utilisez la fonction ML.BAG_OF_WORDS
pour calculer une représentation des documents tokenisés en tant que sac (multiset) de ses mots, sans prendre en compte l'ordre des mots et la grammaire. Vous pouvez utiliser ML.BAG_OF_WORDS
dans la clause TRANSFORM.
Syntaxe
ML.BAG_OF_WORDS( tokenized_document [, top_k] [, frequency_threshold] ) OVER()
Arguments
ML.BAG_OF_WORDS
utilise les arguments suivants :
tokenized_document
: valeurARRAY<STRING>
représentant un document qui a été tokenisé. Un document tokenisé est un ensemble de termes (jetons) utilisés pour l'analyse de texte. Pour en savoir plus sur la tokenisation dans BigQuery, consultez la sectionTEXT_ANALYZE
.top_k
: argument facultatif. Utilise une valeurINT64
, qui représente la taille du dictionnaire, à l'exclusion du terme inconnu. Les termestop_k
qui apparaissent dans la plupart des documents sont ajoutés au dictionnaire jusqu'à ce que ce seuil soit atteint. Par exemple, si cette valeur est20
, les 20 termes uniques qui apparaissent dans la plupart des documents sont ajoutés, puis aucun terme supplémentaire n'est ajouté.frequency_threshold
: argument facultatif. Prend une valeurINT64
qui représente le nombre minimal de documents dans lesquels un terme doit apparaître pour être inclus dans le dictionnaire. Par exemple, si cette valeur est3
, un terme doit apparaître au moins trois fois dans le document tokenisé pour être ajouté au dictionnaire.
Les termes sont ajoutés à un dictionnaire de termes s'ils répondent aux critères de top_k
et frequency_threshold
. Sinon, ils sont considérés comme des termes inconnus. Le terme inconnu est toujours le premier terme du dictionnaire et est représenté par 0
. Le reste du dictionnaire est classé par ordre alphabétique.
Sortie
ML.BAG_OF_WORDS
renvoie une valeur pour chaque ligne de l'entrée. Chaque valeur a le type suivant :
ARRAY<STRUCT<index INT64, value FLOAT64>>
Définitions :
index
: index du terme ajouté au dictionnaire Les termes inconnus ont un index0
.value
: nombre correspondant dans le document
Quotas
Consultez la page Quotas et limites des fonctions du service Cloud AI.
Exemple
L'exemple suivant appelle la fonction ML.BAG_OF_WORDS
sur une colonne d'entrée f
, sans termes inconnus :
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;
Le résultat ressemble à ce qui suit :
+----+---------------------------------------------------------------------------------------+ | 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"}] | +----+---------------------------------------------------------------------------------------+
Notez qu'il n'y a pas d'index 0
dans le résultat, car il n'y a pas de termes inconnus.
L'exemple suivant appelle la fonction ML.BAG_OF_WORDS
sur une colonne d'entrée 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;
Le résultat ressemble à ce qui suit :
+----+---------------------------------------------------------------------------------------+ | 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"}] | +----+---------------------------------------------------------------------------------------+
Notez que les valeurs pour b
et d
ne sont pas renvoyées, car elles n'apparaissent que dans un seul document lorsque la valeur de frequency_threshold
est définie sur 2
.
L'exemple suivant appelle la fonction ML.BAG_OF_WORDS
avec une valeur inférieure 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;
Le résultat ressemble à ce qui suit :
+----+---------------------------------------------------------------------------------------+ | 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"}] | +----+---------------------------------------------------------------------------------------+
Notez que la valeur de b
n'est pas renvoyée, car nous spécifions les deux premiers termes, et b
n'apparaît que dans un seul document.
L'exemple suivant contient deux termes ayant la même fréquence. L'un des termes est exclu des résultats en raison de l'ordre alphabétique.
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;
Les résultats se présentent comme suit :
+----+---------------------------------------------------------------------------------------+ | 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"}] | +----+---------------------------------------------------------------------------------------+
Étapes suivantes
- Découvrez la fonction
BAG_OF_WORDS
en dehors du machine learning.