Fungsi ML.BAG_OF_WORDS

Gunakan fungsi ML.BAG_OF_WORDS untuk menghitung representasi dokumen dengan token sebagai tempat (multiset) kata-katanya, dengan mengabaikan urutan kata dan tata bahasa. Anda dapat menggunakan ML.BAG_OF_WORDS dalam klausa TRANSFORM.

Sintaksis

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

Argumen

ML.BAG_OF_WORDS menggunakan argumen berikut:

  • tokenized_document: Nilai ARRAY<STRING> yang mewakili dokumen yang telah ditokenkan. Dokumen yang ditokenkan adalah kumpulan istilah (token), yang digunakan untuk analisis teks. Untuk mengetahui informasi selengkapnya tentang tokenisasi di BigQuery, lihat TEXT_ANALYZE.
  • top_k: Argumen opsional. Mengambil nilai INT64, yang mewakili ukuran kamus, tidak termasuk istilah yang tidak diketahui. Istilah top_k yang muncul di sebagian besar dokumen ditambahkan ke kamus sampai nilai minimum ini terpenuhi. Misalnya, jika nilai ini adalah 20, 20 istilah unik teratas yang muncul di sebagian besar dokumen akan ditambahkan, lalu tidak ada istilah tambahan yang ditambahkan.
  • frequency_threshold: Argumen opsional. Mengambil nilai INT64 yang mewakili jumlah minimum dokumen yang harus mencakup sebuah istilah untuk disertakan dalam kamus. Misalnya, jika nilai ini adalah 3, sebuah istilah harus muncul setidaknya tiga kali dalam dokumen dengan token agar dapat ditambahkan ke kamus.

Istilah ditambahkan ke kamus istilah jika memenuhi kriteria untuk top_k dan frequency_threshold. Jika tidak, istilah tersebut dianggap istilah yang tidak diketahui. Istilah yang tidak diketahui selalu menjadi istilah pertama dalam kamus dan direpresentasikan sebagai 0. Kamus lainnya diurutkan menurut abjad.

Output

ML.BAG_OF_WORDS menampilkan nilai untuk setiap baris dalam input. Setiap nilai memiliki jenis berikut:

ARRAY<STRUCT<index INT64, value FLOAT64>>

Definisi:

  • index: Indeks istilah yang ditambahkan ke kamus. Istilah yang tidak diketahui memiliki indeks 0.
  • value: Jumlah yang sesuai dalam dokumen.

Kuota

Lihat Kuota dan batas fungsi layanan Cloud AI.

Contoh

Contoh berikut memanggil fungsi ML.BAG_OF_WORDS pada kolom input f, tanpa istilah yang tidak diketahui:

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;

Outputnya mirip dengan hal berikut ini:

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

Perhatikan bahwa tidak ada indeks 0 dalam hasil, karena tidak ada istilah yang tidak diketahui.

Contoh berikut memanggil fungsi ML.BAG_OF_WORDS pada kolom 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;

Outputnya mirip dengan hal berikut ini:

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

Perhatikan bahwa nilai untuk b dan d tidak ditampilkan karena hanya muncul di satu dokumen jika nilai frequency_threshold ditetapkan ke 2.

Contoh berikut memanggil fungsi ML.BAG_OF_WORDS dengan nilai top_k yang lebih rendah:

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;

Outputnya mirip dengan hal berikut ini:

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

Perhatikan bahwa nilai untuk b tidak ditampilkan karena kita menentukan bahwa kita menginginkan dua istilah teratas, dan b hanya muncul dalam satu dokumen.

Contoh berikut berisi dua istilah dengan frekuensi yang sama. Salah satu istilah dikecualikan dari hasil karena urutan abjad.

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;

Hasilnya akan terlihat seperti berikut:

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

Langkah selanjutnya