elasticsearch ve udemy kullanım pratikleri
TRANSCRIPT
1
İbrahim TAŞYURT
Elasticsearch ve Udemy
Kullanım Pratikleri
Ajanda
2
Udemy
Elasticsearch ve Temel Arama Kavramları
Udemy’de Elasticsearch kullanımı:
İndeksleme
Temel arama işlevleri
Metin Analizi
Çoklu dil desteği
TF ve IDF değerlerinin çıkarımı
Udemy
3
Video tabanlı Online Eğitim Platformu ve Pazaryeri
+12 Milyon Aktif Kullanıcı
50 Bin Ders
Web, Mobil ve AppleTV uygulamaları
San Francisco, Ankara ve Dublin ofisleri
Toplam 254 çalışan, 85+ Mühendis
Udemy Türkiye Ofisi:
25+ Mühendis
Udemy (Discovery)
4
Amaç: Doğru kullanıcıyı doğru dersle buluşturmak
Alt Takımlar
Arama (Search)
Öneri (Recommendation)
Kanallar(Channel)
Veri Bilimi (Data Science) destekli çalışmalar
Kullanılan araçlardan bazıları:
Elasticsearch
Elasticsearch
5
Arama Motoru ve İlişkisel Olmayan Veritabanı
Java ile geliştirilmiş
Açık Kaynaklı
Apache Lucene tabanlı
Dağıtık
Hata dayanıklı(Fault tolerant)
Ölçeklendirilebilir
REST/JSON arayüzü
Apache Solr ile karşılaştırma
6
Ölçeklendirebilme avantajı
İdame Kolaylığı
Daha kullanışlı API
Temel Elasticsearch (ES) Kavramları
7
Node: Her bir çalıştırılabilir ES sunucusu
Cluster(Küme): Verinin dağıtık ve tutarlı şekilde tutulduğu Node grubu
Index: Benzer karakterdeki verilerin(doküman) saklandığı yapı
Document(Doküman): İndekslenebilen temel veri yapısı
JSON
Field(Alan): Dokümanın üstündeki alanlar
Shard: Her bir indeksin içinde dokümanların bir kısmını tutan bölüm
Farklı node’lar üzerinde durabilirler.
Örnek Cluster Yapısı
8
Örnek:
4 Node
2 Shard
1 Replica
Herhangi bir Node
devredışı kaldığında,
cluster çalışmaya
devam eder.
Shard ve Replicalar
9
Shard:
Her shard bir Lucene indeksidir.
Sorgular her shard üzerinde çalıştıktan sonra, koordinatör
node üzerinde birleştirilir (scatter/gather).
Shard sayısı performans/ölçeklendirme üzerinde etkilidir.
Replica:
Hata dayanıklılığı
Sorgu performansında iyileşme
Temel Arama Kavramları
10
Relevance(İlgi): Bir aramanın, dokümanla örtüşmesi/benzerliği.
Terim Frekansı(Term Frequency, TF):
Bir terimin metinde geçme sıklığı
Ters Doküman Frekansı(Inverse Document Frequency, IDF)
Bir terimin ne kadar az dokümanda geçtiğinin ölçüsü
Ayırdedicilik
Score(Skor): İlginin numerik ifadesi
Basit olarak TF ve IDF’in çarpımıyla orantılıdır
Terim Frekansı(Örnek)
11
“Java Programlama ve Temel Programlama Mantığı”
“Java Programlama ve Veri Madenciliği”
“Programlama” aramasında, ilk doküman daha yüksek skora sahip olacaktır.
Terim Java Programlama ve Temel Mantığı
TF 1 2 1 1 1
Terim Java Programlama ve Veri Madenciliği
TF 1 1 1 1 1
Ters Doküman Frekansı (Örnek)
12
Senaryo:
Veri setimiz 100 dokümandan oluşsun.
Bunların 10’unda “Java”, 3’ünde “Elasticsearch” terimleri geçiyor
olsun.
“Elasticsearch” daha yüksek IDF değerine sahip(daha ayırt edici).
Sonuç:
“Java Elasticsearch” aramasında, “Elasticsearch” içeren
dokümanlar daha yüksek skora sahip olur(arama sonuçlarında
yukarıda görünür).
Udemy’de Elasticsearch Kullanımı
13
Udemy’de Elasticsearch
14
Versiyon 1.5.2
Canlı, Test ve Geliştirme Kümeleri
7 Node
Çoklu shard ve replica’lar
REST API ile erişim
İstemci Kütüphaneleri:
elasticdsl (Python)
Spring Data (Java)
Kullanılan Araçlar
15
HQ Plugin’i
Cluster’ın izlenmesi ve basit yönetimi
Datadog/New Relic
Performansın ve kaynak kullanımının görüntülenmesi
Sense
Google Chrome Plugin’i
Cluster’a REST istekleri gönderimi
Elasticdump
Komut satırı aracı
İndekslenen Dokümanlar
16
Dersler(Course)
Kullanıcılar(User)
Arama Kayıtları(Search Log)
Kullanıcı Mesajları(Message Thread)
Ders Tartışmaları (Course Discussion)
İndeksleme
17
Dokümanlar veritabanından alınarak Elasticsearch’e indekslenir
Gerçek Zamanlı İndeksleme:
Verilerdeki değişiklikler uygulama üzerinden fark edilerek değişen dokümanlar gerçek
zamanlı olarak indekslenir
Periyodik İndeksleme:
Bütün dokümanlar periyodik olarak Elasticsearch üzerinde güncellenirler
Toplu(Bulk) olarak yapıldığı için gerçek zamanlı indekslemeye göre daha performanslıdır
İndekslenen alanlar (Ders)
18
Ders sahibi(instructor) kaynaklı alanlar:
Başlık, Altbaşlık, Ders Tanımı, Ders Veren(instructor) adı….
Dersin kalitesi/performansı ile alakalı alanlar:
Öğrenci sayısı, Puan, Yorumlar, Kazanç, İzlenme miktarı….
Dersin ait olduğu kategori/alt başlık/koleksiyon bilgileri
Dersin ücretine ilişkin bilgiler
Ders ile alakalı etiketler(Tag)
Manuel ve Algoritmik
Temel Arama İşlevleri
19
Amaç:
Aramaya uygun dokümanları(dersleri) bulmak
Aramaya daha çok uyan dokümanların arama sonuçlarında yukarıda
görünmesi
Udemy Arama Sonuçları
Uyarlanmış (Custom) bir fonksiyonla sıralanır
Bileşenler:
Kullanıcı kaynaklı alanlar
Kullanıcı kaynaklı alanlar
20
Başlık, Altbaşlık, Ders verenin adı vs.
Genel olarak TF-IDF hesaplamasına dayalı, uyarlanmış(custom) bir skor
fonksiyonu kullanılır.
Her alan farklı şekilde ağırlıklandırılır(boosting).
Arama yapan kullanıcının dilindeki dersler daha yüksek skorlandırılır.
Kalite/Performans kaynaklı alanlar
21
Dersin aldığı kullanıcı puanları,yorumlar, kazanç, izlenme vs.
Her alan, uyarlanmış birer fonksiyon üzerinden, skora etki eder.
Alanların ağırlıkları ve fonksiyonların parametreleri, geçmiş veriye bağlı
olarak Makine Öğrenmesi yöntemleriyle belirlenir
Filtreleme ve Gruplama
22
Kullanıcının arama sonuçlarını daraltmasını ve aradığı dersi daha kolay
bulmasını sağlar
Elasticsearch’ün filtre ve gruplama(aggregation) özellikleri kullanılır
Filtre Alanları:
Dil
Seviye
Ücret(Ücretli/Ücretsiz)
Özellikler(Altyazı, Quiz, Kodlama Egzersizi)
Filtreleme ve Gruplama (2)
23
Sıralama
24
Kullanıcı arama sonuçlarını belli kriterlere göre sıralayabilir
Kriterler:
İlgi(varsayılan)
Fiyat
Puan
Eklenme Tarihi
Elasticsearch’ün sıralama(sort) işlevi ile yapılır
İlgi dışındaki alanlar, TF-IDF kaynaklı skorlamaları devredışı bırakır.
Otomatik Tamamlama
25
Arama kutusunda, kullanıcının aramasını otomatik olarak tamamlamaya
yardım eder.
Kullanılan bilgiler:
Ders başlığı
Ders veren kullanıcı isimleri
Önceki popüler arama kayıtları
Burada, Elasticsearch’ün metin eşleştirme (text match) işlevleri kullanılır
Prefix eşleşmesi
Öneri (Bunu mu demek istediniz?)
26
Arama sonucuna uygun bir sonuç bulunamadığında alternatif öneriler için
kullanılır.
Elasticsearch’ün öneri(‘suggest’) işlevinden faydalanılır.
Dokümanlarda yer alan daha sık görülen benzer sözcükler öneri olarak
sunulur.
Metin Analizi ve Temizlenmesi
27
Metinler çoğunlukla analiz ve temizleme işlemine ihtiyaç duyarlar:
Dokümanlardaki alanlar
Arama terimleri
Bu amaçla Elasticsearch Analyzer’ları kullanılır.
Her alan için ayrı bir Analyzer tanımlanabilir
Analyzer işlevleri:
Ayrıştırma(Tokenization): Metni parçalara(token) ayırma
Filtreleme: Parçaların manipüle edilmesi(ekleme/silme/değiştirme)
Udemy’de Metin Analizi
28
Desteklenen diller:
İngilizce
Japonca
Kullanılan Analyzer’lar
Elasticsearch üzerinde gelen standard Analyzer’lar
Udemy tarafından geliştirilen ‘Udemy Analyzer’
Plugin
Japonca ayrıştırmasını yapan ‘RBL Analyzer’
Metin Analizi İşlemleri
29
Etkisiz sözcük ayrıştırılması
‘A Java Course for Beginners’ -> ‘Java’, ‘Course’ ,’Beginners’
Özel karakterler içeren sözcükler
‘C++’, ‘PL/SQL’
ASCII olmayan karakterlerin dönüşümleri
‘ÇAĞDAŞ’->’CAGDAS’,’ÇAĞDAŞ’
Eşanlamlı sözcüklerin işlenmesi
‘js’,’java script’, ‘javascript’-> ‘javascript’
Köklere ayırma
Çoklu dil desteği (Japonca)
30
Japonca olan doküman metinler, Japonca Analyzer’ı (RBL) kullanılarak ayrı
alanlarda indekslenir.
Japonca arama terimleri, bu alanlar üzerinden sorgulanır.
Arama teriminin dilini saptamak için, Rosette’nın ilgili API’ı kullanılır.
TF-IDF Değerlerinin Çıkarımı
31
Gereksinim:
Arama algoritmasının kişiselleştirilebilmesi amacıyla, arama sonuçlarına ait TF ve IDF
değerlerinin alınması
Problem:
Elasticsearch bu değerleri sadece açıklama (explain) modu açıkken veriyor.
Performanslı değil
Çözüm:
Elasticsearch Agent
Bytecode instrumentation ile Elasticsearch davranışı çalışma anında değiştirilerek
Gelecek Planları
32
Elasticsearch versiyonunu 1.5.2’den 2.x.y’ye yükseltme
Filtre yapısının değiştirilmesi
Elasticsearch Agent’ın 2.x.y’e uygun olarak, ya da Plugin olarak yeniden yazılması
Cluster optimizasyonları
Metin analizinde iyileştirmeler
Skor fonksiyonunda iyileştirmeler
33
Teşekkürler