ML.BAG_OF_WORDS-Funktion

Mit der Funktion ML.BAG_OF_WORDS können Sie eine Darstellung von tokenisierten Dokumenten als Beutel (Multiset) ihrer Wörter berechnen. Dabei werden die Wortreihenfolge und Grammatik ignoriert. Sie können ML.BAG_OF_WORDS in der TRANSFORM-Klausel verwenden.

Syntax

ML.BAG_OF_WORDS(
  tokenized_document
  [, top_k]
  [, frequency_threshold]
)
OVER()

Argumente

ML.BAG_OF_WORDS verwendet die folgenden Argumente:

  • tokenized_document: ARRAY<STRING>-Wert, der ein Dokument darstellt, das tokenisiert wurde. Ein tokenisiertes Dokument ist eine Sammlung von Begriffen (Tokens), die für die Textanalyse verwendet werden. Weitere Informationen zur Tokenisierung in BigQuery finden Sie unter TEXT_ANALYZE.
  • top_k: Optionales Argument. Verwendet den Wert INT64, der die Größe des Wörterbuchs ohne den unbekannten Begriff darstellt. Die in den meisten Dokumenten verwendeten top_k-Begriffe werden dem Wörterbuch hinzugefügt, bis dieser Schwellenwert erreicht ist. Wenn dieser Wert beispielsweise 20 ist, werden die 20 besten eindeutigen Begriffe in den meisten Dokumenten hinzugefügt und dann werden keine zusätzlichen Begriffe hinzugefügt.
  • frequency_threshold: Optionales Argument. Verwendet einen INT64-Wert, der die Mindestanzahl von Dokumenten darstellt, in denen ein Begriff in das Wörterbuch enthalten sein muss. Wenn dieser Wert beispielsweise 3 lautet, muss ein Begriff mindestens einmal dreimal im tokenisierten Dokument vorkommen, damit es dem Wörterbuch hinzugefügt werden kann.

Begriffe werden einem Wörterbuch der Begriffe hinzugefügt, wenn sie die Kriterien für top_k und frequency_threshold erfüllen. Andernfalls werden sie als unbekannter Begriff betrachtet. Der unbekannte Begriff ist immer der erste Begriff im Wörterbuch und wird als 0 dargestellt. Der Rest des Wörterbuchs ist alphabetisch sortiert.

Ausgabe

ML.BAG_OF_WORDS gibt für jede Zeile in der Eingabe einen Wert zurück. Jeder Wert hat den folgenden Typ:

ARRAY<STRUCT<index INT64, value FLOAT64>>

Definitionen:

  • index: der Index des Begriffs, der dem Wörterbuch hinzugefügt wurde. Unbekannte Begriffe haben den Index 0.
  • value: Die entsprechende Anzahl im Dokument.

Kontingente

Siehe Kontingente und Limits für Cloud AI-Dienstfunktionen.

Beispiel

Im folgenden Beispiel wird die Funktion ML.BAG_OF_WORDS für eine Eingabespalte f ohne unbekannte Begriffe aufgerufen:

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;

Die Ausgabe sieht in etwa so aus:

+----+---------------------------------------------------------------------------------------+
| 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"}] |
+----+---------------------------------------------------------------------------------------+

Beachten Sie, dass das Ergebnis keinen Index 0 enthält, da es keine unbekannten Begriffe gibt.

Im folgenden Beispiel wird die Funktion ML.BAG_OF_WORDS für die Eingabespalte f aufgerufen:

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;

Die Ausgabe sieht in etwa so aus:

+----+---------------------------------------------------------------------------------------+
| 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"}] |
+----+---------------------------------------------------------------------------------------+
 

Die Werte für b und d werden nicht zurückgegeben, da sie nur in einem Dokument auftauchen, wenn der Wert von frequency_threshold auf 2 gesetzt ist.

Im folgenden Beispiel wird die Funktion ML.BAG_OF_WORDS mit einem niedrigeren Wert von top_k aufgerufen:


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;

Die Ausgabe sieht in etwa so aus:

+----+---------------------------------------------------------------------------------------+
| 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"}] |
+----+---------------------------------------------------------------------------------------+
 

Beachten Sie, wie der Wert für b nicht zurückgegeben wird, da wir die beiden wichtigsten Begriffe angeben möchten und b nur in einem Dokument angezeigt wird.

Das folgende Beispiel enthält zwei Begriffe mit derselben Häufigkeit. Einer der Begriffe ist aufgrund der alphabetischen Reihenfolge aus den Ergebnissen ausgeschlossen.


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;

Das Ergebnis sieht in etwa so aus:

+----+---------------------------------------------------------------------------------------+
| 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"}] |
+----+---------------------------------------------------------------------------------------+

Nächste Schritte