Plugin tokenisasi AliNLP, juga dikenal sebagai analysis-aliws, merupakan plugin bawaan Alibaba Cloud Elasticsearch. Setelah Anda menginstal plugin ini pada kluster Elasticsearch, sebuah alat analisis (analyzer) dan pemisah kata (tokenizer) diintegrasikan ke dalam kluster untuk menerapkan analisis dan pengambilan dokumen. Plugin ini memungkinkan Anda mengunggah file kamus kustom. Setelah diunggah, kluster melakukan pembaruan bergulir (rolling update) untuk menerapkan file kamus tersebut tanpa perlu restart.
Plugin analysis-aliws menambahkan dua komponen ke kluster Anda:
Analyzer:
aliws— menghapus kata fungsi, frasa fungsi, dan simbol dari hasilTokenizer:
aliws_tokenizer
Setelah instalasi, gunakan analyzer aliws untuk mengindeks dan mencari dokumen, unggah file kamus kustom untuk memperluas kosakata, atau buat analyzer kustom berdasarkan aliws_tokenizer.
Jika hasil pencarian tidak sesuai harapan, uji analyzer dan tokenizer secara langsung untuk mendiagnosis masalah. Lihat Uji analyzer dan Uji tokenizer.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster Elasticsearch dengan plugin analysis-aliws yang telah diinstal. Plugin ini tidak diinstal secara default. Untuk menginstalnya, lihat Instal dan hapus plugin bawaan
Node data dengan memori minimal 8 GiB. Jika kluster Anda tidak memenuhi persyaratan ini, tingkatkan konfigurasi kluster terlebih dahulu. Lihat Tingkatkan konfigurasi kluster
Batasan
Plugin analysis-aliws tidak didukung pada:
Kluster Elasticsearch V5.X
Kluster Elasticsearch V8.X
Kluster Elasticsearch Edisi Kernel-enhanced
Periksa apakah kluster Anda mendukung plugin ini di konsol Elasticsearch sebelum melanjutkan.
Cari dokumen menggunakan analyzer aliws
Bagian ini menjelaskan langkah-langkah membuat indeks dengan analyzer aliws, mengindeks dokumen, dan menjalankan pencarian.
Langkah-langkah berikut menggunakan kluster Elasticsearch V6.7.0 sebagai contoh. Langkah-langkah dapat berbeda untuk versi lain. Ikuti operasi aktual di konsol Anda.
Masuk ke konsol Kibana kluster Elasticsearch Anda. Untuk detailnya, lihat Masuk ke konsol Kibana.
Di panel navigasi sebelah kiri, klik Dev Tools.
Pada tab Console, jalankan perintah sesuai versi kluster Anda untuk membuat indeks: For clusters running a version earlier than V7.0:
PUT /index { "mappings": { "fulltext": { "properties": { "content": { "type": "text", "analyzer": "aliws" } } } } }Untuk kluster yang menjalankan V7.0 atau lebih baru:
PUT /index { "mappings": { "properties": { "content": { "type": "text", "analyzer": "aliws" } } } }Kedua perintah tersebut membuat indeks bernama
indexdengan bidangcontentbertipetextdan menetapkan analyzeraliwske bidang tersebut. Tipe indeks adalahfulltextpada versi sebelum V7.0 dan_docpada V7.0 atau lebih baru. Respons sukses akan tampak seperti:{ "acknowledged": true, "shards_acknowledged": true, "index": "index" }Tambahkan dokumen ke indeks:
PentingPerintah berikut hanya berlaku untuk kluster yang menjalankan versi sebelum V7.0. Untuk V7.0 atau lebih baru, ganti
fulltextdengan_doc.POST /index/fulltext/1 { "content": "I like go to school." }Ini menambahkan dokumen dengan ID
1dan mengatur nilai bidangcontent-nya menjadiI like go to school.Respons sukses akan tampak seperti:{ "_index": "index", "_type": "fulltext", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 0, "_primary_term": 1 }Cari dokumen tersebut:
PentingPerintah berikut hanya berlaku untuk kluster yang menjalankan versi sebelum V7.0. Untuk V7.0 atau lebih baru, ganti
fulltextdengan_doc.GET /index/fulltext/_search { "query": { "match": { "content": "school" } } }Ini menjalankan analyzer
aliwspada semua dokumen dalam tipefulltextdan mengembalikan dokumen yang bidangcontent-nya mengandung tokenschool. Kata fungsi sepertitodikecualikan dari analisis. Respons sukses akan tampak seperti:{ "took": 5, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 1, "max_score": 0.2876821, "hits": [ { "_index": "index", "_type": "fulltext", "_id": "2", "_score": 0.2876821, "_source": { "content": "I like go to school." } } ] } }
Konfigurasi kamus kustom
Plugin analysis-aliws mendukung satu file kamus kustom bernama aliws_ext_dict.txt. Setelah Anda mengunggah file tersebut, semua node dalam kluster akan memuatnya secara otomatis tanpa restart—kluster melakukan pembaruan bergulir yang memakan waktu sekitar 10 menit.
Tidak ada file kamus yang disediakan setelah instalasi. Unggah satu jika Anda memerlukan kosakata kustom.
Persyaratan file kamus
Sebelum mengunggah, pastikan file kamus Anda memenuhi persyaratan berikut:
| Persyaratan | Detail |
|---|---|
| Nama file | aliws_ext_dict.txt |
| Encoding | UTF-8 |
| Format | Satu kata per baris, setiap baris diakhiri dengan \n (line feed UNIX/Linux). Tidak boleh ada spasi di awal atau akhir baris. |
| File Windows | Gunakan tool dos2unix untuk mengonversi file sebelum mengunggah. |
Unggah file kamus
Masuk ke konsol Alibaba Cloud Elasticsearch.
Di panel navigasi sebelah kiri, klik Elasticsearch Clusters.
Di bilah navigasi atas, pilih kelompok sumber daya dan wilayah kluster Anda. Pada halaman Elasticsearch Clusters, klik ID kluster.
Di panel navigasi sebelah kiri, pilih Configuration and Management > Plug-ins.
Pada tab Built-in Plug-ins, temukan plugin analysis-aliws dan klik Configure Dictionary di kolom Actions.
Pada panel Configure Dictionary, klik Configure di pojok kiri bawah.
Unggah file kamus menggunakan salah satu metode berikut:
TXT File: Klik Upload TXT File dan pilih file dari mesin lokal Anda.
Add OSS File: Masukkan Bucket Name dan File Name, lalu klik Add. Bucket Object Storage Service (OSS) harus berada di wilayah yang sama dengan kluster Elasticsearch Anda. Jika konten file OSS berubah di kemudian hari, unggah ulang file kamus melalui konsol—perubahan pada OSS tidak diambil secara otomatis.
Klik Save. Kluster melakukan pembaruan bergulir untuk menerapkan file kamus. Proses ini memakan waktu sekitar 10 menit. Kluster tidak melakukan restart selama proses ini.
Untuk mengunduh file yang telah diunggah, klik ikon
di samping nama file.
Hanya satu file kamus yang diperbolehkan dalam satu waktu. Untuk menggantinya, klik x di samping aliws_ext_dict.txt untuk menghapus file saat ini, lalu unggah file baru.Uji analyzer
Jalankan perintah berikut untuk memverifikasi cara analyzer aliws melakukan tokenisasi teks:
GET _analyze
{
"text": "I like go to school.",
"analyzer": "aliws"
}Analyzer aliws menghapus kata fungsi dan simbol. Untuk input "I like go to school.", output yang diharapkan adalah:
{
"tokens" : [
{
"token" : "i",
"start_offset" : 0,
"end_offset" : 1,
"type" : "word",
"position" : 0
},
{
"token" : "like",
"start_offset" : 2,
"end_offset" : 6,
"type" : "word",
"position" : 2
},
{
"token" : "go",
"start_offset" : 7,
"end_offset" : 9,
"type" : "word",
"position" : 4
},
{
"token" : "school",
"start_offset" : 13,
"end_offset" : 19,
"type" : "word",
"position" : 8
}
]
}Kata fungsi to dan titik . dikecualikan dari output.
Uji tokenizer
Jalankan perintah berikut untuk memverifikasi cara aliws_tokenizer melakukan tokenisasi teks:
GET _analyze
{
"text": "I like go to school.",
"tokenizer": "aliws_tokenizer"
}Berbeda dengan analyzer aliws, aliws_tokenizer mempertahankan semua token termasuk kata fungsi, spasi, dan tanda baca. Untuk input "I like go to school.", output yang diharapkan adalah:
{
"tokens" : [
{
"token" : "I",
"start_offset" : 0,
"end_offset" : 1,
"type" : "word",
"position" : 0
},
{
"token" : " ",
"start_offset" : 1,
"end_offset" : 2,
"type" : "word",
"position" : 1
},
{
"token" : "like",
"start_offset" : 2,
"end_offset" : 6,
"type" : "word",
"position" : 2
},
{
"token" : " ",
"start_offset" : 6,
"end_offset" : 7,
"type" : "word",
"position" : 3
},
{
"token" : "go",
"start_offset" : 7,
"end_offset" : 9,
"type" : "word",
"position" : 4
},
{
"token" : " ",
"start_offset" : 9,
"end_offset" : 10,
"type" : "word",
"position" : 5
},
{
"token" : "to",
"start_offset" : 10,
"end_offset" : 12,
"type" : "word",
"position" : 6
},
{
"token" : " ",
"start_offset" : 12,
"end_offset" : 13,
"type" : "word",
"position" : 7
},
{
"token" : "school",
"start_offset" : 13,
"end_offset" : 19,
"type" : "word",
"position" : 8
},
{
"token" : ".",
"start_offset" : 19,
"end_offset" : 20,
"type" : "word",
"position" : 9
}
]
}Buat analyzer kustom
aliws_tokenizer menerapkan filter-filter berikut setelah tokenisasi:
| Filter | Efek | Perilaku default |
|---|---|---|
stemmer | Mengurangi kata ke bentuk dasarnya | Diaktifkan |
lowercase | Mengonversi semua token menjadi huruf kecil | Diaktifkan |
porter_stem | Menerapkan algoritma stemming Porter | Diaktifkan |
stop | Menghapus stopwords | Diaktifkan |
Untuk membuat analyzer kustom, tambahkan aliws_tokenizer sebagai tokenizer dasar dan konfigurasikan filter sesuai kebutuhan Anda. Gunakan bidang stopwords untuk menentukan stopwords kustom.
Contoh berikut membuat analyzer kustom bernama my_custom_analyzer dengan filter stop kustom:
PUT my-index-000001
{
"settings": {
"analysis": {
"filter": {
"my_stop": {
"type": "stop",
"stopwords": [
" ",
",",
".",
" ",
"a",
"of"
]
}
},
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "aliws_tokenizer",
"filter": [
"lowercase",
"porter_stem",
"my_stop"
]
}
}
}
}
}Untuk melewati filtering sepenuhnya, hapus blok filter dari konfigurasi analyzer.Untuk memverifikasi analyzer kustom berfungsi sesuai harapan, jalankan:
GET my-index-000001/_analyze
{
"analyzer": "my_custom_analyzer",
"text": ["I like go to school."]
}aliws_tokenizer juga mendukung konfigurasi sinonim menggunakan metode yang sama seperti plugin analysis-ik. Untuk detailnya, lihat Gunakan sinonim.
FAQ
Bagaimana cara mengonfigurasi plugin analysis-aliws? Format apa yang digunakan oleh file kamus?
Lihat Konfigurasi kamus kustom untuk langkah-langkah pengunggahan dan Persyaratan file kamus untuk formatnya.
Untuk pertanyaan tambahan tentang konfigurasi plugin, lihat FAQ untuk analysis-aliws.
Apa perbedaan antara sinonim Elasticsearch, token IK, dan token AliNLP?
Lihat Sinonim Elasticsearch vs. token IK vs. token AliNLP.
Jika kamus OSS diperbarui, apakah kluster mengambil perubahan tersebut secara otomatis?
Tidak. Jika konten kamus OSS berubah, unggah ulang file tersebut melalui konsol. Lihat Konfigurasi kamus kustom.
Untuk detail lebih lanjut tentang pembaruan bergulir dan kamus berbasis OSS, lihat entri FAQ ini.
Setelah tokenisasi, huruf `e` di akhir kata seperti `iPhone` (menjadi `Iphon`) dan `Chinese` (menjadi `chines`) hilang. Bagaimana cara memperbaikinya?
aliws_tokenizer melakukan stemming kata setelah tokenisasi. Akibatnya, huruf e di akhir setiap kata dihapus. Untuk menonaktifkan stemming, buat analyzer kustom yang menggunakan aliws_tokenizer tanpa filter apa pun:
PUT my-index1
{
"settings": {
"number_of_shards": 1,
"analysis": {
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "aliws_tokenizer"
}
}
}
}
}Verifikasi hasilnya:
GET my-index1/_analyze
{
"analyzer": "my_custom_analyzer",
"text": ["iphone"]
}Output sekarang seharusnya mengembalikan iphone tanpa pemotongan.
Referensi
Ikhtisar plugin — semua plugin yang tersedia untuk Alibaba Cloud Elasticsearch
InstallSystemPlugin — Operasi API untuk menginstal plugin bawaan
UpdateAliwsDict — Operasi API untuk memperbarui file kamus analysis-aliws
ListPlugins — Operasi API untuk menampilkan daftar plugin yang diinstal pada kluster