Komponen Conditional Random Field (CRF) di Machine Learning Designer melatih model CRF rantai linier untuk tugas penandaan urutan. CRF rantai linier merupakan model distribusi probabilitas kondisional yang variabel outputnya membentuk Markov random field (MRF). Model ini dapat digunakan dalam berbagai skenario prediksi, terutama dalam anotasi. Untuk latar belakang lebih lanjut, lihat Conditional random field.
Konfigurasikan komponen
Komponen Conditional Random Field dapat dikonfigurasi melalui halaman pipeline atau menggunakan perintah PAI.
Metode 1: Konfigurasi di halaman pipeline
Di halaman pipeline Machine Learning Designer (sebelumnya Machine Learning Studio) pada Platform for AI (PAI), atur parameter berikut.
| Tab | Parameter | Deskripsi |
|---|---|---|
| Fields setting | ID columns | Kolom yang berisi ID setiap sampel. Sampel disimpan dalam bentuk n-tuple. |
| Feature columns | Kata yang akan dianotasi dan fiturnya, jika kata tersebut memiliki fitur. | |
| Target columns | Kolom yang ingin Anda pilih. | |
| Parameters setting | Feature generation template | Templat yang menentukan fitur konteks apa saja yang dihasilkan. Default: [-2:0],[-1:0],[0:0],[1:0],[2:0],[-1:0]/[0:0],[0:0]/[1:0],[-2:1],[-1:1],[0:1],[1:1],[2:1],[-2:1]/[-1:1],[-1:1]/[0:1],[0:1]/[1:1],[1:1]/[2:1],[-2:1]/[-1:1]/[0:1],[-1:1]/[0:1]/[1:1],[0:1]/[1:1]/[2:1] |
| Infrequently used word filtering threshold | Frekuensi minimum fitur. Fitur dengan jumlah kemunculan di bawah nilai ini akan dibuang. Default: 1. | |
| L1 regularization coefficient | Bobot untuk regularisasi L1. Nilai yang lebih tinggi meningkatkan sparsitas. Default: 1. | |
| L2 regularization coefficient | Bobot untuk regularisasi L2. Default: 0. | |
| Maximum iterations | Jumlah maksimum iterasi optimasi L-BFGS. Default: 100. | |
| Convergence threshold | Menghentikan pelatihan ketika perubahan log-likelihood antar iterasi turun di bawah nilai ini. Default: 0.00001. | |
| Tuning | Cores | Jumlah core. Ditentukan oleh sistem secara default. |
| Memory size per core | Memori per core. Ditentukan oleh sistem secara default. |
Memahami templat pembuatan fitur
Setiap item dalam templat mengikuti format [row_offset:col_index], di mana:
| Field | Makna | Contoh |
|---|---|---|
row_offset | Posisi relatif terhadap token saat ini. 0 = token saat ini, -1 = token sebelumnya, 1 = token berikutnya. | -2, -1, 0, 1, 2 |
col_index | Indeks kolom dalam kolom fitur. 0 = kolom fitur pertama, 1 = kolom fitur kedua. | 0, 1 |
Item yang digabungkan dengan / membentuk fitur konjungsi yang menggabungkan beberapa posisi menjadi satu fitur.
| Item templat | Makna |
|---|---|
[0:0] | Nilai kolom fitur 0 pada token saat ini |
[-1:0] | Nilai kolom fitur 0 pada token sebelumnya |
[-1:0]/[0:0] | Konjungsi kolom fitur 0 pada token sebelumnya dan saat ini |
[0:1] | Nilai kolom fitur 1 pada token saat ini |
Metode 2: Gunakan perintah PAI
Gunakan komponen SQL Script untuk memanggil perintah PAI. Untuk informasi selengkapnya, lihat SQL Script.
Melatih model
PAI -name=linearcrf
-project=algo_public
-DinputTableName=crf_input_table
-DidColName=sentence_id
-DfeatureColNames=word,f1
-DlabelColName=label
-DoutputTableName=crf_model
-Dlifecycle=28
-DcoreNum=10| Parameter | Wajib | Nilai default | Deskripsi |
|---|---|---|---|
inputTableName | Ya | — | Tabel yang berisi fitur input. |
inputTablePartitions | Tidak | Semua partisi | Partisi yang akan dibaca dari tabel input. |
featureColNames | Tidak | Semua kolom kecuali kolom label | Kolom fitur dari tabel input. |
labelColName | Ya | — | Kolom label yang akan diprediksi. |
idColName | Ya | — | Kolom yang berisi label sampel. |
outputTableName | Ya | — | Tabel tempat model yang telah dilatih akan ditulis. |
outputTablePartitions | Tidak | Semua partisi | Partisi yang akan ditulis di tabel model output. |
template | Tidak | Lihat Feature generation template | Templat yang mengontrol pembuatan fitur. Format: <template_item>,<template_item>,... di mana setiap item berupa [row_offset:col_index]/[row_offset:col_index]/... |
freq | Tidak | 1 | Ambang batas frekuensi minimum untuk fitur. Fitur dengan jumlah kemunculan di bawah nilai ini akan dibuang. |
iterations | Tidak | 100 | Jumlah maksimum iterasi optimasi. |
l1Weight | Tidak | 1.0 | Bobot regularisasi L1. Berlaku untuk algoritma L-BFGS. |
l2Weight | Tidak | 1.0 | Bobot regularisasi L2. Berlaku untuk algoritma L-BFGS. |
epsilon | Tidak | 0.0001 | Ambang batas konvergensi. Pelatihan berhenti ketika perubahan log-likelihood antara dua iterasi berturut-turut turun di bawah nilai ini. Berlaku untuk algoritma L-BFGS. |
lbfgsStep | Tidak | 10 | Jumlah langkah historis yang digunakan oleh pengoptimal L-BFGS. Hanya berlaku untuk algoritma L-BFGS. |
threadNum | Tidak | 3 | Jumlah thread paralel untuk pelatihan model. |
lifecycle | Tidak | — | Periode retensi tabel output. |
coreNum | Tidak | Sistem menentukan | Jumlah core. |
memSizePerCore | Tidak | Sistem menentukan | Memori per core. |
Jalankan prediksi
Setelah pelatihan selesai, gunakan perintah crf_predict untuk memberi label pada urutan baru.
PAI -name=crf_predict
-project=algo_public
-DinputTableName=crf_test_input_table
-DmodelTableName=crf_model
-DidColName=sentence_id
-DfeatureColNames=word,f1
-DlabelColName=label
-DoutputTableName=crf_predict_result
-DdetailColName=prediction_detail
-Dlifecycle=28
-DcoreNum=10| Parameter | Wajib | Nilai default | Deskripsi |
|---|---|---|---|
inputTableName | Ya | — | Tabel yang berisi fitur input. |
inputTablePartitions | Tidak | Semua partisi | Partisi yang akan dibaca dari tabel input. |
featureColNames | Tidak | Semua kolom kecuali kolom label | Kolom fitur dari tabel input. |
labelColName | Tidak | — | Kolom label. Opsional untuk prediksi. |
IdColName | Ya | — | Kolom yang berisi label sampel. |
resultColName | Tidak | prediction_result | Nama kolom untuk label hasil prediksi di tabel output. |
scoreColName | Tidak | prediction_score | Nama kolom untuk skor kepercayaan prediksi. |
detailColName | Tidak | — | Nama kolom untuk detail skor per label. |
outputTableName | Ya | — | Tabel tempat hasil prediksi akan ditulis. |
outputTablePartitions | Tidak | Semua partisi | Partisi yang akan ditulis di tabel output. |
modelTableName | Ya | — | Tabel yang berisi model yang telah dilatih. |
modelTablePartitions | Tidak | Semua partisi | Partisi yang akan dibaca dari tabel model. |
lifecycle | Tidak | — | Periode retensi tabel output. |
coreNum | Tidak | Sistem menentukan | Jumlah core. |
memSizePerCore | Tidak | Sistem menentukan | Memori per core. |
Contoh
Contoh ini melatih model CRF pada dataset chunking CoNLL, lalu menjalankan prediksi pada data baru.
Format data input
Tabel input berisi satu baris per token. Setiap kalimat diidentifikasi oleh sentence_id yang sama. Kolom label menggunakan notasi IOB2 untuk menandai batas chunk:
| Label | Makna |
|---|---|
B-<TYPE> | Token pertama dari chunk bertipe <TYPE> |
I-<TYPE> | Token lanjutan di dalam chunk |
O | Token di luar semua chunk |
| sentence_id | word | f1 | label |
|---|---|---|---|
| 1 | Rockwell | NNP | B-NP |
| 1 | International | NNP | I-NP |
| 1 | Corp | NNP | I-NP |
| 1 | 's | POS | B-NP |
| ... | ... | ... | ... |
| 823 | Ohio | NNP | B-NP |
| 823 | grew | VBD | B-VP |
| 823 | 3.8 | CD | B-NP |
| 823 | % | NN | I-NP |
| 823 | . | . | O |
Data output
Kolom label bersifat opsional dalam output.
| sentence_id | word | f1 | label |
|---|---|---|---|
| 1 | Confidence | NN | B-NP |
| 1 | in | IN | B-PP |
| 1 | the | DT | B-NP |
| 1 | pound | NN | I-NP |
| ... | ... | ... | ... |
| 77 | have | VBP | B-VP |
| 77 | announced | VBN | I-VP |
| 77 | similar | JJ | B-NP |
| 77 | increases | NNS | I-NP |
| 77 | . | . | O |