AliNLP tokenizasyon eklentisi (analysis-aliws), Alibaba Cloud Elasticsearch (ES) için yerleşik bir sistem eklentisidir. Eklentiyi yükledikten sonra Alibaba Cloud ES, belge analizi ve arama işlemleri için ilgili analizörü ve tokenizasyonu entegre eder. Ayrıca sözlük yapılandırma özelliğini kullanarak sözlükleri anlık olarak güncelleyebilirsiniz.
Eklentiye genel bakış
analysis-aliws eklentisini yükledikten sonra Alibaba Cloud ES varsayılan olarak aşağıdaki analizör ve tokenizasyonu içerir. Belgeleri aramak için bu bileşenleri kullanabilir ve tokenizasyon sözlüğünü güncellemek amacıyla sözlük yapılandırma özelliğinden yararlanabilirsiniz.
Analizör: aliws analizörü, edatları, edat öbeklerini ve sembolleri korur. Ayrıca tüm büyük harfli İngilizce karakterleri otomatik olarak küçük harfe dönüştürür.
Tokenizasyon: aliws_tokenizer
Daha fazla bilgi için bkz. aliws analizörünü kullanarak belgelerde arama yapma ve Sözlükleri yapılandırma.
analysis-aliws eklentisi beklenen sonuçları döndürmezse sorunu Analizörü test etme ve Tokenizasyonu test etme adımlarını uygulayarak giderebilirsiniz.
Özel bir tokenizasyon oluşturmak için Özel tokenizasyon oluşturma konusuna bakın.
Ön koşullar
analysis-aliws eklentisi yüklüdür. Bu eklenti varsayılan olarak yüklü gelmez. Yükleme yönergeleri için bkz. Yerleşik bir eklentiyi yükleme ve kaldırma.
Bir eklentiyi yüklemek veya kaldırmak kümenin rolling restart işlemine tetikler. Düğümler tek tek yeniden başlatıldığından küme durumu yeşilden sarıya geçer. Küme kullanılabilir durumda kalır ancak sağlıklı düğümlerdeki yük artar ve performans etkilenebilir. Bu işlemi yoğun saatler dışında gerçekleştirin.
Sınırlamalar
Elasticsearch kümenizdeki veri düğümlerinin bellek boyutu 8 GiB veya üzeri olmalıdır. Veri düğümlerinin bellek boyutu bu gereksinimi karşılamıyorsa kümeyi yükseltin. Daha fazla bilgi için bkz. Kümenin yapılandırmasını yükseltme.
Elasticsearch V5.X kümeleri, Elasticsearch V8.X kümeleri ve Elasticsearch Kernel-enhanced Edition kümeleri analysis-aliws eklentisini desteklemez. Kümenizin eklentiyi destekleyip desteklemediğini Elasticsearch konsolunda kontrol edebilirsiniz.
aliws analizörünü kullanarak belgelerde arama yapma
-
Hedef Alibaba Cloud Elasticsearch örneğinin Kibana konsoluna giriş yapın ve ekrandaki talimatları izleyerek Kibana ana sayfasını açın. Yönergeler için bkz. Kibana konsoluna giriş yapma.
NotBu konuda örnek olarak Alibaba Cloud Elasticsearch 6.7.0 sürümü kullanılmıştır. Diğer sürümlerde işlemler biraz farklılık gösterebilir. Lütfen gerçek konsol arayüzünü referans alın.
Sol gezinme bölmesinde Dev Tools seçeneğine tıklayın.
-
Console alanında bir dizin oluşturmak için aşağıdaki komutlardan birini çalıştırın.
7.0'dan önceki sürümler
PUT /index { "mappings": { "fulltext": { "properties": { "content": { "type": "text", "analyzer": "aliws" } } } } }Sürüm 7.0 veya sonrası
PUT /index { "mappings": { "properties": { "content": { "type": "text", "analyzer": "aliws" } } } }Yukarıdaki örneklerde fulltext türüne (veya 7.x sürümünde _doc türüne) sahip index adında bir dizin oluşturulur. Dizin, text türünde bir content özelliği içerir ve aliws analizörünü kullanır.
Komut başarıyla çalıştırılırsa aşağıdaki sonuç döndürülür:
{ "acknowledged": true, "shards_acknowledged": true, "index": "index" } -
Bir belge eklemek için aşağıdaki komutu çalıştırın.
ÖnemliAşağıdaki komut yalnızca 7.0'dan önceki Elasticsearch sürümleri için geçerlidir. 7.0 veya sonraki sürümlerde fulltext ifadesini _doc olarak değiştirin.
POST /index/fulltext/1 { "content": "I like go to school." }Yukarıdaki komut, 1 adlı bir belge ekler ve content alanını I like go to school. olarak ayarlar.
Komut başarıyla çalıştırılırsa aşağıdaki sonuç döndürülür:
{ "_index": "index", "_type": "fulltext", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 0, "_primary_term": 1 } Belgelerde arama yapmak için aşağıdaki komutu çalıştırın.
Aşağıdaki komut yalnızca 7.0'dan önceki Elasticsearch sürümleri için geçerlidir. 7.0 veya sonraki sürümlerde fulltext ifadesini _doc olarak değiştirin.
GET /index/fulltext/_search
{
"query": {
"match": {
"content": "school"
}
}
}
Yukarıdaki komut, aliws analizörünü kullanarak fulltext türündeki tüm belgeler arasında content alanında school ifadesi geçen belgeleri arar.
Komut başarıyla çalıştırılırsa aşağıdaki sonuç döndürülür:
{
"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."
}
}
]
}
}
analysis-aliws eklentisinden alınan sonuçlar beklentileri karşılamazsa aşağıdaki Analizörü test etme ve Tokenizasyonu test etme bölümlerini kullanarak sorunu giderin.
Sözlükleri yapılandırma
analysis-aliws eklentisi sözlük yapılandırmasını destekler. aliws_ext_dict.txt adlı özel bir sözlük dosyası yükleyebilirsiniz. Dosyayı yükledikten sonra kümedeki tüm düğümler dosyayı otomatik olarak yükler ve kümeyi yeniden başlatmadan sözlüğü anlık olarak günceller.
analysis-aliws eklentisini yükledikten sonra herhangi bir sözlük dosyası sağlanmaz. Özel bir sözlük dosyasını manuel olarak yüklemeniz gerekir.
-
Bir sözlük dosyası yüklemeden önce dosyanın aşağıdaki gereksinimleri karşıladığından emin olun:
Dosya adı: aliws_ext_dict.txt olmalıdır.
Dosya biçimi: UTF-8 kodlaması kullanmalıdır.
İçerik: Her satırda başında veya sonunda boşluk bulunmayan tek bir terim yer almalıdır. UNIX veya Linux satır sonlarını (
\n) kullanın. Dosyayı Windows'ta oluşturduysanız yüklemeden önce bir Linux makinesinde dosyayı dönüştürmek için dos2unix aracını kullanın.
Alibaba Cloud Elasticsearch konsoluna giriş yapın.
Sol gezinme bölmesinde Elasticsearch Clusters seçeneğine tıklayın.
-
Hedef örneği açın.
a. In the menu bar, select the resource group and region. b. Click the target instance ID in <b class="xdita-conref" data-key="logstash.pipeline.slide.form.esInstanceId.title" data-project="elasticsearch">Elasticsearch Cluster</b>. Sol gezinme bölmesinde Configuration and Management > Plug-ins seçeneklerini belirleyin.
Built-in Plug-ins bölümünde analysis-aliws eklentisini bulun. İlgili satırın Actions sütununda Configure Dictionary seçeneğine tıklayın.
Configure Dictionary sayfasının alt kısmında Configure seçeneğine tıklayın.
-
Sözlük dosyasını yüklemek için bir yöntem seçin ve dosyayı yükleyin:
TXT File: Upload TXT File seçeneğine tıklayın ve yerel bir sözlük dosyası seçerek yükleyin.
Add OSS File: Paket adını ve dosya adını girin, ardından Add seçeneğine tıklayın. Paket ile Alibaba Cloud Elasticsearch örneğinin aynı bölgede bulunduğundan emin olun. Kaynak OSS dosyasının içeriği değişirse değişikliklerin etkili olması için sözlük dosyasını tekrar yükleyin. Otomatik senkronizasyon desteklenmez.
Notanalysis-aliws eklentisi yalnızca tek bir sözlük dosyasını destekler. Sözlük dosyasını güncellemek için yüklenen sözlük dosyasını silmek üzere aliws_ext_dict.txt dosyasının yanındaki X simgesine tıklayın ve ardından yeni bir dosya yükleyin.
Save seçeneğine tıklayın. Kaydetme işlemi kümeyi yeniden başlatmaz. Bunun yerine yüklenen sözlük dosyasını uygulayan bir küme değişikliğini tetikler. Bu işlem yaklaşık 10 dakika sürer.
Yüklenen bir sözlük dosyasını indirmek için yapılandırmadan önce ilgili
simgesine tıklayın.
Analizörü test etme
aliws analizörünü test etmek için aşağıdaki komutu çalıştırın:
GET _analyze
{
"text": "I like go to school.",
"analyzer": "aliws"
}
Komut başarıyla çalıştırılırsa aşağıdaki sonuç döndürülür:
{
"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
}
]
}
Tokenizasyonu test etme
aliws_tokenizer tokenizasyonunu test etmek için aşağıdaki komutu çalıştırın:
GET _analyze
{
"text": "I like go to school.",
"tokenizer": "aliws_tokenizer"
}
Komut başarıyla çalıştırılırsa aşağıdaki sonuç döndürülür:
{
"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
}
]
}
Özel tokenizasyon oluşturma
analysis-aliws eklentisi metni tokenize ettikten sonra stemmer, lowercase, porter_stem ve stop gibi filtreler uygular. Bu filtreleri özel bir tokenizasyonda kullanmak için özel tokenizasyona analysis-aliws eklentisinin aliws_tokenizer tokenizasyonunu ekleyin ve iş ihtiyaçlarınıza göre filtre yapılandırmaları ekleyin. Aşağıdaki örnekte nasıl yapılacağı gösterilmektedir. İş ihtiyaçlarınız için gereken durdurma kelimelerini stopwords bölümüne ekleyin.
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"
]
}
}
}
}
}
Filtrelere ihtiyacınız yoksa filtre yapılandırmasını kaldırabilirsiniz.
aliws_tokenizer, eş anlamlıları kullanarak özel bir tokenizasyon oluşturmayı destekler. Yapılandırması IK tokenizasyonu ile aynıdır. Daha fazla bilgi için bkz. Eş anlamlıları kullanma.
SSS
analysis-aliws eklentisini nasıl yapılandırırım? Bu eklenti için sözlük dosyasının biçimi nedir?
Elasticsearch eş anlamlıları, IK tokenleri ve AliNLP tokenleri arasındaki farklar nelerdir?
-
aliws analizörünü kullanarak kelimeleri tokenize ederken son harf eksik olabilir. Örneğin,
iPhoneveChineseifadelerini tokenize etmek sonundakieharfini kaldırarakIphonvechinessonuçlarını döndürür.Neden: aliws analizörü, tokenizasyondan sonra bir kök bulma filtresi uygular ve bu filtre sonundaki
eharfini kaldırır.-
Çözümler: Filtre bölümü olmadan
my_custom_analyzeradlı özel bir analiz yapılandırması oluşturmak için aşağıdaki komutu çalıştırın.PUT my-index1 { "settings": { "number_of_shards": 1, "analysis": { "analyzer": { "my_custom_analyzer": { "type": "custom", "tokenizer": "aliws_tokenizer" } } } } } -
Doğrulama: Tokenizasyon sonuçlarının beklentileri karşılayıp karşılamadığını doğrulamak için aşağıdaki komutu çalıştırın.
GET my-index1/_analyze { "analyzer": "my_custom_analyzer", "text": ["iphone"] }
Başvurular
Alibaba Cloud ES tarafından desteklenen eklentileri görüntülemek için bkz. Eklentilere genel bakış.
Bir API işlemi çağırarak yerleşik bir eklenti yüklemek için bkz. InstallSystemPlugin.
Bir API işlemi çağırarak analysis-aliws eklentisinin sözlük dosyasını güncellemek için bkz. UpdateAliwsDict.
Bir API işlemi çağırarak belirtilen bir Alibaba Cloud ES örneği için eklenti listesini almak için bkz. ListPlugins.