Forum » Programiranje » levenshtein distance
levenshtein distance
BRBR ::
Kako se to implementira na veliko podatkov v bazi ?
Ok milijon stringov in primerjanje vsakega z vsakim ?
Vem za stram kjer naredi fuzzy match v parih sekundah, naprimer za tole
Fosilella farinosa (dani string)
Fosliella farinosa (string ki ga najde)
Če bi primerjali vsak string v bazi s danim stringom, par sekund ni variante ?
Da dela s sondex-om dvomim ker najde rešitve tudi za bolj zatipkane stringe.
Ok milijon stringov in primerjanje vsakega z vsakim ?
Vem za stram kjer naredi fuzzy match v parih sekundah, naprimer za tole
Fosilella farinosa (dani string)
Fosliella farinosa (string ki ga najde)
Če bi primerjali vsak string v bazi s danim stringom, par sekund ni variante ?
Da dela s sondex-om dvomim ker najde rešitve tudi za bolj zatipkane stringe.
windigo ::
Uporabi naprimer ujemanje v double metaphone (dela bolje kot soundex, lahko delaš seveda tudi s soundex) za iskanje potenicalnih kanidatov, potem pa na teh kandidatih računaj to razdaljo. Ni 100%, je pa za precej uporab zadosti dobro.
Problem pri tem je, da metaphone dela samo za posamezne besede in ni univerzalen (ne vem kako dela za Japonščino in Kitajščino, kaj šele za poljubne nize znakov), torej moraš razbiti stavek na besede in za vsako izračunati in shraniti metaphone, torej posebej za fosilella in za farinosa.
Problem pri tem je, da metaphone dela samo za posamezne besede in ni univerzalen (ne vem kako dela za Japonščino in Kitajščino, kaj šele za poljubne nize znakov), torej moraš razbiti stavek na besede in za vsako izračunati in shraniti metaphone, torej posebej za fosilella in za farinosa.
BRBR ::
Ok, si bom prebral kaj je ta metaphone.
Najbrž metaphone ne bi delal če bi stavek kar zlepil skupaj (ves presledke ven) ...
Hvala.
Najbrž metaphone ne bi delal če bi stavek kar zlepil skupaj (ves presledke ven) ...
Hvala.
windigo ::
Ne bo delalo, če zlepiš stavek skupaj, metaphone je podobno kot soundex štiričrkovna zgoščevalna oznaka izračunana iz posamezne besede; (double) metaphone in soundex in podobno moraš računati in shraniti za vsako besedo posebej ob spremembi besedila.
Red_Mamba ::
a to rabis samo cele stringe primerjat?
ker ce ja izracunas hash vrednosti za vse in jih primerjas po teh
ker ce ja izracunas hash vrednosti za vse in jih primerjas po teh
[st.slika https://img.shields.io/badge/Slo-Tech-green.svg test]
Linkedin >> http://goo.gl/839Aua
Mamba's Crypto & ICO's: https://t.me/joinchat/AAAAAExTkO4P4UDy0fIZdg
Linkedin >> http://goo.gl/839Aua
Mamba's Crypto & ICO's: https://t.me/joinchat/AAAAAExTkO4P4UDy0fIZdg
windigo ::
Če imaš pa veliko več denarja kot pa časa za razvoj, pa lahko tudi kupiš exorbyte. :)
Ravno nasprotno, če prav razumem bi rad, da mu iskanje deluje tudi, če iskalni niz ni ravno 100% pravilen, torej da tolerira tudi zatipkovanja, napačno črkovanje ipd.
Torej rabi ravno nasprotno od razpršilne - zgoščevalno funkcijo, ki podobne besede združi v eno zgoščevalno oznako.
a to rabis samo cele stringe primerjat?
ker ce ja izracunas hash vrednosti za vse in jih primerjas po teh
Ravno nasprotno, če prav razumem bi rad, da mu iskanje deluje tudi, če iskalni niz ni ravno 100% pravilen, torej da tolerira tudi zatipkovanja, napačno črkovanje ipd.
Torej rabi ravno nasprotno od razpršilne - zgoščevalno funkcijo, ki podobne besede združi v eno zgoščevalno oznako.
Zgodovina sprememb…
- spremenilo: windigo ()
BRBR ::
a to rabis samo cele stringe primerjat?
ker ce ja izracunas hash vrednosti za vse in jih primerjas po teh
S tem si pač ne moreš pomagat nič, to ti samo pove če sta enaka, kar pa že tako ali tako veš brez hash - a.
Če dobro pogledaš ta dva stringa sta malo različna, drugi nekaj pomeni, prvi pa čisto nič.
Fosilella farinosa (dani string)
Fosliella farinosa (string ki ga najde)
alora nekaj, kar slućajno vem da ni nič (ali skoraj gotovo nič) (jih imam par 100 v eni tabeli), hočem primerjat z eno tabelo (recimo milijon recordov) kjer pa so zagotovo vredu stringi.
Zgodovina sprememb…
- spremenil: BRBR ()
Red_Mamba ::
potem pa izluscis besede v graph (neo4j) bazo in pogledas koliko besed se ujema med dvema
rezultat obravnavas kot score in lahko posortiras po njih reultate.
a imas to slucajno za kak suggestion?
sproti izpisujes najboljse zadetke ko uporabnik nekaj tipka?
rezultat obravnavas kot score in lahko posortiras po njih reultate.
a imas to slucajno za kak suggestion?
sproti izpisujes najboljse zadetke ko uporabnik nekaj tipka?
[st.slika https://img.shields.io/badge/Slo-Tech-green.svg test]
Linkedin >> http://goo.gl/839Aua
Mamba's Crypto & ICO's: https://t.me/joinchat/AAAAAExTkO4P4UDy0fIZdg
Linkedin >> http://goo.gl/839Aua
Mamba's Crypto & ICO's: https://t.me/joinchat/AAAAAExTkO4P4UDy0fIZdg
Zgodovina sprememb…
- spremenil: Red_Mamba ()
windigo ::
alora nekaj, kar slućajno vem da ni nič (ali skoraj gotovo nič) (jih imam par 100 v eni tabeli), hočem primerjat z eno tabelo (recimo milijon recordov) kjer pa so zagotovo vredu stringi.
takale ad-hoc zadeva ni vredna kakšnega igranja z zgoščevanjem, to bi imelo smisel kvečjemu, če rabiš dati uporabniku trenutne povratne informacije, recimo ob vnosu, tako pa poženeš direkt levenstheina na celi miljonski tabeli enkrat, ko zadeva ni močno obremenjena, naslednje jutro preveriš rezultate, pa je.
BRBR ::
double metaphone
Double metaphone, za obe besedi ločeno z vejico.
"Aglitheis carinata","AKL0S;ALTS,KRNT"
Kaj pomeni secondary (To naj bi bilo tisto za';') ?
Double metaphone, za obe besedi ločeno z vejico.
"Aglitheis carinata","AKL0S;ALTS,KRNT"
Kaj pomeni secondary (To naj bi bilo tisto za';') ?
Zgodovina sprememb…
- spremenil: BRBR ()
windigo ::
double metaphone ti izračuna do dve zgoščevalni oznaki za posamezno besedo, zaradi različnih črkovanj v različnih jezikih (v tvojem primeru ali je g v aglitheis tih je zgošč. oznaka ALTS, če se g izgovarja in je oznaka AKLOS, pri carinata teh razlik ni in je edina oznaka KRNT), pri nas smo uporabili ujemanje po katerikoli oznaki za identificiranje kandidata.
Nekako takole (primer je treba še popraviti, da ne bo ujemanja v null vrednosti, če imaš za besed samo en metaphone):
Indeksiraš, potem po potrebi query še optimiziraš, čez kandidate poženeš levenstheina in tudi pri miljonskih tabelah se da dobiti odziv v redu nekaj sto milisekund za približno iskanje.
Nekako takole (primer je treba še popraviti, da ne bo ujemanja v null vrednosti, če imaš za besed samo en metaphone):
select originaltable.* from words word1 innerjoin words word2 on word1.foreignkey = word2.foreignkey inner join originaltable on word1.foreignkey = originaltable.key
where (word1.metaphone1 = @word1metaphone1 or word1.metaphone2 = @word1metaphone1 or word1.metaphone1 = @word1metaphone2 or word1.metaphone2 = @word1metaphone2)
and (word2.metaphone1 = @word2metaphone1 or word2.metaphone2 = @word2metaphone1 or word2.metaphone1 = @word2metaphone2 or word2.metaphone2 = @word2metaphone2)
and word1.ordinal +1 = word2.ordinal;
Indeksiraš, potem po potrebi query še optimiziraš, čez kandidate poženeš levenstheina in tudi pri miljonskih tabelah se da dobiti odziv v redu nekaj sto milisekund za približno iskanje.
Zgodovina sprememb…
- spremenilo: windigo ()
BRBR ::
Ali lahko sprobaš tole, kaj izračuna pri tebi.
http://www.atomodo.com/code/double-meta... (link trenutno mrtev, ima pa mysql varianto double metaphone)
opt.: https://github.com/AtomBoy/double-metap...
Orchestria
ARKSTR
Orchestia
ARKSX
http://swoodbridge.com/DoubleMetaPhone/...
Orchestria
ARKS
Orchestia
ARKS
http://www.atomodo.com/code/double-meta... (link trenutno mrtev, ima pa mysql varianto double metaphone)
opt.: https://github.com/AtomBoy/double-metap...
Orchestria
ARKSTR
Orchestia
ARKSX
http://swoodbridge.com/DoubleMetaPhone/...
Orchestria
ARKS
Orchestia
ARKS
Zgodovina sprememb…
- spremenil: BRBR ()
windigo ::
Sistem za katerega smo to pred mnogimi leti naredili je že nekaj časa v pokoju in ga ne bi oživljal. Koda za to je napisana v VBScriptu, ker se je poizvedbe delalo v ASP in pa celo v Outlookovem formularju (kjer je bil VBScript edina opcija). Sem pa poiskal kodo v starem repositoryju.
Download for 48 hours.
Download for 48 hours.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [mySQL] Vrstni red iskanjaOddelek: Programiranje | 1405 (1315) | DeeJay |
» | pc nov ali po delih?? (strani: 1 2 )Oddelek: Kaj kupiti | 4418 (3426) | demon#666 |
» | Word 2007 nekaj zadevOddelek: Programska oprema | 3697 (3520) | StratOS |
» | Nov prototipni lovec kinomatografskih piratov (strani: 1 2 )Oddelek: Novice / Znanost in tehnologija | 8378 (6398) | BigWhale |
» | Collision detectionOddelek: Programiranje | 1937 (1689) | Senitel |