elasticsearch ve udemy kullanım pratikleri

33
1 İbrahim TAŞYURT Elasticsearch ve Udemy Kullanım Pratikleri

Upload: ibrahim-tasyurt

Post on 22-Jan-2018

679 views

Category:

Data & Analytics


7 download

TRANSCRIPT

Page 1: Elasticsearch ve Udemy Kullanım Pratikleri

1

İbrahim TAŞYURT

Elasticsearch ve Udemy

Kullanım Pratikleri

Page 2: 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ı

Page 3: Elasticsearch ve Udemy Kullanım Pratikleri

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

Page 4: Elasticsearch ve Udemy Kullanım Pratikleri

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

Page 5: Elasticsearch ve Udemy Kullanım Pratikleri

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ü

Page 6: Elasticsearch ve Udemy Kullanım Pratikleri

Apache Solr ile karşılaştırma

6

Ölçeklendirebilme avantajı

İdame Kolaylığı

Daha kullanışlı API

Page 7: Elasticsearch ve Udemy Kullanım Pratikleri

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.

Page 8: Elasticsearch ve Udemy Kullanım Pratikleri

Örnek Cluster Yapısı

8

Örnek:

4 Node

2 Shard

1 Replica

Herhangi bir Node

devredışı kaldığında,

cluster çalışmaya

devam eder.

Page 9: Elasticsearch ve Udemy Kullanım Pratikleri

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

Page 10: Elasticsearch ve Udemy Kullanım Pratikleri

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

Page 11: Elasticsearch ve Udemy Kullanım Pratikleri

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

Page 12: Elasticsearch ve Udemy Kullanım Pratikleri

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).

Page 13: Elasticsearch ve Udemy Kullanım Pratikleri

Udemy’de Elasticsearch Kullanımı

13

Page 14: Elasticsearch ve Udemy Kullanım Pratikleri

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)

Page 15: Elasticsearch ve Udemy Kullanım Pratikleri

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ı

Page 16: Elasticsearch ve Udemy Kullanım Pratikleri

İ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)

Page 17: Elasticsearch ve Udemy Kullanım Pratikleri

İ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

Page 18: Elasticsearch ve Udemy Kullanım Pratikleri

İ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

Page 19: Elasticsearch ve Udemy Kullanım Pratikleri

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

Page 20: Elasticsearch ve Udemy Kullanım Pratikleri

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.

Page 21: Elasticsearch ve Udemy Kullanım Pratikleri

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

Page 22: Elasticsearch ve Udemy Kullanım Pratikleri

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)

Page 23: Elasticsearch ve Udemy Kullanım Pratikleri

Filtreleme ve Gruplama (2)

23

Page 24: Elasticsearch ve Udemy Kullanım Pratikleri

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.

Page 25: Elasticsearch ve Udemy Kullanım Pratikleri

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

Page 26: Elasticsearch ve Udemy Kullanım Pratikleri

Ö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.

Page 27: Elasticsearch ve Udemy Kullanım Pratikleri

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)

Page 28: Elasticsearch ve Udemy Kullanım Pratikleri

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’

Page 29: Elasticsearch ve Udemy Kullanım Pratikleri

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

Page 30: Elasticsearch ve Udemy Kullanım Pratikleri

Ç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.

Page 31: Elasticsearch ve Udemy Kullanım Pratikleri

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

Page 32: Elasticsearch ve Udemy Kullanım Pratikleri

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

Page 33: Elasticsearch ve Udemy Kullanım Pratikleri

33

Teşekkürler