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 : valeur ARRAY<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 section TEXT_ANALYZE.
  • top_k : argument facultatif. Utilise une valeur INT64, qui représente la taille du dictionnaire, à l'exclusion du terme inconnu. Les termes top_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 est 20, 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 valeur INT64 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 est 3, 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 index 0.
  • 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