Plugin tokenizer AliNLP (analysis-aliws) merupakan plugin sistem bawaan untuk Alibaba Cloud Elasticsearch (ES). Setelah menginstal plugin ini, Alibaba Cloud ES secara otomatis mengintegrasikan alat analisis dan tokenizer yang sesuai untuk analisis serta pencarian dokumen. Anda juga dapat memanfaatkan fitur konfigurasi kamus untuk melakukan hot-update kamus.
Ikhtisar plugin
Setelah menginstal plugin analysis-aliws, Alibaba Cloud ES secara default menyertakan alat analisis dan tokenizer berikut, yang dapat digunakan untuk mencari dokumen. Fitur konfigurasi kamus juga tersedia untuk memperbarui kamus tokenizer.
Alat analisis: Alat analisis aliws mempertahankan kata fungsi, frasa kata fungsi, dan simbol. Alat ini juga secara otomatis mengonversi semua karakter huruf kapital dalam bahasa Inggris menjadi huruf kecil.
Tokenizer: aliws_tokenizer
Untuk informasi selengkapnya, lihat Cari dokumen menggunakan alat analisis aliws dan Konfigurasikan kamus.
Jika plugin analysis-aliws tidak menghasilkan hasil yang diharapkan, Anda dapat melakukan pemecahan masalah dengan menggunakan Uji alat analisis dan Uji tokenizer.
Untuk membuat tokenizer kustom, lihat Buat tokenizer kustom.
Prasyarat
Plugin analysis-aliws harus telah diinstal. Plugin ini tidak diinstal secara default. Untuk petunjuk instalasi, lihat Instal dan hapus plugin bawaan.
Menginstal atau menguninstall plugin akan memicu restart bergulir kluster. Saat node direstart satu per satu, status kluster berubah dari hijau menjadi kuning. Kluster tetap tersedia, tetapi beban pada node yang sehat meningkat dan kinerja mungkin terpengaruh. Lakukan operasi ini selama jam sepi.
Batasan
Ukuran memori node data di kluster Elasticsearch Anda harus minimal 8 GiB. Jika ukuran memori node data tidak memenuhi persyaratan ini, lakukan peningkatan kluster. Untuk informasi selengkapnya, lihat Tingkatkan konfigurasi kluster.
Kluster Elasticsearch V5.X, kluster Elasticsearch V8.X, dan kluster Edisi Enhanced Kernel Elasticsearch tidak mendukung plugin analysis-aliws. Anda dapat memeriksa dukungan plugin tersebut melalui konsol Elasticsearch.
Cari dokumen menggunakan alat analisis aliws
Login ke konsol Kibana instans Alibaba Cloud Elasticsearch target dan ikuti petunjuk di layar untuk membuka halaman utama Kibana.
Untuk petunjuknya, lihat Login ke konsol Kibana.CatatanTopik ini menggunakan contoh Alibaba Cloud Elasticsearch 6.7.0. Operasi mungkin sedikit berbeda di versi lain. Gunakan antarmuka konsol aktual sebagai referensi.
Di panel navigasi sebelah kiri, klik Dev Tools.
Di Console, jalankan salah satu perintah berikut untuk membuat indeks.
Versi sebelum 7.0
PUT /index { "mappings": { "fulltext": { "properties": { "content": { "type": "text", "analyzer": "aliws" } } } } }Versi 7.0 atau lebih baru
PUT /index { "mappings": { "properties": { "content": { "type": "text", "analyzer": "aliws" } } } }Contoh di atas membuat indeks bernama index dengan tipe fulltext (atau _doc di versi 7.x). Indeks tersebut berisi properti content bertipe text dan menggunakan alat analisis aliws.
Jika perintah berhasil dijalankan, hasil berikut dikembalikan:
{ "acknowledged": true, "shards_acknowledged": true, "index": "index" }Jalankan perintah berikut untuk menambahkan dokumen.
PentingPerintah berikut hanya berlaku untuk versi Elasticsearch sebelum 7.0. Di versi 7.0 atau lebih baru, ganti fulltext dengan _doc.
POST /index/fulltext/1 { "content": "I like go to school." }Perintah di atas menambahkan dokumen bernama 1 dan menetapkan bidang content menjadi "I like go to school".
Jika perintah berhasil dijalankan, hasil berikut dikembalikan:
{ "_index": "index", "_type": "fulltext", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 0, "_primary_term": 1 }Jalankan perintah berikut untuk mencari dokumen.
Perintah berikut hanya berlaku untuk versi Elasticsearch sebelum 7.0. Di versi 7.0 atau lebih baru, ganti fulltext dengan _doc.
GET /index/fulltext/_search
{
"query": {
"match": {
"content": "school"
}
}
}Perintah di atas menggunakan alat analisis aliws untuk mencari semua dokumen bertipe fulltext yang bidang content-nya mengandung school.
Jika perintah berhasil dijalankan, hasil berikut dikembalikan:
{
"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."
}
}
]
}
}Jika hasil dari plugin analysis-aliws tidak sesuai harapan, gunakan Uji alat analisis dan Uji tokenizer di bawah ini untuk memecahkan masalah.
Konfigurasikan kamus
Plugin analysis-aliws mendukung konfigurasi kamus. Anda dapat mengunggah file kamus kustom bernama aliws_ext_dict.txt. Setelah file tersebut diunggah, semua node di kluster akan secara otomatis memuatnya dan melakukan hot-update kamus tanpa perlu merestart kluster.
Setelah menginstal plugin analysis-aliws, tidak tersedia file kamus. Anda harus mengunggah file kamus kustom secara manual.
Sebelum mengunggah file kamus, pastikan file tersebut memenuhi persyaratan berikut:
Nama file: Harus bernama aliws_ext_dict.txt.
Format file: Harus menggunakan encoding UTF-8.
Isi: Setiap baris harus berisi satu kata kunci tanpa spasi di awal atau akhir. Gunakan line feed UNIX atau Linux (
\n). Jika Anda membuat file di Windows, gunakan tool dos2unix di mesin Linux untuk mengonversi file kamus sebelum mengunggahnya.
Login ke konsol Alibaba Cloud Elasticsearch.
Di panel navigasi sebelah kiri, klik Elasticsearch Clusters.
Buka instans target.
a. Di bilah menu, pilih kelompok sumber daya dan wilayah. b. Klik ID instans target di Elasticsearch Cluster.Di panel navigasi sebelah kiri, pilih Configuration and Management > Plug-ins.
Di Built-in Plug-ins, temukan plugin analysis-aliws. Di kolom Actions-nya, klik Configure Dictionary.
Di bagian bawah halaman Configure Dictionary, klik Configure.
Pilih metode untuk mengunggah file kamus, lalu unggah file tersebut:
TXT File: Klik Upload TXT File dan pilih file kamus lokal untuk diunggah.
Add OSS File: Masukkan nama Bucket dan nama file, lalu klik Add.
Pastikan Bucket dan instans Alibaba Cloud Elasticsearch berada di wilayah yang sama. Jika isi file OSS sumber berubah, unggah ulang file kamus agar perubahan tersebut berlaku. Sinkronisasi otomatis tidak didukung.
CatatanPlugin analysis-aliws hanya mendukung satu file kamus. Untuk memperbarui file kamus, klik ikon X pada file aliws_ext_dict.txt untuk menghapus file kamus yang telah diunggah, lalu unggah file baru.
Klik Save.
Menyimpan tidak akan merestart kluster. Sebaliknya, proses ini memicu perubahan kluster yang menerapkan file kamus yang diunggah. Proses ini memerlukan waktu sekitar 10 menit.
Untuk mengunduh file kamus yang telah diunggah, klik
yang sesuai sebelum konfigurasi.
Uji alat analisis
Jalankan perintah berikut untuk menguji alat analisis aliws:
GET _analyze
{
"text": "I like go to school.",
"analyzer": "aliws"
}Jika perintah berhasil dijalankan, hasil berikut dikembalikan:
{
"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
}
]
}Uji tokenizer
Jalankan perintah berikut untuk menguji tokenizer aliws_tokenizer:
GET _analyze
{
"text": "I like go to school.",
"tokenizer": "aliws_tokenizer"
}Jika perintah berhasil dijalankan, hasil berikut dikembalikan:
{
"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 tokenizer kustom
Setelah plugin analysis-aliws melakukan tokenisasi teks, plugin tersebut menerapkan filter, termasuk stemmer, lowercase, porter_stem, dan stop. Untuk menggunakan filter-filter ini dalam tokenizer kustom, tambahkan tokenizer plugin analysis-aliws aliws_tokenizer ke tokenizer kustom, lalu tambahkan konfigurasi filter sesuai kebutuhan bisnis Anda. Contoh berikut menunjukkan caranya. Tambahkan stopwords yang dibutuhkan bisnis Anda di stopwords.
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"
]
}
}
}
}
}Jika Anda tidak memerlukan filter, Anda dapat menghapus konfigurasi filter.
aliws_tokenizer mendukung pembuatan tokenizer kustom menggunakan sinonim. Konfigurasinya sama dengan tokenizer IK. Untuk informasi selengkapnya, lihat Gunakan sinonim.
FAQ
Bagaimana cara mengonfigurasi plugin analysis-aliws? Apa format file kamus untuk plugin ini?
Apa perbedaan antara sinonim Elasticsearch, token IK, dan token AliNLP?
Saat Anda menggunakan alat analisis aliws untuk melakukan tokenisasi kata, huruf terakhir mungkin hilang. Misalnya, tokenisasi
iPhonedanChinesemenghasilkanIphondanchines, dengan hurufeterakhir dihilangkan.Penyebab: Alat analisis aliws menerapkan filter stemming setelah tokenisasi, yang menghapus huruf
eterakhir.Solusi: Jalankan perintah berikut untuk membuat konfigurasi analisis kustom bernama
my_custom_analyzertanpa bagian filter.PUT my-index1 { "settings": { "number_of_shards": 1, "analysis": { "analyzer": { "my_custom_analyzer": { "type": "custom", "tokenizer": "aliws_tokenizer" } } } } }Verifikasi: Jalankan perintah berikut untuk memverifikasi apakah hasil tokenisasi sesuai harapan.
GET my-index1/_analyze { "analyzer": "my_custom_analyzer", "text": ["iphone"] }
Referensi
Untuk melihat plugin yang didukung oleh Alibaba Cloud ES, lihat Ikhtisar plugin.
Untuk menginstal plugin bawaan dengan memanggil operasi API, lihat InstallSystemPlugin.
Untuk memperbarui file kamus plugin analysis-aliws dengan memanggil operasi API, lihat UpdateAliwsDict.
Untuk mendapatkan daftar plugin untuk instans Alibaba Cloud ES tertentu dengan memanggil operasi API, lihat ListPlugins.