• Nie Znaleziono Wyników

Minimalna odległość edycyjna

W dokumencie Index of /rozprawy2/11645 (Stron 30-34)

Kolejnym narzędziem wykorzystywanym podczas pracy ze słowami jest zastosowanie metody minimalnej odległości edycyjnej (ang. minimum edit distance). Metoda ta wykorzystywana jest podczas rozwiązania problemu podobieństwa łańcuchów tekstu. Za jej pomocą można określić, jak podobne są dwa ciągi znaków [32], [55]. Jednym z zastosowań wspomnianej metody jest korekta tekstu. Niech przykładowym wyrazem będzie wyraz „granut”. Wyraz ten nie występuje w słowniku języka polskiego. Aby przeprowadzić korektę tekstu i poprawić błędne słowo, poszukiwane są wyrazy „podobne” do zadanego. Przykładowo mogą to być słowa:

• granat - kolor ciemnoniebieski, granatowy;

• granit - skała głębinowa barwy szarej, zbudowana z ziaren kwarcu, skaleni i miki;

• grant - dotacja na projekt badawczy lub artystyczny, przyznawana przez organizacje publiczne.

Niestety, problematycznym wydaje się określenie, które z zaproponowanych słów jest właściwe. Problem podobieństwa łańcuchów pojawia się także przykładowo w biologii dla dwóch sekwencji nukleotydów. Idea podobieństwa łańcuchów lub podobieństw sekwencji pojawia się również w procesie tłumaczenia maszynowego, podczas ekstrakcji informacji, jak również w procesie rozpoznawania mowy.

Można stwierdzić, iż minimalna odległość edycji między dwoma ciągami to minimalna liczba operacji edycji, takich jak:

• wstawiania, • usuwania, • podstawiania,

które są potrzebne do przekształcenia jednego ciągu znaków w drugi

Przykładowo liczba operacji, jakie należy przeprowadzić, aby zmienić słowo orczyk w słowo oracz, wynosi 3. Do przeprowadzenia takiego zabiegu należy bowiem usunąć ze słowa orczyk litery „y” jak i „k”, a następnie wstawić literę „

Jeśli mamy podane dwa słowa, to możemy w prosty sposób wyznaczyć minimalną odległość edycyjną. Działanie algorytmu polega na wyszukaniu ścieżki, przez którą rozumiemy sekwencję edycji od łańcucha początkowego do końcowego. Stanem początkowym jest ciąg znaków (słowo początkowe), dostępne są również operacje – wstawiania, usuwania oraz podstawienia. Algorytm poprzez zastosowanie dostępnych przekształceń zamienia słowo początkowe w końcowe. Kosztem ścieżki będzie suma kosztów wykonanych operacji. Ścieżka o najmniejszym koszcie jest minimalną odległością edycyjną dla podanych dwóch ciągów znaków.

Jeśli założymy, że operacja podstawienia będzie wynosić dwa, a operacje wstawienia i usunięcia jeden, to taką odległość nazywamy odległością Levenshteina [56].

Aby zdefiniować odległość Levensteina, zakładamy, że posiadane są dwa łańcuchy znaków: • łańcuch X o długości n (X=[1...n]),

• łańcuch Y o długości m (Y=[1...m]).

Wobec czego możemy zdefiniować macierz odległości D(i,j) przez następującą rekurencję, przedstawioną na rysunku 5.:

Rozwinięciem odległości edycyjnej jest ważona odległość edycyjna, a więc taka miara odległości, dla której wprowadzone zostały dodatkowo odpowiednie wagi. Jest to bardzo pomocne, np. dla zagadnień związanych z poprawą pisowni na komputerze. Oczywistym jest, że niektóre litery są częściej wpisywane błędnie niż inne. Na rysunku 6. przedstawiono macierz z częstotliwością występowania pomyłek przy wpisywaniu liter dla języka angielskiego. Można zauważyć, że litera „E” dużo częściej jest mylona z literami „A”, „I” lub „O” niż innymi. Z drugiej strony nie zdarzają się pomyłki z zamianą litery „A” z literą „B” [57]. Zatem ograniczenia domeny, w tym przypadku dotyczą nie tyle pisowni, co rozmieszczenia liter na klawiaturze i powodują istotną zmianę w tradycyjnym wyznaczaniu odległości edycyjnej. Warto więc dla takich przypadków do tradycyjnego algorytmu dodać wspomniane wcześniej wagi, dodając odpowiedni koszt dla różnych przejść, który należy dodatkowo sprawdzić.

