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
: NilaiARRAY<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, lihatTEXT_ANALYZE
.top_k
: Argumen opsional. Mengambil nilaiINT64
, yang mewakili ukuran kamus, tidak termasuk istilah yang tidak diketahui. Istilahtop_k
yang muncul di sebagian besar dokumen ditambahkan ke kamus sampai nilai minimum ini terpenuhi. Misalnya, jika nilai ini adalah20
, 20 istilah unik teratas yang muncul di sebagian besar dokumen akan ditambahkan, lalu tidak ada istilah tambahan yang ditambahkan.frequency_threshold
: Argumen opsional. Mengambil nilaiINT64
yang mewakili jumlah minimum dokumen yang harus mencakup sebuah istilah untuk disertakan dalam kamus. Misalnya, jika nilai ini adalah3
, 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 indeks0
.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
- Pelajari fungsi
BAG_OF_WORDS
di luar machine learning.