Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní...
Transcript of Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní...
![Page 1: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/1.jpg)
Fingerprintingpřípadová studie26. 11. 2014 Josef Šlerka, Socialbakers, @stunome MLMU Praha
![Page 2: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/2.jpg)
Kdo jsem...stručné představení...
![Page 3: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/3.jpg)
Josef Šlerka
Head of R&D v Socialbakers
V minulosti šéf Ataxo Interactive
Stojím za projekty jako je Social Insider a další
Vedu Studia nových médií na FF UK
![Page 4: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/4.jpg)
Social Insider a Listeninga jejich specifické problémy...
![Page 5: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/5.jpg)
Social Insider & co.
Social Insider je social media monitoring pro český a slovenský trh, který ma světovou mutací Social Listening.
Technologicky využíváme Amazon, Elasticsearch, Redis, Ruby a další.
![Page 6: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/6.jpg)
Běžné problémy
Datové zdroje jsou zcela asynchronní (stream api v frekvenční api). Tlak je proměnlivý podle typu události.
Data jsou relativně velká (půl miliardy zmínek konstatně se měnící v čase).
Není předem jasné použití. Nejsou tu jasné reporty.
![Page 7: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/7.jpg)
Specifické požadavky
Asynchronost dat kupříkladu jinak postavený interface. Nelze kupříkladu stránkovat. (ukázka)
Drill-down menu je analytikou, nikoli navigací.
Není jasné kolik dat se bude exportovat, je proto třeba exportů na pozadí.
Specifický problém při aggregacích spojený s konstatním tlakem dat.
![Page 8: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/8.jpg)
![Page 9: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/9.jpg)
![Page 10: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/10.jpg)
Specifické požadavky
Asynchronost dat kupříkladu jinak postavený v interface, nelze kupříkladu stránkovat. (ukázka)
Drill-down menu je analytikou, nikoli navigací.
Není jasné kolik dat se bude exportovat, je proto třeba exportů na pozadí.
Specifický problém při aggregacích spojený s konstatním tlakem dat.
![Page 11: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/11.jpg)
Nejvíc sdílený obsahEtuda na téma podobné příspěvky aneb fingerprinting
![Page 12: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/12.jpg)
Požadavek najdi mi nebo posty, které jsou si hodně podobné: “třeba tak na 90% nebo tak nějak”
příklad:
#Rusko poprvé soudí žoldáka za válčení v řadách separatistů na Ukrajině. Média ho označují za nacionalistu a fašistu. http://t.co/7JtHsc3YV0
RT @Aktualnecz: #Rusko poprvé soudí žoldáka za válčení v řadách separatistů na Ukrajině. Média ho označují za nacionalistu a fašistu. http:…
![Page 13: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/13.jpg)
KlasikaLevenstheinova distance, NCD a další nearest neighbor methods
![Page 14: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/14.jpg)
Levensthein & Co.
Hammingova distance - počet substitucí znaků, které je nutno změnít aby se jeden řetezec proměnil v druhý (předpokládá se stejná vzdálenost)
Levenstheinova distance - počet substitucí, vložení a smazání které je třeba pro změnu jednoho řetězce v druhý (řetězce mohou být různě dlouhé)
![Page 15: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/15.jpg)
NCDNormalized compression distance.
Abstraktní měření vzdálenosti řetězců pomocí kompresí.
Autory jsou Rudi Cilibrasi a Paul M. B. Vitanyi
Podobné věci sdílí stejné vlastnosti
Dvě reprezentace jsou si tím podobnější, čím méně složitých změn je třeba k převodu jedné v druhou
![Page 16: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/16.jpg)
NCD
![Page 17: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/17.jpg)
![Page 18: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/18.jpg)
![Page 19: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/19.jpg)
Pro a protirostoucí komplexita: n(n-1)/2 (u tranzitivních!)
3000 řádku vyžaduje 4.5 million kalkulací
proměnlivá velikost textů
jde optimalizovat, ale POZOR máme tu konstatní tlak dat a případný clustering musíme dělat on-the-fly
umožňuje jemnější klastrování, někdy ale není jasné proč
![Page 20: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/20.jpg)
Znovu a lépekey collision methodsaneb fingerprinting (a taky perceptual hashing)
![Page 21: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/21.jpg)
Základní idea
vytvořit takovou reprezentaci obsahu, která bude různé podoby obsahu normalizovat do jednoho klíče
de facto je to převrácená podoba hashování
místo co nejkratší reprezenace unikátního obsahu tu chcem mít reprezentaci, která postihne co největší variablitu obsahu
podobné příspěvky pak získáváme třeba agregací
![Page 22: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/22.jpg)
Příklady
Fingerprint
N-Gram Fingerprint
findimagedupes.pl
![Page 23: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/23.jpg)
Fingerprintpřevést na běžnou ASCII reprezentac (zbabit je diakritiky)
odmazat všechny přebytečné prázdné mezery
všechny znaky změnit na malé
odmazat všechny interpunkční znaménka
rozdělit řetězec do samostatnách tokenů přes prázdné mezery
seřadit tokeny podle abecedy a odmazat duplikující se
spojit je všechny opět do jednoho řetězce
![Page 24: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/24.jpg)
Detaily
řeší specifický problém s diakritikou a šumem znaků
pořadí slov v textu je pro něj nerelevatní
možnosti vylepšení: odstranění speficických slov (jak stopwords, tak RT či via), lemmatizace či stemming
možnostu ušteření místa pomocí klasíckého hash
![Page 25: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/25.jpg)
N-Gram Fingerprint
převeď na ASCII reprezentaci
změň všechny znaky na malé
odmaž všechnu interpunkci a všechny speciální znaky
získej seznam n-gramů
spoj je dohromady
![Page 26: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/26.jpg)
Detaily
příklad: “bratislava” ma 1-gram “abilrstv”
oproti předchozímu ve variantě s 1-gramy a 2-gramy
dokáže řešit specifické varianty: "Krzysztof", "Kryzysztof" a "Krzystof" mají stejný 1-gram fingerprint
![Page 27: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/27.jpg)
findimagedupes.plstandartizuje velikost na 160x160
převeď na škálu šedé
rozmazej trochu
normalizuje barevnou intenzitu
zvyš na maximum kontrast
znovu přesampluj na 16x16 a převeď na mono
vezmi 32 bytes obrazku a máš fingerprint
![Page 28: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/28.jpg)
Pro a proti
výkon, výkon, výkon! podobný obsah se dostává pouhou agregací a šetrně
ale je to poměrně hrubá podobnost
lze však různě vylepšovat
![Page 29: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/29.jpg)
Co to spojit?Similarity hashing
![Page 30: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/30.jpg)
Simhasing
Simhashing (hopefully) made simple
http://ferd.ca/simhashing-hopefully-made-simple.html
![Page 31: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/31.jpg)
Simhasing
Všechna písmena můžeme reprezetnovat pomoci ASCII kódu a dál binárně.
![Page 32: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/32.jpg)
Simhasing
A tím pádem i celá slova...
![Page 33: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/33.jpg)
Simhasing
Redundance může odstranit...
![Page 34: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/34.jpg)
Simhasing
A vidím, že 1 a 3 si budou asi tak nějak podobnější a 2 a 4 taky.
![Page 35: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/35.jpg)
Simhasing
A vidím, že 1 a 3 si budou asi tak nějak podobnější a 2 a 4 taky. Jsou to mimochodem "banana", "bozo", "cabana", and "ozone".
![Page 36: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/36.jpg)
Simhasing
Můžeme udělat histogramy výskytů jednoho z býtů, ale tím ztratíme celou informaci (nevím o nic o absetujících bitech)
![Page 37: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/37.jpg)
Simhasing
Možná lepíš je komprimovat je jinak. Třeba za prázdný bit dát mínus jedna a za obsazený dát plus jedna.
![Page 38: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/38.jpg)
Simhasing
Možná lepšá je komprimovat je jinak. Třeba za prázdný bit dát mínus jedna a za obsazený dát plus jedna.
![Page 39: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/39.jpg)
Simhasing
A vytvořit tak pěkný histogram...
![Page 40: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/40.jpg)
Simhasing
A vytvořit tak pěkný histogram.. a ten pak komprimovat...
![Page 41: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/41.jpg)
Simhasing
Když potom přídáme kupříkladu nové slovo, můžeme spočítat Hammingovu vzdálenost (slovo “ssssss” je podobnější "banana" než "bozo")
![Page 42: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/42.jpg)
Simhasing
V téhle jednoduché implementaci hrála silnou roli frekvence písmen (lépe features)...
![Page 43: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/43.jpg)
Simhasing
Spousta problémů:
a) co s texty jako aaaaaahhhhh! a hahahaha!
b) co s jinými než ASCII znaky
a další...
![Page 44: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/44.jpg)
Simhasing
co s texty jako aaaaaahhhhh! a hahahaha?
tak třeba využití unikátních bigramů (aa, ah, ha, hh) místo písmen?
![Page 45: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/45.jpg)
Simhasing
co s jinými než ASCII znaky?
v zásadě jde jen o to jak se dobrat k unikátnímu identifikátoru nějake featury, čili co třeba použít MD5
![Page 46: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/46.jpg)
Simhasing
a další?
![Page 47: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/47.jpg)
Simhasing
1. "the cat in the tree is white"
2. "the man in the suit is happy"
3. "a white cat is in a tree"
Subjektivně jsou si 1 a 3 podobnější, ale ...
![Page 48: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/48.jpg)
Simhasing
... když je přepočítáme ...
![Page 49: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/49.jpg)
Simhasing
Ukáže se, že je to jinak. Díky common words....
![Page 50: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/50.jpg)
Simhasing
... nám vyjde matematicky něco jiného.... 1. "the cat in the tree is white" ,2. "the man in the suit is happy", 3. "a white cat is in a tree"
![Page 51: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/51.jpg)
Simhasing
řešení?
![Page 52: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/52.jpg)
Simhasing
Váhy jednotlivých features. Obecná slova obvykle plus a mínus jedna. Neobvyklá plus a mínus tři...
![Page 53: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/53.jpg)
Simhasing
A už se to zpravilo...
![Page 54: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/54.jpg)
Simhasing
Tolik krásné uvedné do problémů pro nás manažerské lamy z blogu: http://ferd.ca/simhashing-hopefully-made-simple.html
![Page 55: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/55.jpg)
Simhashingnejznámější aplikací je asi SimHash používaný Googlem a vyvinutý Mosesem Charikarem
původní http://www.cs.princeton.edu/courses/archive/spr04/cos598B/bib/CharikarEstim.pdf
mnoho paperů a článků:
http://www2007.org/papers/paper215.pdf
http://matpalm.com/resemblance/simhash
![Page 56: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/56.jpg)
Příklad implementace
klasicky nám dává hash různé hashe pro různé stringy
http://matpalm.com/resemblance/simhash
![Page 57: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/57.jpg)
Příklad implementace
simhash dává podobné hashe pro podobné řetězce
![Page 58: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/58.jpg)
Příklad implementace
hammingova vzdálenost podobného párů (p1,p2)=4
zatím co (p1,p3)=16 a (p2,p3)=12
![Page 59: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/59.jpg)
XOR přítel 10101011100010001010000101111100
XOR 10101011100010011110000101111110
= 00000000000000010100000000000010
máme tak 3 změny z 32, neboli odhadovaný rozdíl 3/32 tedy 0.09375
nebo chcete-li 1 - 3 / 32 = 0,90625 (90%)(viz třeba blogpost: http://www.titouangalopin.com/blog/articles/2014/05/simhash-or-the-way-to-compare-quickly-two-datasets)
![Page 60: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/60.jpg)
Integrace...... zpět k technoligii
![Page 61: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/61.jpg)
More like this...
Lucene based databáze podporují možnosti najdi mi podobné příspěvky jako je tento, které jsou v Levenstheinu vzdáleny o ... Jde tak lehce (byť né úplně) nahradit hammingovu vzdálenost.
![Page 62: Fingerprinting · Redis, Ruby a další. Běžné problémy Datové zdroje jsou zcela asynchronní (stream api v ... Pro a proti rostoucí komplexita ... More like this... Lucene](https://reader035.fdocument.pub/reader035/viewer/2022081616/5fe5bd6024af515cca033db7/html5/thumbnails/62.jpg)
Děkuji za pozornost!@josefslerka