Topik ini menjelaskan komponen Split Word yang disediakan oleh Designer.
Komponen Split Word menggunakan Alibaba Word Segmenter (AliWS) untuk melakukan tokenisasi konten pada kolom tertentu. Token hasilnya dipisahkan dengan spasi. Jika Anda mengonfigurasi penandaan part-of-speech (POS) atau penandaan semantik, output akan mencakup token, tag POS, dan tag semantik. Tag POS dipisahkan dengan garis miring (/), sedangkan tag semantik dipisahkan dengan garis vertikal (|).
Komponen Split Word hanya mendukung tokenizer TAOBAO_CHN dan INTERNET_CHN.
Anda dapat mengonfigurasi komponen Split Word di Designer menggunakan GUI atau perintah PAI.
Konfigurasi komponen
Anda dapat mengonfigurasi komponen Split Word dengan cara berikut.
Metode 1: Gunakan GUI
Anda dapat mengonfigurasi komponen pada halaman alur kerja Designer.
|
Tab |
Parameter |
Description |
|
Fields Setting |
Column Name |
Kolom yang akan ditokenisasi. |
|
Parameters Setting |
Recognition Options |
Jenis konten yang akan dideteksi. Nilai yang valid:
Nilai default: Detect simple entities, Detect phone numbers, Detect time, Detect date, dan Detect numbers and letters. |
|
Merge Options |
Jenis konten yang akan digabungkan. Nilai yang valid:
Nilai default adalah Merge Arabic numerals. |
|
|
Filter |
Jenis filter. Nilai yang valid adalah TAOBAO_CHN dan INTERNET_CHN. Nilai default adalah TAOBAO_CHN. |
|
|
Pos Tagger |
Menentukan apakah akan melakukan penandaan part-of-speech. Secara default, fitur ini diaktifkan. |
|
|
Semantic Tagger |
Menentukan apakah akan melakukan penandaan semantik. Secara default, fitur ini dinonaktifkan. |
|
|
Filter tokens that are numbers |
Menentukan apakah akan memfilter token yang berupa angka. Secara default, fitur ini dinonaktifkan. |
|
|
Filter tokens that are all-English words |
Menentukan apakah akan memfilter token yang terdiri dari huruf Inggris saja. Secara default, fitur ini dinonaktifkan. |
|
|
Filter tokens that are punctuation marks |
Menentukan apakah akan memfilter token yang berupa tanda baca. Secara default, fitur ini dinonaktifkan. |
|
|
Execution Tuning |
Number of cores |
Nilai default dialokasikan secara otomatis oleh sistem. |
|
Memory per core |
Nilai default dialokasikan secara otomatis oleh sistem. |
Metode 2: Gunakan perintah PAI
Anda dapat menggunakan perintah PAI untuk mengonfigurasi komponen. Komponen SQL Script dapat digunakan untuk menjalankan perintah PAI tersebut. Untuk informasi selengkapnya, lihat SQL Script.
pai -name split_word_model
-project algo_public
-DoutputModelName=aliws_model
-DcolName=content
-Dtokenizer=TAOBAO_CHN
-DenableDfa=true
-DenablePersonNameTagger=false
-DenableOrgnizationTagger=false
-DenablePosTagger=false
-DenableTelephoneRetrievalUnit=true
-DenableTimeRetrievalUnit=true
-DenableDateRetrievalUnit=true
-DenableNumberLetterRetrievalUnit=true
-DenableChnNumMerge=false
-DenableNumMerge=true
-DenableChnTimeMerge=false
-DenableChnDateMerge=false
-DenableSemanticTagger=true
|
Parameter Name |
Required |
Description |
Default Value |
|
inputTableName |
Yes |
Nama tabel input. |
None |
|
inputTablePartitions |
No |
Partisi dalam tabel input yang akan ditokenisasi. Formatnya adalah |
All partitions |
|
selectedColNames |
Yes |
Kolom dalam tabel input yang akan ditokenisasi. Pisahkan beberapa nama kolom dengan koma (,). |
None |
|
dictTableName |
No |
Menentukan apakah akan menggunakan tabel kamus kustom. Tabel kamus kustom hanya memiliki satu kolom, dan setiap baris berisi satu kata. |
None |
|
tokenizer |
No |
Jenis filter. Nilai yang valid adalah TAOBAO_CHN dan INTERNET_CHN. |
TAOBAO_CHN |
|
enableDfa |
No |
Menentukan apakah akan mendeteksi entitas sederhana. Nilai yang valid: True atau False. |
True |
|
enablePersonNameTagger |
No |
Menentukan apakah akan mendeteksi nama orang. Nilai yang valid: True atau False. |
False |
|
enableOrgnizationTagger |
No |
Menentukan apakah akan mendeteksi nama organisasi. Nilai yang valid: True atau False. |
False |
|
enablePosTagger |
No |
Menentukan apakah akan melakukan penandaan part-of-speech. Nilai yang valid: True atau False. |
False |
|
enableTelephoneRetrievalUnit |
No |
Menentukan apakah akan mendeteksi nomor telepon. Nilai yang valid: True atau False. |
True |
|
enableTimeRetrievalUnit |
No |
Menentukan apakah akan mendeteksi waktu. Nilai yang valid: True atau False. |
True |
|
enableDateRetrievalUnit |
No |
Menentukan apakah akan mendeteksi tanggal. Nilai yang valid: True atau False. |
True |
|
enableNumberLetterRetrievalUnit |
No |
Menentukan apakah akan mendeteksi angka dan huruf. Nilai yang valid: True atau False. |
True |
|
enableChnNumMerge |
No |
Menentukan apakah akan menggabungkan angka Tiongkok menjadi satu unit pengambilan. Nilai yang valid: True atau False. |
False |
|
enableNumMerge |
No |
Menentukan apakah akan menggabungkan angka standar menjadi satu unit pengambilan. Nilai yang valid: True atau False. |
True |
|
enableChnTimeMerge |
No |
Menentukan apakah akan menggabungkan ekspresi waktu Tiongkok menjadi satu unit semantik. Nilai yang valid: True atau False. |
False |
|
enableChnDateMerge |
No |
Menentukan apakah akan menggabungkan ekspresi tanggal Tiongkok menjadi satu unit semantik. Nilai yang valid: True atau False. |
False |
|
enableSemanticTagger |
No |
Menentukan apakah akan melakukan penandaan semantik. Nilai yang valid: True atau False. |
False |
|
outputTableName |
Yes |
Nama tabel output. |
None |
|
outputTablePartition |
No |
Nama partisi tabel output. |
None |
|
coreNum |
No |
Jumlah worker. Parameter ini hanya berlaku jika parameter memSizePerCore juga diatur. Nilainya harus berupa bilangan bulat positif dalam rentang [1,9999]. |
Automatically allocated by the system |
|
memSizePerCore |
No |
Ukuran memori per core, dalam MB. Nilainya harus berupa bilangan bulat positif dalam rentang [1024,64×1024]. |
Automatically allocated by the system |
|
lifecycle |
No |
Siklus hidup tabel output. Nilainya harus berupa bilangan bulat positif. |
None |
Jika input berupa tabel standar, jangan atur parameter coreNum dan memSizePerCore. Komponen Split Word akan menghitung nilai-nilai tersebut secara otomatis.
Jika sumber daya terbatas, Anda dapat menggunakan kode berikut untuk menghitung jumlah worker dan memori per worker.
def CalcCoreNumAndMem(row, col, kOneCoreDataSize=1024):
"""Hitung jumlah worker dan memori per worker.
Args:
row: Jumlah baris dalam tabel input.
col: Jumlah kolom dalam tabel input.
kOneCoreDataSize: Volume data yang diproses oleh satu worker, dalam MB. Harus berupa bilangan bulat positif. Nilai default adalah 1024.
Return:
coreNum, memSizePerCore
Contoh:
coreNum, memSizePerCore = CalcCoreNumAndMem(1000, 99, kOneCoreDataSize=2048)
"""
kMBytes = 1024.0 * 1024.0
# Hitung jumlah worker berdasarkan volume data.
coreNum = max(1, int(row * col * 1000/ kMBytes / kOneCoreDataSize))
# Memori per worker = Ukuran volume data.
memSizePerCore = max(1024, int(kOneCoreDataSize*2))
return coreNum, memSizePerCore
Contoh
-
Buat data
create table pai_aliws_test as select 1 as id, 'Today is a good day. The weather is nice and sunny.' as content; -
Perintah PAI
pai -name split_word -project algo_public -DinputTableName=pai_aliws_test -DselectedColNames=content -DoutputTableName=doc_test_split_word -
Deskripsi input
Tabel input berisi dua kolom: kolom ID dan kolom content.
+------------+-----------------------------------------------------+ | id | content | +------------+-----------------------------------------------------+ | 1 | Today is a good day. The weather is fine and sunny. | -
Deskripsi output
-
Komponen melakukan tokenisasi pada kolom yang ditentukan dan membiarkan kolom lainnya tidak berubah.
-
Jika Anda menggunakan kamus kustom, sistem akan melakukan tokenisasi teks berdasarkan kamus tersebut dan konteksnya. Namun, tokenisasi mungkin tidak sepenuhnya mengikuti kamus kustom.
-