Podczas korekty tekstu algorytmy posługują się również słownikami, w których zapisane są prawidłowe wyrazy dla danego języka. Zbiór tych słów jest zbiorem skończonym, wobec czego istnieje kilka podejść do obliczania odległości edycyjnej pomiędzy terminami słownikowymi, a terminami zapytania [58]. Są to:

• podejście naiwne – odległość obliczana jest pomiędzy wprowadzonym słowem a każdym terminem słownikowym. Metoda ta jest bardzo wolna, jak również potrzebuje bardzo dużo zasobów, np. komputera;

• podejście Petera Norviga (ang. Peter Norvig's Approach) – w podejściu tym wyprowadzane są wszystkie możliwe terminy, dla których odległość edycyjna jest mniejsza bądź równa 2 od terminu zapytania. Metoda ta jest szybsza od podejścia naiwnego (gdyż nie przeszukujemy wszystkich słów w całości). Niemniej łączna suma operacji algorytmu pozostaje nadal wysoka. Przykładowo dla słowa składającego się z 9 znaków algorytm ten zwraca 114 324 propozycji poprawy [56];

• podejście Faroo (ang. Faroo's Approach) – możliwe są usunięcia tylko z odległością edycyjną mniejszą lub równą 2 zarówno od terminu zapytania, jak i każdego terminu słownikowego. Podejście to jest o trzy rzędy wielkości szybsze w porównaniu do poprzedniego [60].

Tego rodzaju algorytmy mogą wykorzystywać również kilka innych aspektów, takich jak:

• sortowanie – sugestie sortowane są najpierw według (ważonej) odległości edycji, a następnie według częstotliwości występowania danego słowa lub liczby wyników, które sugerowane zapytanie zwróci dla danego indeksu;

• wykrywanie języka – w metodzie tej wykorzystywany jest dodatkowo specyficzny słownik sprawdzania pisowni dla wskazanego lub wykrytego języka;

• słownik – tak jak w poprzedniej metodzie wykorzystywany jest słownik (statyczny lub dynamiczny) do sprawdzania pisowni. Dynamiczny słownik może zostać wygenerowany lub uzupełniony z indeksu wyszukiwarki lub zapytań wprowadzonych przez użytkowników. W tym przypadku, jeśli częstotliwość słowa dla określonego terminu przekracza określony próg, słowo to jest dodawane do słownika. Możliwe jest również użycie samego indeksu wyszukiwania jako słownika sprawdzania pisowni [58];

• model Markowa - alternatywą dla słownika opartego na pisowni są metody statystyczne, np. ukryte modele Markowa [62].

Warto zauważyć, że poprawa pisowni to niejedyny obszar, w którym można zastosować ważoną odległość edycyjną. Również w biologii, ze względu na specyfikę budowy organizmów, niektóre rodzaje operacji (specyficzne usunięcia lub dodawania) są bardziej prawdopodobne niż inne. Kolejnym przykładem wykorzystania tej cechy jest algorytm Soundex, który używa fonetyki do indeksowania nazw według dźwięku [63].

Poniżej przedstawiono zmodyfikowany algorytm służący do obliczenia ważonej odległości edycyjnej.

Inicjalizacja:

Rekurencyjna zależność:

Warunek końca:

D(N,M) oznacza wyznaczoną odległość.

W dokumencie Index of /rozprawy2/11645 (Stron 30-34)