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 unterTEXT_ANALYZE
.top_k
: Optionales Argument. Verwendet den WertINT64
, der die Größe des Wörterbuchs ohne den unbekannten Begriff darstellt. Die in den meisten Dokumenten verwendetentop_k
-Begriffe werden dem Wörterbuch hinzugefügt, bis dieser Schwellenwert erreicht ist. Wenn dieser Wert beispielsweise20
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 einenINT64
-Wert, der die Mindestanzahl von Dokumenten darstellt, in denen ein Begriff in das Wörterbuch enthalten sein muss. Wenn dieser Wert beispielsweise3
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 Index0
.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
- Erfahren Sie mehr über die Funktion
BAG_OF_WORDS
außerhalb des maschinellen Lernens.