Algorytm sprawdzania i poprawiania bledow w pisowni

0

Witam , czy istnieje jakis algorytm ktory podczas wpisywania wyrazu uwzgledni bledy np literowki badz bledy ortograficzne. Pomysl jak to napisac jako taki mam , ale czy istnieje jakis gotowy juz algorytm ktory moglbym zaadoptowac. Czy da sie tu wykorzystac cos ze sztucznej inteligencji ?

0

Lepiej użyc własnej inteligencji...
Algorytmów spellcheckingu i autokorekty jest cała masa. Większość opiera się na:

0

po łatwiźnie można skorzystać np. z gotowego słownika np. aspell udostępnia jakieś API dla C a prymitywnie:
aspell dump master pl --encoding=utf-8 | aspell -l pl expand --encoding=utf-8 | tr ' ' '\n' > /tmp/mojslownik
a potem sprawdzać czy wyraz istnieje w bazie. wygenerowałam u siebie i taki słownik waży 50MB i po 1 użyciu działało już dosyć szybko (jądro scacheowało plik, nie wczytywałam do pamięci). do tego może np. w google jest dużo algorytmów na jakieś "string similarity" żeby poprawiać literówki.

0

Po pierwsze musisz posiadać słownik z listą słów w języku, który chcesz sprawdzać.
Taki słownik musisz wczytać do pamięci ale tak by nie zajmował dużo miejsca - możesz tego dokonać poprzez użycie Uniwersalnej Struktury Słownikowej( ang. Trie ):
http://postimg.org/image/kjbwkanzl/

http://pl.wikipedia.org/wiki/Drzewo_trie

0

ok, dzięki za odpowiedź. Ściągnąłem słownik i zastanawia mnie co oznaczają te litery przy wyrazach ? Np. :
BEeGHJjpodpiły/bXxYpodpinać/dEHIikvpodpinaj±cpodpinka

0

Najłatwiejsza implementacja wygląda tak:
http://cs.lmu.edu/~ray/notes/tries/

Po wczytaniu słownika do takiego drzewa masz cały słownik skompresowany( wiele wyrazów zawiera w sobie podciągi innych wyrazów ),

Czas sprawdzenia czy dane słowo jest w słowniku jest proporcjonalny do długości sprawdzanego słowa.

Przykładowe implementacje(Robert Sedgewick):
a) http://algs4.cs.princeton.edu/52trie/TrieST.java.html,
b) http://algs4.cs.princeton.edu/52trie/TST.java.html - ta wersja jest wydajniejsza.

1

A ja polecam poczytać to:
http://norvig.com/spell-correct.html ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1