Autor | Zpráva | ||
---|---|---|---|
vms Profil * |
#1 · Zasláno: 24. 10. 2007, 03:38:14
Jakým způsobem se realizuje funkce Did you mean?
Uživatel vyhledává přes formulář něco v databázové tabulce a udělá překlep. Jak se dá naprogramovat funkce, která mu předhodí výraz bez překlepu (nebo nějakej nejpodobnější) ? Jak se to běžně v praxi řeší? |
||
Hugo Profil |
#2 · Zasláno: 24. 10. 2007, 06:40:45
Toto je dost složitý problém. Můžeš například, pokud je výskyt hledaného výrazu velmi nízký nebo nulový, hledat podobné výrazy v databázi. Tady je problém s tím, jak vytvořit funkci, která je schopná ty podobné výrazy dohledat a velkou nevýhodou je to, že často to může uživateli nabídnout výraz, který je úplně mimo.
Druhou možností je dlouhodobé monitorování provozu a sledování pohybu uživatele. Pokud třeba deset uživatelů zadá výraz kopto a při dalším hledání ho opraví na kopyto, tak při dalším zadání kopto můžeš rovnou nabízet možnost Did you mean kopyto? Toto je samozřejmě náročné na čas a je to i dost těžké naprogramovat, ale výhodou je, že systém se bude postupně učit. Podobný algoritmus pravděpodobně používá google. |
||
Joker Profil |
#3 · Zasláno: 24. 10. 2007, 10:24:33
Jak se to běžně v praxi řeší?
Například Google myslím používá tu "statistickou" metodu, viz Hugo, první odstavec. Taky by šlo zohlednit, jak často je daný výraz vyhledáván. Tj. nabízet výraz, který má hodně výsledků a návštěvníci ho často vyhledávají. |
||
Hugo Profil |
#4 · Zasláno: 24. 10. 2007, 11:05:56
Joker
Podle informací z rozhovorů s tvůrci googlu bych spíš řekl, že používá metodu monitorování pohybu uživatele, čili druhý odstavec. |
||
Tomáš Hanus Profil |
#5 · Zasláno: 24. 10. 2007, 11:17:18
Joker
Taky by šlo zohlednit, jak často je daný výraz vyhledáván. Tj. nabízet výraz, který má hodně výsledků a návštěvníci ho často vyhledávají. - jenže stejně se dostaneš do situace, kdy musíš odhadnout podobný smysluplný výraz k výrazu vyhledávanému. A nabízet všechny, to je jak střílet od boku a uživatele by to akorát odradilo. |
||
Joker Profil |
#6 · Zasláno: 24. 10. 2007, 11:26:45 · Upravil/a: Joker
Hugo
Je to možné, tak možná moje informace nebyly úplně dokonalé. Tomáš Hanus jenže stejně se dostaneš do situace, kdy musíš odhadnout podobný smysluplný výraz k výrazu vyhledávanému No jenže to vždycky. U té první metody (Hugo, 1. odstavec) se musejí hledat výsledky podobných výrazů. U druhé metody (Hugo, 2. odstavec) se musí zjistit, že jde o téhož návštěvníka a porovnávat, jestli je další hledaný výraz podobný tomu předchozímu. U třetí metody (co jsem psal já) se musí hledat počet zadání podobných výrazů. |
||
Hugo Profil |
#7 · Zasláno: 24. 10. 2007, 11:56:21
Joker
Asi jsem to špatně napsal, ale jde o to, že systém registruje chování uživatelů (všech, není nutné nijak uživatele identifikovat) a podle zaregistrovaných opravy překlepů nabízíš uživateli podobné výrazy. Toto bude samozřejmě fungovat jen u systému, který běží delší dobu a který je hodně využívaný. |
||
Joker Profil |
#8 · Zasláno: 24. 10. 2007, 12:06:46
Hugo
No ale potřebuju uživatele identifikovat, abych zjistil, že ten překlep opravil. Tj. potřebuju vědět, že konkrétní uživatel zadal například nejdřív "Koker" a potom "Joker", abych mohl zjistit, že ten uživatel opravil překlep. |
||
Tomáš Hanus Profil |
#9 · Zasláno: 24. 10. 2007, 12:18:38
Joker
A jak si poradis s tímto: Kotel | Hotel :D |
||
Hugo Profil |
#10 · Zasláno: 24. 10. 2007, 12:45:58
Joker
A jo, špatně čtu. Tomáš Hanus Samozřejmě žádný takový systém nefunguje bez chyb. Google taky občas nabízí ptákoviny. |
||
Joker Profil |
#11 · Zasláno: 24. 10. 2007, 12:56:22
Tomáš Hanus
A jak si poradis s tímto: Kotel | Hotel :D Asi bych prostě spoléhal na to, že takových překlepů moc nebude a v nejhorším ten systém nebude dokonalý, no :) Kdyby ten systém měl být (skoro) dokonalý, mohl by to kombinovat se slovníkem a nejlépe i s rozpoznáváním slov podle kontextu, ale naprogramovat to by nebylo tak úplně jednoduché ;-) |
||
Tomáš Hanus Profil |
#12 · Zasláno: 25. 10. 2007, 15:38:21
Joker
A to je ten důvod, proč volit druhou variantu, tedy kdy se systém bude učit. Pokud někdo o takové fci uvažuje, je to určitě do budoucna, proto by se vyplatilo jít cestou statistiky. Tím by se i odfiltrovaly překlepy typu HOTEL | KOTEL |
||
Časová prodleva: 16 let
|
0