Komentáře k článku
Jak na přelkepy?

S překlepy se potkáváme denně a jejich automatická oprava je už přirozenou součástí nových nástrojů („Did you mean?“ v Google, případně návrhy na opravu ve Wordu při psaní dokumentu). V článku si ukážeme, jak strojově rozpoznat překlepy a dva základní algoritmy použitelné pro jejich detekci.
Porovananie dvoch reťazcov
Ďakujem za zaujímavý článok. Práve riešim niečo podobné v php – porovnanie dvoch reťazcov. Mám text v niekoľkých verziách a potrebujem zistiť čo pribudlo, čo ubudlo, čo sa zmenilo medzi dvoma verziami. Nepotrebujem ani tak mieru zhody, len vyznačiť zmeny. Viete mi poradiť nejaký dobrý tip, kde by som sa dozvedel k tejto téme viac?
Re: Porovananie dvoch reťazcov
na text je nejlepsi:
http://en.wikipedia.org/wiki/Diff
snad to pomuze.
Re: Porovananie dvoch reťazcov
ale diff vypisuje len rozdielne riadky nie? Sa mi zdá, že na klasický text to nie je vhodné. Lebo odstavce môžu byť dlhé aj niekoľko riadkov a ENTER je až na konci. Takže potom mi to označí celý odstavec, čo môže byť aj cez 10 riadkov, ale ak je rozdiel len jedno slovíčko, tak to je veľmi neprehľadné. Alebo sa dá diff nastaviť aj tak, že bude napríklad porovnávať nie konce riadkov, ale medzery?
Re: Porovananie dvoch reťazcov
Diff je váš kamarád. Určitě existuje i implementace pro PHP.
Re: Porovananie dvoch reťazcov
Väčšina wiki enginov dokáže zobrazovať históriu zmien. Časť z nich je zároveň v PHP a open-source. Takže by som si vybral jeden zo zoznamu:
http://en.wikipedia.org/wiki/Comparison_of_wiki_software
a začal ho pitvať.
Re: Porovananie dvoch reťazcov
Jednoduché použití a výsledek značně uspokojující. http://www.raymondhill.net/blog/?p=441
Levenshtein a transpozice
Zmíněnou slabinu Levenshteinova algoritmu řeší „rozšířený Levenshtein“, kde se za jednu opravu počítá transpozice dvou po sobě jdoucích znaků.
Prilisna casova narocnost
Tak jak to autor popisuje se to da pouzit jen, pokud jsou slova omezena na nejakou malou mnozinu z DB.
V praxi pro volny text se IMHO pouziva to, ze kdyz slovo neni ve slovniku, hleda se shoda se slovnikem pro jednoznakove zmeny daneho slova (pripadne viceznakove/prehozeni dvou po sobe jdoucich pismen atd.). Je to casove nejefektivnejsi.
Ale cela veda je za tim, jak z moznych oprav vybrat tu nejpravdepodobnejsi (idealne pouzit bigramy, ale to, kvuli jejich velikosti, lze jen na serverech, nikoliv napr. v mobilu).
Opravy v iOS
Z opravy překlepů v iOS mám pocit, že bere v úvahu i vzdálenost mezi písmeny na klávesnici. Nemáte někdo tento algoritmus trochu více prozkoumán?
How to Write a Spelling Corrector
Pokud se chcete podívat na jednoduchou (méně než 30 řádků kódu) kompletní implementaci spellcheckeru v Pythonu, můžete zkusit http://norvig.com/spell-correct.html .
google
Co se tyce googlu tak mam dojem ze oni nepouzivaji zadny zvlastni algoritmus (v prvnim priblizeni).
Dalaji to statisticky. Maji obrovskou zakladnu uzivatelu. Pokdu uzivatel udela preklep, nevybere si z vysledku (nikam dal neklikne) ale misto toho znovu zada slovo (tentokrat uz spravne).
Takze co se deje je ze k danym preklepum prirazuji to na co po dalsim vyhledavani uzivatel kliknul.
Aby to skutecne fungovalo musi to byt bezpochyby hodne promakane (tj. spoustu chytrych algoritmu), nicmene v zaklade delaji jenom tu statistiku.