Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JDD2015: Lucene - od wyszukiwarki po analizę danych - Zbyszko Papierski

264 views

Published on

LUCENE - OD WYSZUKIWARKI PO ANALIZĘ DANYCH

Lucene jest biblioteką wspomagającą wyszukiwanie pełnotekstowe. Od dłuższego czasu ta biblioteka, wraz z rozwiązaniami o nią opartymi - Solr, Elasticsearch - służą nie tylko do szukania. Wśród wielu funkcji na dość znaczącą wyrosła analiza danych, o której chciałbym trochę opowiedzieć. Podczas prelekci opiszę, skąd pochodzi siła Lucene w procesie analizy - czyli jak działąją analizatory. Następnie wskoczymy w przykłady, które pozwolą na łatwe wejście w prostą analizę danych, wykorzystując Elasticsearch.

Published in: Software
  • Be the first to comment

JDD2015: Lucene - od wyszukiwarki po analizę danych - Zbyszko Papierski

  1. 1. Lucene Od wyszukiwarki po analizę danych Zbyszko Papierski zbyszko.papierski@gmail.com @ZPapierski @AllegroTechBlog
  2. 2. Jak działa indeks Lucene Analiza danych za pomocą Lucene Analiza danych za pomocą agregacji Elasticsearch Co będzie Lucene + Elasticsearch jako narzędzie do łatwej analizy danych
  3. 3. Odwrócony indeks + analiza danych tekstowych wydajne algorytmy poszukiwania analiza korpusu dokumentów (Faceting, Agregacje ELS) Dlaczego Lucene?
  4. 4. Indeks odwrócony (i płaski) Podzielony na niemutowalne segmenty wyszukiwanie może być realizowane w każdym segmencie oddzielnie Indeks Lucene
  5. 5. Lucene - Token { "token": "here", "start_offset": 0, "end_offset": 4, "type": "word", ... } token wartość tekstowa tokenu start_offset początek oryginalnej pozycji tokenu end_offset koniec oryginalnej pozycji tokenu type wykryty za pomocą tokenizera typ tokena, np word czy alfanum Obiekt tokenu posiada również inne pola, pozwala też na dodawanie własnych metadanych
  6. 6. Przykład doc1:Wiadra były koloru czerwono-niebieskiego Wiadra były koloru czerwono niebieskiego wiadro byl kolor czerwony niebieski {wiadro:1,byl:1,kolor:1,czerwony:1,niebieski:1} → doc1 Lucene - indeksowanie
  7. 7. • Proces analizy taki sam jak przy indeksowaniu • …lub niekoniecznie Lucene - zapytania
  8. 8. Analiza CharFilters Tokenizer TokenFilters Lucene - indeksowanie
  9. 9. CharFiltern → Tokenizer → TokenFilterm = Analizator Lucene - indeksowanie
  10. 10. Lucene - CharFilter Modyfikuje analizowany tekst Zmienia offset tokenów względem oryginalnego tekstu
  11. 11. Lucene - CharFilter HTML Strip Char Filter Zastosowanie: ● Usuwanie tagów HTML z danego tekstu <a href=”http://ex.pl”>this</a> is a test this is a test
  12. 12. Lucene - CharFilter Mapping Char Filter ● Pozwala na zamianę fragmentów tekstu na inny według mapowań Mapping = th → z, k → c release the kraken release ze cracen
  13. 13. Lucene - CharFilter Pattern Replace Char Filter ● Pozwala na zastępowanie fragmentów tekstu za pomocą wyrażeń regularnych ● Wykorzystuje mechanizmy i składnie pakietu Java regex ● Pozwala na referencję grup oryginalnego tekstu i odwołania wsteczne pattern = (.)1 replacement = $1 thrilled teenager thriled tenager
  14. 14. Lucene - Tokenizer Dzieli analizowany tekst na tokeny Zapisuje (bądź nie) dodatkowe informacje
  15. 15. Lucene - Tokenizer Whitespace Tokenizer ● Podział na tokeny po białych spacjach here comes/came the spider-man [here,comes/came,the,spider-man]
  16. 16. Lucene - Tokenizer Standard Tokenizer ● Podział na tokeny podług zasad łamania słów opisanych w Unicode® Standard Annex #29 ● dodaje informacje o tokenie ● Tworząc własny tokenizer, zaleca się sklonować ten Przykład: here comes/came the spider-man [here,comes,came,the,spider,man]
  17. 17. Lucene - Tokenizer Keyword Tokenizer ● Wejściowy tekst jest tokenizowany jako pojedynczy token Przykład: here comes/came the spider-man [here comes/came the spider-man]
  18. 18. Lucene - TokenFilter Wpływa na wynikowe tokeny Pozwala na modyfikację, usuwanie i dodawanie nowych
  19. 19. Lucene - TokenFilter Lowercase Token Filter ● Zamiana wszystkich znaków na małe ● Analogiczny - UppercaseTokenFilter [Rewelacyjny, ten,TokenFilter] [rewelacyjny, ten,tokenfilter]
  20. 20. Lucene - TokenFilter Synonym Token Filter ● Pozwala na podmianę danego tokenu na jego synonimy, zdefiniowane podczas inicjacji filtru ● Flaga expand pozwala na dołożenie wszystkich synonimów danego tokena do wynikowego strumieńa tokenów [rewelacyjny, ten,tokenfilter] [świetny,rewelacyjny,boski, ten,tokenfilter] Uwaga: Expand warto stosować, jeśli optymalizujemy zapytania względem zapisów. Uwaga 2: Żeby złapać wielowyrazowe synonimy, można użyć Shingle TokenFilter, lub wprowadzić Expand na etapie zapytania.
  21. 21. Lucene - TokenFilter Shingle Token Filter ● Dokłada tokeny będące połączeniem innych, następujących po sobie tokenów ● opcje min_shingle_size i max_shingle_size ilości tokenów używanych do kombinacji. Domyślnie obie to 2 [to, jest,test] [to,to jest,jest, jest test,test] Uwaga: Filtr jest w stanie znacząco powiększyć wejściowy
  22. 22. Lucene - TokenFilter Morfologik Token Filter ● Podmienia słowa w tekście (typ word) na formy wspólne w języku polskim - niekoniecznie są to formy podstawowe czy tematu ● Przykład filtra realizującego funkcjonalność stemmingu ● Nie jest to jedyny filtr realizujący stemming dla języka polskiego [urodzić][urodzony][urodzona][urodzeni] [urodzić] [urodzić,urodzony] [urodzić,urodzić] [urodzić, urodzony] Przykład za: http://solr.pl/2012/04/02/solr-4-0-i-mozliwosci-analizy-jezyka-polskiego/ Uwaga: Expand warto stosować, jeśli optymalizujemy zapytania względem zapisów
  23. 23. ● CharFilter ○ HTML Strip ○ Mapping ○ Pattern Replace ● Tokenizer ○ NGram ○ Path Hierachy ○ i więcej... Lucene - indeksowanie
  24. 24. ● TokenFilter ○ Synonym ○ Stemmer ○ Shingle ○ Ascii Folding ○ Phonetic Token Filter ○ Stop Token Filter ○ i (dużo) więcej... Lucene - indeksowanie
  25. 25. • Relevancy scoring - sortowanie po trafności • TF-IDF • inne, rzadziej używane Lucene - zapytania
  26. 26. • Najdłużej używany • Spora społeczność • praca na cloudzie dorzucona w późniejszych wersjach Narzędzia - Solr
  27. 27. • Potężne możliwości out-of-the-box • ale swobodnie konfigurowalny • Znacznie lepsze możliwości analityczne niż Solr • Struktura dokumentu odwzorowana w json (dokumenty Lucene są płaskie) Narzędzia - Elasticsearch
  28. 28. • Pozwala na budowanie online informacji na temat agregatów danych • Wyszła z modułu facet bibliotek Lucene • Dużo dostępnych agregacji • Agregacją są zagnieżdzalne! Elasticsearch -Agregacja
  29. 29. Typy agregacji: • metric • bucket • pipeline - dopiero od 2.0.0Beta1 Elasticsearch -Agregacja
  30. 30. Analiza danych Konfiguracja: • Zaindeksowane zapytania • Agregacja date-histogram - z opcją interval 1M • podagregacja significant-terms Uwaga: Agregacja significant-terms po polach typu free text jest pracochłonna! Przypadek użycia: Odnalezienie trendów w wyszukiwaniach użytkowników w poszczególnych miesiącach
  31. 31. Analiza danych Konfiguracja: • Zaindeksowane artykuły • Agregacja significant-terms Uwaga: Agregacja significant-terms po polach typu free text jest pracochłonna! Przypadek użycia: Zaprezentowanie popularnych pojęc występujących w artykułach w kontekście wyszukiwania - “chmura tagów”
  32. 32. Analiza danych Konfiguracja: • Zaindeksowane aktywności razem z lokacją • Agregacja geohash_grid Uwaga: Agregacja geohash_grid działa na konfigurowalnej precyzji obszarów - małe obszary powodują duży narzut na RAM. Rozwiązanie - ograniczenie obszaru wejściowego za pomocą filtru geo_bounding_box Przypadek użycia: Obszary geograficzne największej aktywności
  33. 33. Analiza danych Konfiguracja: • Zaindeksowane aktywności razem z danymi użytkownika i czasem wystąpienia • Agregacja range o polu z wiekiem • podagregacja date_histogram z wybranym interwałem i ustawieniem order na “_count”:”desc” Przypadek użycia: Najczęstsze miesiące aktywności na serwisie w podgrupach wiekowych
  34. 34. Analiza danych Konfiguracja: • zaindeksowanie danych ofert razem z wystawiającym • agregacja terms po płci • podagregacja terms po typie ofert Przypadek użycia: najczęściej występujące typy ofert w zależności od płci
  35. 35. Narzędzia - kopf
  36. 36. Narzędzia - Logstash ● “Rura” zbierająca dane z różnych źródeł ● Ułatwia przekształcanie danych do wspólnego modelu ● Bardzo dobra współpraca z Elasticsearch (pakiet ELK)
  37. 37. Narzędzia - kibana
  38. 38. https://github.com/maeph/JUG-Lucene - examples http://lucene.apache.org/solr/ - Solr http://lucene.apache.org/ - Lucene http://www.elasticsearch.org/ - Elasticsearch Links
  39. 39. Q/A

×