Komponen PMI menghitung pointwise mutual information (PMI) untuk seluruh pasangan kata dalam korpus dokumen, mengukur seberapa kuat dua kata saling terkait berdasarkan frekuensi kemunculan bersamanya. Gunakan komponen ini dalam pipeline Machine Learning Designer untuk mengidentifikasi asosiasi kata yang bermakna.
Cara kerja PMI
Dalam teori informasi, mutual information (MI) mengukur seberapa besar pengetahuan tentang satu variabel acak mengurangi ketidakpastian mengenai variabel lainnya. PMI memperluas konsep ini ke pasangan kata dan menghasilkan satu skor asosiasi untuk setiap pasangan.
Rumus: PMI(x,y) = ln(p(x,y) / (p(x) × p(y))) = ln(#(x,y) × D / (#x × #y))
Di mana:
#(x,y)— jumlah kemunculan bersama pasangan kata (x, y)D— jumlah total pasangan#x,#y— jumlah kemunculan masing-masing kata
Setiap kali kata x dan y muncul bersama dalam jendela yang sama, komponen ini menambahkan nilai #x, #y, dan #(x,y) masing-masing sebesar 1.
Interpretasi skor PMI:
| Nilai PMI | Makna |
|---|---|
| Positif | Kedua kata muncul bersama lebih sering daripada yang diprediksi secara acak — kemungkinan besar memiliki asosiasi bermakna |
| Mendekati nol | Tidak ada asosiasi kuat |
| Negatif | Kedua kata muncul bersama lebih jarang daripada yang diprediksi secara acak |
Tanpa penyaringan frekuensi, kata langka dapat menghasilkan skor PMI yang terlalu tinggi secara artifisial karena hanya muncul dalam konteks yang sangat terbatas. Atur parameter minCount untuk menyaring kata-kata yang terlalu jarang muncul sehingga tidak menghasilkan statistik yang tidak andal.Untuk latar belakang algoritma ini, lihat Pointwise mutual information.
Konfigurasi komponen
Metode 1: Konfigurasi di Konsol PAI
Pada halaman pipeline Machine Learning Designer, konfigurasikan parameter berikut:
| Tab | Parameter | Deskripsi |
|---|---|---|
| Fields setting | Columns of documents with words separated with spaces | Kolom dokumen yang kata-katanya dipisahkan oleh spasi |
| Parameters setting | Minimum frequency of words | Kata yang muncul lebih sedikit dari ambang batas ini akan disaring. Nilai default: 5. Tingkatkan nilai ini untuk mengecualikan kata langka yang meningkatkan skor PMI secara tidak proporsional. |
| Parameters setting | Window size | Jumlah kata di sebelah kanan kata saat ini yang membentuk jendela kemunculan bersama. Misalnya, ukuran jendela 5 akan memasangkan kata saat ini dengan masing-masing dari 5 kata yang berada tepat di sebelah kanannya. |
| Tuning | Computing cores | Jumlah core CPU untuk perhitungan. Default: ditentukan oleh sistem. |
| Tuning | Memory size per core (unit: MB) | Memori yang dialokasikan untuk setiap core. Default: ditentukan oleh sistem. |
Metode 2: Konfigurasi menggunakan perintah PAI
Gunakan komponen SQL Script atau node ODPS SQL untuk menjalankan perintah PAI. Nama perintahnya adalah PointwiseMutualInformation.
PAI -name PointwiseMutualInformation
-project algo_public
-DinputTableName=maple_test_pmi_basic_input
-DdocColName=doc
-DoutputTableName=maple_test_pmi_basic_output
-DminCount=0
-DwindowSize=2
-DcoreNum=1
-DmemSizePerCore=110;Parameter
| Parameter | Wajib | Deskripsi | Default |
|---|---|---|---|
inputTableName | Ya | Tabel input | — |
outputTableName | Ya | Tabel output | — |
docColName | Ya | Nama kolom dokumen setelah segmentasi kata; kata harus dipisahkan oleh spasi | — |
windowSize | Tidak | Jumlah kata di sebelah kanan kata saat ini yang membentuk jendela kemunculan bersama. Misalnya, nilai 5 menunjukkan lima kata berdekatan di sebelah kanan kata saat ini. | Semua kata dalam baris |
minCount | Tidak | Frekuensi minimum kata. Kata yang muncul lebih sedikit dari nilai ini akan disaring. Tingkatkan nilai ini jika kata berfrekuensi rendah menghasilkan skor PMI yang tidak andal. | 5 |
inputTablePartitions | Tidak | Partisi yang digunakan dari tabel input, dalam format Partition_name=value. Tentukan beberapa partisi sebagai name1=value1/name2=value2. Pisahkan beberapa entri dengan koma. | Semua partisi |
lifecycle | Tidak | Siklus hidup tabel output | — |
coreNum | Tidak | Jumlah core CPU. Nilai valid: 1–9999. | Ditentukan oleh sistem |
memSizePerCore | Tidak | Memori per core, dalam MB. Nilai valid: 1024–65536. | Ditentukan oleh sistem |
Contoh
Contoh ini menunjukkan alur kerja lengkap: membuat tabel input, menjalankan perintah PMI, dan memeriksa output.
Input
Buat tabel bernama maple_test_pmi_basic_input menggunakan node ODPS SQL. Untuk detailnya, lihat Develop a MaxCompute SQL task.
CREATE TABLE maple_test_pmi_basic_input AS
SELECT * FROM (
SELECT "w1 w2 w3 w4 w5 w6 w7 w8 w8 w9" AS doc
UNION ALL SELECT "w1 w3 w5 w6 w9" AS doc
UNION ALL SELECT "w0" AS doc
UNION ALL SELECT "w0 w0" AS doc
UNION ALL SELECT "w9 w1 w9 w1 w9" AS doc
) tmp;Tabel hasil memiliki satu dokumen per baris, dengan kata-kata dipisahkan oleh spasi:
| doc |
|---|
| w1 w2 w3 w4 w5 w6 w7 w8 w8 w9 |
| w1 w3 w5 w6 w9 |
| w0 |
| w0 w0 |
| w9 w1 w9 w1 w9 |
Jalankan perintah
Jalankan perintah berikut menggunakan komponen SQL Script atau node ODPS SQL:
PAI -name PointwiseMutualInformation
-project algo_public
-DinputTableName=maple_test_pmi_basic_input
-DdocColName=doc
-DoutputTableName=maple_test_pmi_basic_output
-DminCount=0
-DwindowSize=2
-DcoreNum=1
-DmemSizePerCore=110;Output
Tabel output maple_test_pmi_basic_output berisi satu baris per pasangan kata:
| Kolom | Deskripsi |
|---|---|
word1, word2 | Pasangan kata |
word1_count, word2_count | Jumlah total kemunculan masing-masing kata di seluruh korpus |
co_occurrences_count | Jumlah kemunculan bersama pasangan tersebut dalam jendela |
pmi | Logaritma natural dari rasio kemunculan bersama. Nilai positif menunjukkan kata-kata yang muncul bersama lebih sering daripada prediksi acak; nilai negatif menunjukkan lebih jarang daripada prediksi acak; nol menunjukkan tidak ada asosiasi. |
Contoh output untuk maple_test_pmi_basic_output:
| word1 | word2 | word1_count | word2_count | co_occurrences_count | pmi |
|---|---|---|---|---|---|
| w0 | w0 | 2 | 2 | 1 | 2.0794415416798357 |
| w1 | w1 | 10 | 10 | 1 | -1.1394342831883648 |
| w1 | w2 | 10 | 3 | 1 | 0.06453852113757116 |
| w1 | w3 | 10 | 7 | 2 | -0.08961215868968704 |
| w1 | w5 | 10 | 8 | 1 | -0.916290731874155 |
| w1 | w9 | 10 | 12 | 4 | 0.06453852113757116 |
| w2 | w3 | 3 | 7 | 1 | 0.4212134650763035 |
| w2 | w4 | 3 | 4 | 1 | 0.9808292530117262 |
| w3 | w4 | 7 | 4 | 1 | 0.13353139262452257 |
| w3 | w5 | 7 | 8 | 2 | 0.13353139262452257 |
| w3 | w6 | 7 | 7 | 1 | -0.42608439531090014 |
| w4 | w5 | 4 | 8 | 1 | 0.0 |
| w4 | w6 | 4 | 7 | 1 | 0.13353139262452257 |
| w5 | w6 | 8 | 7 | 2 | 0.13353139262452257 |
| w5 | w7 | 8 | 4 | 1 | 0.0 |
| w5 | w9 | 8 | 12 | 1 | -1.0986122886681098 |
| w6 | w7 | 7 | 4 | 1 | 0.13353139262452257 |
| w6 | w8 | 7 | 7 | 1 | -0.42608439531090014 |
| w6 | w9 | 7 | 12 | 1 | -0.9650808960435872 |
| w7 | w8 | 4 | 7 | 2 | 0.8266785731844679 |
| w8 | w8 | 7 | 7 | 1 | -0.42608439531090014 |
| w8 | w9 | 7 | 12 | 2 | -0.2719337154836418 |
| w9 | w9 | 12 | 12 | 2 | -0.8109302162163288 |
Langkah selanjutnya
Ikhtisar Machine Learning Designer — pelajari tentang alur kerja berbasis pipeline
Referensi Komponen: ikhtisar semua komponen — jelajahi komponen analisis teks dan rekayasa fitur lainnya