WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI, INFORMATYKI I INŻYNIERII
BIOMEDYCZNEJ
KATEDRA AUTOMATYKI I INŻYNIERII BIOMEDYCZNEJ
Praca dyplomowa magisterska
Sztuczny system skojarzeniowy zastosowany
do semi-automatycznej kontekstowej korekty tekstów
napisanych w języku polskim.
Artificial associative system used to semi-automatic contextual text
correction for Polish language
Autor: Mateusz Kaproń
Kierunek studiów: Automatyka i robotyka
Opiekun pracy: dr hab. Adrian Horzyk
Kraków, 2017
Uprzedzony o odpowiedzialności karnej na podstawie art. 115 ust. 1 i 2 ustawy z
dnia 4 lutego 1994 r. o prawie autorskim i prawach pokrewnych (t.j. Dz.U. z
2006 r. Nr 90, poz. 631 z późn. zm.): „ Kto przywłaszcza sobie autorstwo albo
wprowadza w błąd co do autorstwa całości lub części cudzego utworu albo
artystycznego wykonania, podlega grzywnie, karze ograniczenia wolności albo
pozbawienia wolności do lat 3. Tej samej karze podlega, kto rozpowszechnia bez
podania nazwiska lub pseudonimu twórcy cudzy utwór w wersji oryginalnej albo
w postaci opracowania, artystyczne wykonanie albo publicznie zniekształca taki
utwór, artystyczne wykonanie, fonogram, wideogram lub nadanie.”, a także
uprzedzony o odpowiedzialności dyscyplinarnej na podstawie art. 211 ust. 1
ustawy z dnia 27 lipca 2005 r. Prawo o szkolnictwie wyższym (t.j. Dz. U. z 2012
r. poz. 572, z późn. zm.) „Za naruszenie przepisów obowiązujących w uczelni
oraz za czyny uchybiające godności studenta student ponosi odpowiedzialność
dyscyplinarną przed komisją dyscyplinarną albo przed sądem koleżeńskim
samorządu studenckiego, zwanym dalej „sądem koleżeńskim”, oświadczam, że
niniejszą pracę dyplomową wykonałem(-am) osobiście i samodzielnie i że nie
korzystałem(-am) ze źródeł innych niż wymienione w pracy.
…………………………………..
3
Spis treści
1. Wstęp .................................................................................................................................................. 5
2. Sieci neuronowe ................................................................................................................................. 7
2.1. Historia sieci neuronowych. ......................................................................................................... 7
2.2. Budowa neuronu. ......................................................................................................................... 8
2.3. Rodzaje sieci neuronowych. ....................................................................................................... 10
2.4. Zastosowania .............................................................................................................................. 10
3. Metody korygowania tekstu ........................................................................................................... 13
3.1. Odległość Levenshteina ............................................................................................................. 13
3.1.1. Reprezentacja tablicowa odległości edycyjnej .................................................................... 14
3.1.2. Odległość Damerau-Levenstheina ...................................................................................... 16
3.2. Odległość Jaro ............................................................................................................................ 16
3.3. N-gram ....................................................................................................................................... 16
3.4. Prawo Zipfa ................................................................................................................................ 17
4. Aktywne asocjacyjne grafy wiedzy ................................................................................................ 21
5. Kontekstowy korektor tekstu bazujący na ANAKG .................................................................... 25
5.1. Budowa i możliwości ................................................................................................................. 25
5.2. Działanie aplikacji ...................................................................................................................... 27
5.3. Dane wejściowe - korpusy tekstu ............................................................................................... 29
6. Porównanie stworzonego korektora z wybranymi narzędziami służącymi do korygowania
tekstu dla języka polskiego ................................................................................................................. 31
6.1. Korektory wykorzystywane przez wyszukiwarki internetowe ................................................... 32
6.1.1. Wyszukiwarka Google ........................................................................................................ 33
6.1.2. Wyszukiwarka Bing ............................................................................................................ 34
6.1.3. Wyszukiwarka Ask ............................................................................................................. 36
6.1.4. Wyszukiwarka Yandex ....................................................................................................... 37
6.1.5. Wyszukiwarka Nekst ........................................................................................................... 38
6.2. Korektory wykorzystywane przez edytory tekstu ...................................................................... 39
6.2.1. Edytor tekstu Microsoft Word ............................................................................................. 39
6.2.2. Edytor tekstu Apache OpenOffice ...................................................................................... 41
6.3. Korektory online ........................................................................................................................ 43
6.3.1. LanguageTool...................................................................................................................... 43
6.3.2. iKorektor ............................................................................................................................. 45
4
6.4. Własny korektor tekstu ............................................................................................................... 46
6.5 Podsumowanie testu korektorów ................................................................................................. 47
7. Podsumowanie ................................................................................................................................. 49
Literatura ............................................................................................................................................. 51
Spis rysunków ...................................................................................................................................... 53
Spis tabel .............................................................................................................................................. 55
Spis załączników .................................................................................................................................. 57
5
1. Wstęp
Narzędzia służące do analizy i korekty tekstu używane są codziennie przez miliony
użytkowników. Jedne poprawiają jedynie najprostsze błędy, inne przystosowane są do bardzo
zaawansowanej korekty, analizując nie tylko poszczególne słowa, ale i całe zdania.
Celem tej pracy jest napisanie aplikacji webowej z zaimplementowanym sztucznym
systemem skojarzeniowym zastosowanym do semi-automatycznej korekty tekstów
napisanych w języku polskim. System ten ma opierać się na Aktywnych Asocjacyjnych
Neuronowych Grafach Wiedzy (ANAKG). Zadaniem powstałej aplikacji jest wykrycie
różnych błędów w zdaniach napisanych w języku polskim oraz zaproponowanie korekty
błędnych wyrazów. Aplikacja ma za zadanie poprawiać nie tylko proste błędy gramatyczne,
lecz również rozpoznawać niewłaściwe użycie słowa w danym kontekście.
W rozdziale drugim skrótowo przedstawiono historię sieci neuronowych i ich
zastosowanie.
Rozdział trzeci zawiera opis kilku znanych metod służących do analizy i korekcji
tekstu. Opisano w nim m.in. odległość Levenshteina oraz metodę N-gramu.
W kolejnym rozdziale został szczegółowo omówiony Aktywny Asocjacyjny
Neuronowy Graf Wiedzy ANAKG, na którym opiera się stworzona aplikacja.
Rozdział piąty krótko opisuje budowę aplikacji webowej, która umożliwia korektę
wprowadzanego tekstu. Przedstawione są jej funkcje, możliwości oraz algorytm korektora
tekstu. Dalsza część rozdziału skupia się na danych wejściowych, na podstawie których został
zbudowany graf ANAKG.
Rozdział szósty zawiera testy najpopularniejszych dostępnych narzędzi służących do
korygowania tekstu oraz testy przeprowadzone dla stworzonej aplikacji. Celem testów jest
porównanie istniejących narzędzi ze stworzonym korektorem.
Pracę wieńczy podsumowanie, wykaz literatury, spis tabel, spis rysunków oraz spis
załączników.
7
2. Sieci neuronowe
Dzięki niezwykłym własnościom takim jak zdolność uczenia się, równoległe
przetwarzanie informacji czy też zdolność do adaptacji i samoorganizacji sieci neuronowe
przez ostatnie dziesięciolecia stały się niezwykle popularne w środowisku naukowym.
Każda sieć neuronowa jest uproszczonym modelem ludzkiego mózgu, który składa się
on z 1010 komórek nerwowych oraz z 1015 połączeń pomiędzy nimi [6]. Przetwarzają one
impulsy o częstotliwości 1-100 Hz. Oszacowana prędkość pracy mózgu wynosi więc około
1018 operacji na sekundę. Sieć neuronowa składa się z elementów, których zadaniem jest
przetwarzanie informacji. Zwane są one neuronami.
2.1. Historia sieci neuronowych.
W roku 1943 Warren McCulloch i Walter Pitts jako pierwsi przedstawili
matematyczny model komórki nerwowej [15]. Wskazali również na możliwość przetwarzania
danych przy wykorzystaniu zaproponowanego przez nich modelu. Moment ten często
uznawany jest za początek intensywnych badań nad sieciami neuronowymi.
Pierwsza szeroko znana działająca sieć neuronowa zwana perceptronem, została
stworzona przez Franka Rosenblatta oraz Charlesa Wightmana w 1957 r. [15]. Był to układ
elektromechaniczno-elektroniczny, którego zadaniem było rozpoznawanie znaków
alfanumerycznych. Tradycyjna metoda programowania została zastąpiona procesem uczenia.
Sieć neuronowa składała się z 8 komórek nerwowych oraz 512 połączeń. Działanie układu nie
było jednak zadowalające, nie potrafił on rozpoznawać złożonych znaków oraz nie radził
sobie z rozpoznaniem po operacji przesunięcia bądź obrotu znaku.
Rys. 2.1. Schemat perceptronu jednowarstwowego
Źródło: Opracowanie własne na podstawie [6]
8
Rozwój badań nad sieciami neuronowymi gwałtownie zahamował w roku 1969 za
sprawą książki „Perceptrons: an introduction to computational geometry” autorstwa Marvina
Minsky'ego i Seymoura Paperta [15]. Udowodnili oni, że zastosowanie jednowarstwowych
sieci neuronowych jest bardzo ograniczone. Dopiero w połowie lat 80-tych udowodniono, że
wielowarstwowe, nieliniowe sieci neuronowe nie posiadają ograniczeń przedstawionych
przez Minsky'ego i Paperta. Odkrycie to przyczyniło się do ponownego wzrostu
zainteresowania sieciami neuronowymi. Druga połowa lat 80-tych uznawana jest za bardzo
intensywny okres prac nad neurokomputerami.
Tabela 2.1. Rozwój neurokomputerów w drugiej połowie lat 80
Nazwa
neurokomputera
Rok
opracowania
Liczba
elementów
Liczba
połączeń
Szybkość (ilość
przełączeń na
sekundę)
Twórca
Mark III 1985 8 ∗ 103 4 ∗ 105 3 ∗ 105 R. Hercht-Nielsen,
TRW
Neural emulator
Processor
1985 4 ∗ 103 1,6 ∗ 104 4,9 ∗ 105 C. Cruz,
IBM
Mark IV 1986 2,5 ∗ 105 5 ∗ 106 5 ∗ 106 R. Hercht-Nielsen,
TRW
Odyssey 1986 8 ∗ 103 2,5 ∗ 105 2 ∗ 106 A. Penz,
Tex. Inst. CRL
Crossbar chip 1986 256 6,4 ∗ 104 6 ∗ 109 L. JAckel,
AT&T Bell L.
Anza 1987 3 ∗ 104 5 ∗ 105 1,4 ∗ 105 R. Hercht-Nielsen,
Neurocomp. Corp.
Parallon 1987 9,1 ∗ 104 3 ∗ 105 3 ∗ 104 S. Bogoch,
Human Dev.
Anza plus 1988 106 1,5 ∗ 106 6 ∗ 106 R. Hercht-Nielsen,
Neurocomp. Corp.
Źródło: [15]
2.2. Budowa neuronu
Podstawowym elementem każdej sieci neuronowej jest neuron. Poniżej zostały
przedstawione grafiki, dzięki którym można porównać budowę prawdziwego neuronu z jego
sztucznym odpowiednikiem przedstawionym w postaci ogólnego modelu oraz z neuronem
zrealizowanym sprzętowo.
9
Rys. 2.2. Schemat budowy prawdziwego neuronu
Źródło: [6]
Rys. 2.3. Schemat budowy sztucznego neuronu
Źródło: [6]
Rys. 2.4. Schemat budowy układu elektronicznego symulującego neuron
Źródło: [9]
10
2.3. Rodzaje sieci neuronowych
Sieci neuronowe można konstruować na wiele różnych sposobów. Główną różnicą
między różnymi typami sieci jest sposób połączenia poszczególnych neuronów. W pracy [6]
dokonano następującego podziału sieci neuronowych:
sieci jednokierunkowe:
jednowarstwowe,
wielowarstwowe,
sieci rekurencyjne,
sieci komórkowe.
Sieć jednokierunkowa – najczęściej spotykany typ sieci neuronowych. Sieci te składają się
z jednej lub więcej warstw, a przepływ informacji odbywa się w jednym od wejścia do
wyjścia przez wszystkie warstwy sieci.
Sieć rekurencyjna – wykorzystuje pętle sprzężenia zwrotnego, a więc sygnał wyjściowy sieci
zależy od aktualnego sygnału wejściowego, oraz od poprzednich sygnałów wejściowych
przetworzonych przez sieć.
Sieć komórkowa – sieć, w której sprzężenia wzajemne pomiędzy neuronami dotyczą tylko
najbliższego sąsiedztwa. Przykładem sieci komórkowej jest sieć Kohonena.
2.4. Zastosowania
Sieci neuronowe mają bardzo szerokie zastosowania, m.in. takie jak:
rozpoznawanie i klasyfikacja wzorców,
regresja i aproksymacja,
prognozy giełdowe,
prognozy cen,
analiza spektralna,
diagnostyka układów elektronicznych,
dobór pracowników,
optymalizacja utylizacji odpadów,
prognozowanie sprzedaży,
11
W pracy [15] określono najważniejsze kierunki zastosowań sieci neuronowych:
predykcja,
klasyfikacja i rozpoznawanie podmiotów gospodarczych,
kojarzenie danych,
analiza danych,
filtracja sygnałów,
optymalizacja.
Jednym z przykładów zastosowania sieci neuronowych jest praca [4], w której autor pokazuje
możliwości ich zastosowania w ekonomii. Wykorzystuje je jako narzędzie do generowania
sygnałów kupna/sprzedaży na Giełdzie Papierów Wartościowych.
13
3. Metody korygowania tekstu
Przez ostatnie dziesięciolecia ludzie próbowali stworzyć algorytmy, które będą
w stanie analizować wprowadzany tekst i proponować jego korektę, jeżeli wykryją
nieprawidłowości. Prawidłowa korekta tekstu jest tematem bardzo istotnym w dzisiejszym
świecie. Narzędzia stworzone do analizy tekstu często są niezbędne przy pracy wielu
użytkowników każdego dnia.
Algorytmów do analizy tekstu powstała ogromna ilość. W rozdziale zostały
przedstawione najpopularniejsze metody korekty tekstu.
3.1. Odległość Levenshteina
Jedną z najbardziej popularnych metod służących do analizy i korekty tekstu jest
metoda odległości Levenshteina [12]. Jest to uogólniona metoda odległości Hamminga.
Została przedstawiona w 1966 r. przez rosyjskiego naukowca Vladimira Iosifovicha
Levenshteina. Metoda ta zdobyła ogromną popularność dzięki swej prostocie oraz dużej
skuteczności.
Odległość Levenshteina (znana również pod nazwą odległości edycyjnej) służy do
wyznaczenia odległości pomiędzy dwoma skończonymi ciągami znaków z dowolnego
alfabetu. Metoda ta jest wykorzystywana między innymi w systemach antyplagiatowych.
Odległość Levenshteina została zdefiniowana, jako miara odmienności dwóch tekstów.
Z punktu formalnego jest to metryka, dla której zostały zdefiniowanie następujące działania
proste:
zamiana znaku na inny znak,
usunięcie znaku,
dodanie znaku.
Obliczenie odległości Levenshteina polega na obliczeniu ilości wyżej wymienionych działań
prostych potrzebnych, aby przekształcić jeden ciąg znaków w drugi. Przy obliczaniu
odległości każde działanie posiada taką samą wagę.
14
Matematyczną reprezentacje odległości Levenshteina opisuje wzór:
𝑑(𝑎,𝑏)(𝑖, 𝑗) =
{
max(𝑖, 𝑗) 𝑑𝑙𝑎 min(𝑖, 𝑗) = 0
𝑚𝑖𝑛 {
𝑑(𝑎,𝑏)(𝑖 − 1, 𝑗) + 1
𝑑(𝑎,𝑏)(𝑖, 𝑗 − 1) + 1
𝑑(𝑎,𝑏)(𝑖 − 1, 𝑗 − 1) + 1(𝑎𝑖≠𝑏𝑗)
𝑑𝑙𝑎 min(𝑖, 𝑗) ≠ 0 (3.1)
gdzie:
1(𝑎𝑖≠𝑏𝑗) = 0 jeśli 𝑎𝑖 = 𝑏𝑗, w przeciwnym wypadku równy 1,
𝑑(𝑎,𝑏)(𝑖, 𝑗) - odległość pomiędzy i-tym znakiem ciągu a i j-tym znakiem ciągu b.
Tabela 3.1. Odległość Levenshteina dla przykładowych ciągów znaków
Lp. Ciąg znaków nr.1 Ciąg znaków nr.2 Odległość Levenshteina
1 XYZ XYZZ 1
2 pies pies 0
3 dom łom 1
4 interesujący interesować 5
Odległość Levnstheina nie jest algorytmem idealnym dla języka polskiego. Przykładowo, jeśli
w słowie użytkownik popełnił błąd ortograficzny i zamiast „ż” użył „rz” to odległość
edycyjna będzie wynosiła 2 a nie 1. Może to skutkować tym, że algorytm zamiast
zaproponować poprawną korektę, zaproponuje całkiem inne słowo, które będzie posiadało
literę „ż” a jego odległość edycyjna będzie wynosiła 1.
3.1.1. Reprezentacja tablicowa odległości edycyjnej
Odległość Levenshteina można zobrazować w łatwy sposób za pomocą reprezentacji
tablicowej [14]. Polega ona na stworzeniu tablicy dwuwymiarowej o wymiarach n+1 oraz
m+1, gdzie n i m oznaczają długości badanych ciągów znaków.
Budowanie tablicy należy zacząć od wpisania liczb w pierwszy wiersz (liczby od 0
do n) oraz wpisania liczb w pierwszą kolumnę (liczby od 0 do m). Kolejnym krokiem jest
porównanie kolejno znaków z pierwszego wiersza, z wartością znajdująca się w pierwszej
kolumnie. Znaki porównujemy w ten sposób, że jeśli są identyczne, to wartość kosztu wynosi
15
0, jeśli natomiast znaki są różne, wartość kosztu wynosi 1. Wartość, jaką należy wpisać do
pustej komórki wyznaczamy szukając wartość minimalną spośród trzech wartości:
wartość komórki znajdującej się powyżej zwiększona o 1,
wartość komórki znajdującej się na lewo zwiększona o 1,
wartość komórki stykającej się z lewym górnym rogiem.
Następnie należy porównać znaki dla wszystkich kolumn i wierszy tak, aby każdy znak
z ciągu pierwszego został porównany z każdym znakiem ciągu drugiego. Liczba, która
znajdzie się w dolnym prawym rogu oznacza wartość odległości Levenshteina.
Tabela 3.2. Pierwszy etap konstrukcji tablicy
d o m
0 1 2 3
ł 1
o 2
m 3
Tabela 3.3. Drugi etap konstrukcji tablicy i wyznaczenie odległości edycyjnej
d o m
0 1 2 3
ł 1 1 2 3
o 2 2 1 2
m 3 3 2 1
16
3.1.2. Odległość Damerau-Levenstheina
W roku 1964r. Frederick J. Damerau opublikował pracę [2], w której przedstawił
metodą bardzo podobną do metody odległości Levenshteina. Jedyną różnica jest dodanie
nowego działania prostego. Damarau przyjął za działanie proste zamianę miejscami dwóch
sąsiednich znaków. Z jego badań wynika, że 80% błędów można naprawić za pomocą
zaproponowanych przez niego czterech działań prostych.
3.2. Odległość Jaro
Kolejną metodą służącą do korekty tekstu jest metoda odległości Jaro [1]. Podobnie
jak metoda odległości Levenstheina, służy ona do wyznaczenia odległości pomiędzy dwoma
skończonymi ciągami znaków z dowolnego alfabetu.
Odległość Jaro można wyznaczyć korzystając ze wzoru:
𝑑𝑗 = {0 𝑑𝑙𝑎 𝑚 = 0
1
3(𝑚
|𝑠1|+
𝑚
|𝑠2|+𝑚−𝑡
𝑚) 𝑑𝑙𝑎 𝑚 ≠ 0 (3.2)
gdzie:
𝑠1 oraz 𝑠2 oznaczają dwa ciągi znaków,
m oznacza ilość identycznych liter,
t oznacza ilość dopasowań po transpozycji drugiego ciągu znaków podzielona przez dwa.
3.3. N-gram
Metoda n-gram oparta jest na statystyce, dlatego do jej zastosowania potrzebny jest
ogromny zbiór danych wejściowych (np. zbiór słów w przypadku, gdy metoda ta
wykorzystywana jest do korekcji tekstu) [10]. Określa ona podobieństwa między dwoma
ciągami znaków na podstawie ilości wspólnych podciągów.
Podobieństwo ciągów można wyznaczyć ze wzoru:
𝑠𝑖𝑚𝑛(𝑠1, 𝑠2) =1
𝑁−𝑛+1∑ ℎ(𝑖)𝑁−𝑛+1𝑖=1 (3.3)
gdzie:
𝑠1 i 𝑠2 oznaczają ciągi znaków,
17
ℎ(𝑖) = 1 jeśli n-elementowy podciąg, który zaczyna się od i-tej pozycji w pierwszym ciągu,
występuje chociaż raz w drugim ciągu. W innym wypadku ℎ(𝑖) = 0,
𝑁 − 𝑛 + 1 – ilość możliwych podciągów o n elementach w pierwszym ciągu znaków.
Najczęściej spotykane są dwie odmiany tej metody, różniące się ilością poprzedzających
elementów wykorzystywanych do przewidzenie kolejnego elementu:
metoda bigramów – analiza dwóch poprzednich elementów,
metoda trigramów – analiza trzech poprzednich elementów.
Przykładowo, podobieństwo słów 𝑠1 = INTERESUJĄCY i 𝑠2 = INTERESOWAĆ przy
wykorzystaniu metody trigramów wynosi:
𝑠𝑖𝑚3(𝑠1, 𝑠2) = 0,5 (3.4)
Dla dwóch badanych słów istnieje 5 trigramów: INT, NTE, TER, ERE, RES.
3.4. Prawo Zipfa
Kolejna metoda służącą do korekty tekstu również wykorzystuje statystykę. Prawo
Zipfa mówi o częstotliwości użycia słowa w danym języku [3]. Zipf zauważył, że pozycja
słowa w rankingu najczęściej używanych słów w danym korpusie tekstu jest odwrotnie
proporcjonalna do częstości wystąpienia tego słowa. Zależność tą można opisać równaniem:
𝑓 ∗ 𝑝 = 𝑘 (3.5)
gdzie:
f – częstość słowa w danym zbiorze,
p – pozycja słowa w ranking.
Poniżej zostały przedstawione tabele z pracy [3] zawierająca najczęściej występujące słowa
dla języka polskiego oraz wykres zaczerpnięty z tej samej pracy przedstawiający prawo Zipfa.
18
Rys. 3.1. Fragment ranking najczęściej występujących słów przedstawiający trzy pierwsze rekordy
Źródło: [3]
Rys. 3.2. Fragment ranking najczęściej występujących słów przedstawiający rekordy od czwartego do
trzynastego
Źródło: [3]
21
4. Aktywne asocjacyjne grafy wiedzy
Odpowiednie skonstruowanie sieci neuronowej jest kluczowe do jej prawidłowego
działania. W pracy [8] dr hab. Adrian Horzyk zaproponował konstrukcje Aktywnych
Asocjacyjnych Neuronowych Grafów Wiedzy (ang. Active Neural Associative Knowledge
Graphs – ANAKG).
Grafy ANAKG pozwalają formować wiedzę, aby następnie w szybki sposób
wykorzystywać tą wiedzę w różnych celach. W porównaniu z tabelarycznym modelem do
przechowywania danych grafy ANAKG cechują się lepszą wydajnością. Jedną z ich
największych zalet w stosunku do tabel jest eliminacja czasochłonnych pętli obliczeniowych.
Grafy ANAKG mogą zostać wykorzystane do:
klasyfikacji,
sortowaniu,
agregacji,
wyszukiwania danych,
tłumaczenia tekstów,
budowy chatbotów,
korekty tekstów.
Rys. 4.1. Graf ANAKG zbudowany z kilku zdań języka angielskiego.
22
W grafie ANAKG pomiędzy poszczególnymi węzłami oblicza się dwa rodzaje
współczynników. Współczynnik skuteczności połączeń, jest zależny od „odległości”, jaka
wystąpiła między danymi słowami w zdaniu.
𝛿𝑆𝑁,𝑆�̂�𝑎𝑐𝑡 = ∑
1
𝜏{↝𝐴𝐶𝑂𝑁𝜏∶ 𝑆𝑁↝⋯↝𝑆�̂�𝜖𝐴𝐴𝑇} (4.1)
gdzie:
𝜏 – odległość pomiędzy dwoma słowami w zdaniu (dla sąsiadujących słów 𝜏 = 1).
Współczynniki wag synaptycznych definiują natomiast, jak mocno powiązane są ze sobą
neurony w grafie:
𝑤𝑆𝑁,𝑆�̂�𝐴𝐶𝑂𝑁 =
2∙𝛿𝑆𝑁,𝑆�̂�𝑎𝑐𝑡
𝜂𝑆𝑁𝑎𝑐𝑡+𝛿
𝑆𝑁,𝑆�̂�𝑎𝑐𝑡 (4.2)
gdzie:
𝜂𝑆𝑁𝑎𝑐𝑡 – ilość aktywacji neuronu 𝑆𝑁 dla określonego zbioru sekwencji uczących,
𝛿𝑆𝑁,𝑆�̂�𝑎𝑐𝑡 – współczynnik skuteczności połączenia synaptycznego 𝑆𝑁 ↝ 𝑆�̂�, określony przez
sumę ważoną ilości skutecznych aktywacji neuronu postsynaptycznego 𝑆�̂� przez neuron
presynaptyczny 𝑆𝑁.
Poniżej zostały przedstawione dwie grafiki, na których widać, jaki wpływ na współczynniki
mają wprowadzane powtarzające się ciągi znaków:
Rys. 4.2. Obliczone współczynniki wag synaptycznych oraz współczynniki skuteczności dla zbioru
wejściowego „A B C D”.
23
Rys. 4.3. Obliczone współczynniki wag synaptycznych oraz współczynniki skuteczności dla zbioru
wejściowego składającego się ze zbiorów „A B C D” oraz „A B D”.
Rysunek 4.2. przedstawia graf zbudowany z ciągu znaków „A B C D”. Współczynniki
połączeń pomiędzy kolejnymi znakami są największe i w tym przypadku wynoszą 1.
Najmniejsze współczynniki występują dla połączenia pomiędzy znakami A i D, ponieważ
znaki te są najbardziej oddalone od siebie we wprowadzonym ciągu.
Na rysunku 4.3. został przedstawiony graf powstały po dodaniu ciągu znaków „A B
D” do ciągu pierwszego. Dodanie drugiego ciągu znaków spowodowało wzmocnienie
połączeń pomiędzy znakami A i B, B i D oraz A i D. Osłabione zostały połączenia pomiędzy
znakami A i C oraz B i C, ponieważ takie połączenia znaków nie występowały w drugim
ciągu. Drugi ciąg nie zawiera również znaku C, dlatego współczynniki pomiędzy znakami C
i D nie uległy zmianie.
25
5. Kontekstowy korektor tekstu bazujący na
ANAKG
W celu zbadania skuteczności wykorzystania grafu ANAKG dla potrzeb kontekstowej
korekty tekstu została napisana aplikacja webowa. Stworzona została z wykorzystaniem
języka Java w wersji 8 oraz języka JavaScript. Oparta została o wzorzec MVC (Model-View-
Controller). Do jej budowy użyte wykorzystane następujące technologie:
Spring – framework języka Java, szkielet aplikacji. Oprócz głównego modułu zostały
wykorzystane również Spring Data, Spring MVC oraz Spring Boot;
Hibernate – framework języka Java, służący do komunikacji pomiędzy aplikacją
a bazą danych (warstwa dostępu do danych);
MySQL – baza danych, w której przechowywane są zdania wykorzystane do budowy
grafu;
AngularJS – framework języka JavaScript, umożliwia budowanie aplikacji webowych
na pojedynczej stronie.
d3.js – biblioteka graficzna umożliwiająca tworzenie animacji, wykresów, grafów.
Docker – oprogramowanie umożliwiające uruchomienie procesu w odrębnym
środowisku. Zostało wykorzystane do przechowywania bazy MySQL.
5.1. Budowa i możliwości
Aplikacja składa się z pojedynczej strony, która została podzielona na 4 części:
pole do wprowadzania tekstu, który będzie poddany działaniu korektora,
pole do wyświetlenia informacji zwrotnej na temat wykonanej analizy przez korektor,
pasek opcji,
okno, w którym wyświetlany jest interaktywny graf najbardziej popularnych słów
w danym kontekście.
26
Rys. 5.1. Widok aplikacji wraz z opisem.
Rys. 5.2. Widok aplikacji z rozwiniętym menu.
Stworzona aplikacja umożliwia:
tworzenie oraz rozbudowywanie grafu ANAKG (dodawanie nowych zdań),
analizę i kontekstową korektę wprowadzonego tekstu,
podgląd najczęściej występujących kolejnych słów dla danego kontekstu,
podpowiadanie kolejnego słowa na podstawie wprowadzonych pierwszych liter.
27
Rys. 5.3. Widok aplikacji z wykorzystaną funkcją podpowiadania kolejnego słowa.
W przypadku wykrycia nieprawidłowego kontekstu w tekście, słowo zmienia kolor na
pomarańczowy. Poniżej zostają wyświetlone proponowane słowa korygujące treść oraz
prawdopodobieństwo ich wystąpienia w takim kontekście w nawiasach.
Rys. 5.4. Widok aplikacji przedstawiający wynik pracy korektora.
5.2. Działanie aplikacji
Algorytm służący do kontekstowej korekty tekstu opiera się na wykorzystaniu
współczynników wag synaptycznych utworzonego grafu ANAKG. Współczynnik ten jest tym
wyższy im bardziej słowo pasuje do badanego kontekstu zdania. Poniżej został przedstawiony
wpływ kontekstu na obliczony współczynnik dla słowa „lubił”. W przypadku, gdy zostało
podane całe zdanie, współczynnik jest wyraźnie większy.
Rys. 5.5. Widok aplikacji przedstawiający wyliczony współczynnik dla części zdania.
28
Rys. 5.6. Widok aplikacji przedstawiający wyliczony współczynnik dla całego zdania.
Algorytm zaimplementowanego korektora tekstu można opisać w kilku krokach.
1. Sprawdzenie poprawności pojedynczych słów.
Każde słowo z wprowadzonego zdania zostaje wyszukane w zbudowanym grafie
ANAKG. Słowo, które nie zostanie znalezione lub zostanie znalezione, ale ilość
wystąpień tego słowa w korpusach tekstu była poniżej określonego progu, jest
uznawane jako błędne. Mała ilość wystąpień słowa może świadczyć, że zdanie,
w którym występowało, zawiera błędy.
2. Sprawdzenie poprawności użycia danego słowa w kontekście.
Każde słowo, które zostało uznane za poprawne w kroku pierwszym, zostaje
sprawdzone pod względem wystąpienia w danym kontekście. Jeśli węzeł ze słowem
poprzedzającym słowo badane nie posiada bezpośredniego połączenia z węzłem
badanego słowa, to znaczy, że słowo to nie wystąpiło w danym kontekście
w wejściowych korpusach tekstów wykorzystanych do budowy grafu ANAKG. Jego
użycie uznawane jest więc jako błędne.
3. Wyznaczenie zbioru słów mogących zastąpić błędne słowo.
a) Zostaje wyznaczony zbiór słów, które są następnikami poprzedniego słowa.
b) Każdemu słowu z poprzednio wyznaczonego zbioru zostaje przypisana suma
wag synaptycznych, które pochodzą od wszystkich poprawnych słów
w badanym zdaniu (zarówno poprzedników błędnego słowa jak i jego
następników).
c) Dla każdego słowa ze zbioru zostaje wyznaczona odległość Levenshteina od
błędnego słowa. Słowa posiadające odległość edycyjną 3 lub większą zostają
odrzucone.
d) Pięć słów z powstałego zbioru, które posiadają największą sumę wag
synaptycznych tworzy zbiór słów proponowanych do skorygowania słowa
błędnego.
29
5.3. Dane wejściowe - korpusy tekstu
Do budowy grafu ANAKG zostało wykorzystane 400 000 zdań napisanych w języku
polskim. Korpusy tekstu, które zostały wykorzystane do budowy grafu zostały pobrane
z dwóch źródeł.
Pierwsze źródło, z którego pochodzi około 20% wszystkich zgromadzony zdań to
polska wersja strony Wikiźródła [24]. Jest to portal, który gromadzi wcześniej opublikowane
teksty, które zostały udostępnione na wolnej licencji. W pracy zostały wykorzystane m.in.
takie pozycje jak:
20.000 mil podmorskiej żeglugi - Juljusz Verne,
Mendel Gdański - Maria Konopnicka,
Nowy Tarzan. Opowiadania wesołe i niewesołe - Antoni Lange,
Opowieść Wigilijna – Charles Dickens,
Pies Baskerville’ów - Arthur Conan Doyle,
Przypadki Robinsona Kruzoe - Daniel Defoe,
W pustyni i w puszczy – Henryk Sienkiewicz.
Pozycje te są przepisywane bez poprawy znalezionych błędów. Zostały one jednak
wyszczególnione dla każdej pozycji. Odsetek błędnych zdań jest jednak niewielki, dlatego
można założyć, że korpusy tekstu są poprawne i nadają się do wykorzystania.
Drugie źródło to niemiecki portal Leipzig Corpora Collection [5]. Zgromadzone są
tam korpusy tekstu dla ponad 100 języków. Udostępnione zdania napisane w języku polskim
pochodzą z 3 źródeł, a ich łączna ilość wynosi ponad 10 milionów. Do budowy grafu
ANAKG został użyty zbiór z kategorii ”Newscrawl”, a więc zdania pochodzące z polskich
portali informacyjnych. W przeciwieństwie jednak do książek, artykuły umieszczane na
portalach informacyjnych często są pisane w pośpiechu, co przyczynia się do popełniania
wielu błędów przez osoby je tworzące. Zbiór zdań zawiera również zdania, które zostały
napisane prze zwykłych użytkowników pod artykułem. Wypowiedzi te często zawierają wiele
błędów. Poniżej zostały przedstawione błędne zdania występujące w wykorzystywanym
zbiorze.
1. Brak znaków interpunkcyjnych:
P.Bąk powinien bezapelacyjnie zostać starostą zdyskwalifikował wynikami wszystkich.
2. Dwa zdania nieoddzielone kropką:
"Gra na czas" i "finansowe sztuczki" w sprawie Grecji "Decyzje istotne dla Polski
zapadają poza kontrolą" Co tam Tusk.
30
Wysłany: Pon, 17 Paź 2011, 21:14 nadchodzi czas pękania balonowych funduszy
Kiedy inwestorzy odkryją kolejne piramidy WGI?
Tysiące gospodarstw bez prądu Na tropie pogodynki.
3. Brak niektórych polskich znaków:
Jak się srodkiem drogi idzie to policja powinna wziąc się za tego idącego a nie szukać
wiatru w polu.
Dzieki ludziom dobrej woli, w tym także naszym Czytelnikom, wyjechała leczyć się do
Chin.
Na dzien dzisiejszy Rzeszów to większa metropolia niż Lublin,350 tysięczny moloch,
który skazany jest na upadek.
4. Inne błędne przykładowe zdania, które mogę wprowadzać zakłamanie do działania
korektora:
Jeszcze żyła dodano: 20 września 2011, 10:55 tagi:śmierć policja Rzeszów tragedia
(fot.
Konkurs na „Nojpiykniyjsy gminny moj” ogłosiło też Gminne Centrum Kultury,
Sportu i Turystyki w Lipnicy Wielkiej.
Ekwador, nogi, biało, reprezentacja Polacy wezmą rewanż za mundial?
Odsłony: 1550 Więcej… Dodaj komentarz Czwartek, 22 Kwietnia 2010 13:09
Wyeliminowanie wszystkich błędnych zdań z tak dużego zbioru danych jest niemożliwe,
dlatego zbudowany graf ANAKG zawiera również zdania błędne. Aplikacja wykorzystuje
jednak fakt, że konkretne błędy nie powtarzają się często. Został więc wprowadzony próg
poprawności, który określa, ile razy dane słowo musi wystąpić, aby było uznane za słowo
poprawne.
31
6. Porównanie stworzonego korektora
z wybranymi narzędziami służącymi do
korygowania tekstu dla języka polskiego
Rozwój technologii pozwolił na powstanie wielu narzędzi służących do korygowania tekstu.
W rozdziale tym zostały przedstawione i przetestowane najbardziej rozbudowane narzędzia,
za pomocą których możliwe jest korygowanie tekstu napisanego w języku polskim.
Omawiane narzędzia można podzielić na trzy grupy:
a) Korektory wykorzystywane przez wyszukiwarki internetowe:
Google,
Bing,
Ask,
Yandex,
Nekst.
b) Korektory wykorzystywane przeze edytory tekstu:
Microsoft Word,
Apache OpenOffice.
c) Korektory online:
LanguageTool,
iKorektor.
Wymienione narzędzia posiadają różne funkcjonalności. Jedne korygują jedynie błędy
ortograficzne, inne pozwalają na kompleksową analizę zdania i wykrycie dużo bardziej
skomplikowanych błędów językowych. W dalszej części rozdziału zostaną szczegółowo
omówione i przetestowane wyżej wymienione narzędzia w trzech różnych wyróżnionych
kategoriach. Działanie każdego narzędzia zostanie przetestowane na zdaniach:
1. Dziś jest pęikny i słoneczny dzien.
2. Ona lubił bardzo swojego kotta.
3. To była bardz interesująca ksiąrzka.
32
Zdania te pozwoliły na zbadanie 6 podstawowych błędów:
„pęikny” – przestawienie liter w wyrazie,
„dzien” – brak polskiej litery „ń”,
„ona lubił” – niepoprawna odmiana czasownika „lubić”,
„kotta” - jedna litera zdublowana przypadkowo,
„bardz” – brakuje litery „o”,
„ksiąrzka” – błąd ortograficzny.
W ostatnim podrozdziale zostały przedstawione rezultaty otrzymane przez stworzony
korektor tekstu.
6.1. Korektory wykorzystywane przez wyszukiwarki
internetowe
Wyszukiwarki internetowe obsługują dziennie ogromną liczbę wyszukiwań ([11] średnia ilość
wyszukiwań w najpopularniejszej wyszukiwarce Google w grudniu 2016 roku wynosiła
2.3 miliona wyszukiwań na sekundę). Część z nich, wykorzystuje ogromną liczbę
użytkowników do tworzenia coraz to lepszego systemu do analizy i korekty tekstu.
Douglas Merrill (Chief Information Officer firmy Google) opisuje, jak łatwo działa korekcja
tekstu w wyszukiwarce Google. Cały proces składa się z czterech kroków:
1. Użytkownik wpisuje zapytanie z błędnym słowem.
2. Użytkownik nie znajduje informacji, których szuka.
3. Użytkownik orientuje się, że popełnił błąd przy wpisywaniu zapytania, więc poprawia
zapytanie.
4. Użytkownik klika w jeden z pierwszych linków podesłanych przez wyszukiwarkę.
Te 4 proste kroki powtarzane miliony razy pozwoliły na nauczenie systemu odpowiedzialnego
za korektę tekstu, jakie błędy są najczęściej popełniane przez użytkowników.
Inne wyszukiwarki działają w podobny sposób jak ten przedstawiony powyżej.
Wysoka trafność podpowiedzi wyszukiwarek internetowych oparta jest na ogromniej liczbie
użytkowników, którzy (zazwyczaj nieświadomie) każdego dnia pomagają w tworzeniu coraz
lepszego korektora tekstu.
33
6.1.1. Wyszukiwarka Google
Jako pierwsza została przetestowana aktualnie najbardziej popularna wyszukiwarka
internetowa na świecie. Google zdominował rynek wyszukiwarek internetowych, dzięki
czemu posiada ogromne grono użytkowników, którzy codziennie pomagają w ulepszaniu jego
korekta tekstu.
Rys. 6.1. Korekta zdania nr. 1 przy użyciu wyszukiwarki Google
Korektor tekstu wykrył pierwszy napotkany błąd w słowie „pęikny” i poprawnie zasugerował
poprawę na słowo „piękny”. Nie zostało jednak wykryte błędne słowo „dzien”.
Rys. 6.2. Korekta zdania nr. 2 przy użyciu wyszukiwarki Google
W drugim testowym zdaniu korektor prawidłowo wykrył dwa błędne słowa i zasugerował
prawidłową poprawę zdania.
34
Rys. 6.3. Korekta zdania nr. 3 przy użyciu wyszukiwarki Google
Z ostatnim zdaniem korektor również poradził sobie prawidłowo i proponowana poprawa jest
trafna.
Korektor tekstu wyszukiwarki Google okazał się niezwykle skuteczny. Poprawił 5 z 6
występujących błędów. Nie poradził sobie jedynie ze słowem „dzien”. Dokładniejsza analiza
potwierdziła, że korektor ten nie wykrywa błędów związanych z polskimi znakami.
6.1.2. Wyszukiwarka Bing
Jednym z największych konkurentów dla wyszukiwarki Google jest Bing. Wyszukiwarka
stworzona została przez amerykańską firmę Microsoft.
Rys. 6.4. Korekta zdania nr. 1 przy użyciu wyszukiwarki Bing
Podobnie jak w przypadku wyszukiwarki Google, słowo „pęikny” zostało wykryte
i zaproponowana została poprawna korekta, natomiast słowo „dzien” nie zostało
sklasyfikowane jako błędne.
35
Rys. 6.5. Korekta zdania nr. 2 przy użyciu wyszukiwarki Bing
Drugie zdanie zostało poprawione tylko częściowo. Słowo „lubił” nie zostało oznaczone jako
błędne.
Rys. 6.6. Korekta zdania nr. 3 przy użyciu wyszukiwarki Bing
Trzecie zdanie zostało poprawione tylko częściowo. Bing nie poradził sobie z wykryciem
błędu w słowie „ksiąrzka”.
Korektor wyszukiwarki Bing okazał się mniej skuteczny od korektora wyszukiwarki Google.
Obie wyszukiwarki nie poradziły sobie z poprawieniem słowa „dzien”. Bing nie wykrył
również złej odmiany czasownika „lubić” w drugim zdaniu oraz błędu ortograficznego
w słowie „ksiąrzka”.
36
6.1.3. Wyszukiwarka Ask
Kolejny badany korektor tekstu wykorzystywany jest przez wyszukiwarkę Ask. Jest to dużo
mniej popularna wyszukiwarka od dwóch poprzednich, a więc można przewidywać, że
poradzi sobie gorzej od poprzedników.
Rys. 6.7. Korekta zdania nr. 1 przy użyciu wyszukiwarki Ask
Słowo „pęikny” zostało wykryte i poprawnie zastąpione. Korektor tekstu wyszukiwarki Ask
nie poradził sobie jednak ze słowem „dzien”.
Rys. 6.8. Korekta zdania nr. 2 przy użyciu wyszukiwarki Ask
Wszystkie błędy zostały wykryte w drugim zdaniu i proponowana korekta jest prawidłowa.
Rys. 6.9. Korekta zdania nr. 3 przy użyciu wyszukiwarki Ask
Korektor wyszukiwarki Ask poradził sobie również z ostatnim zdaniem i trafnie
zaproponował korektę tekstu.
Ask okazał się równie dobry co wyszukiwarka Google. Obydwie wyszukiwarki nie poradziły
sobie jedynie z wykryciem błędnego słowa „dzien”.
37
6.1.4. Wyszukiwarka Yandex
Yandex jest największa rosyjską wyszukiwarką internetową. Wyszukiwarka przez długi czas
rozwijana była jedynie jako narzędzie przystosowane do języka rosyjskiego, jednak od kilku
lat rozwija się również międzynarodowa wersja tej przeglądarki.
Rys. 6.10. Korekta zdania nr. 1 przy użyciu wyszukiwarki Yandex
Pierwsze zdanie zostało poprawione identycznie jak w przypadku poprzednich wyszukiwarek.
Yandex nie wykrył błędnego słowa „dzien”.
Rys. 6.11. Korekta zdania nr. 2 przy użyciu wyszukiwarki Yandex
Słowo „kotta” zostało wykryte jednak proponowana poprawa nie pasuje do kontekstu zdania.
Słowo „lubił” nie zostało wykryte.
Rys. 6.12. Korekta zdania nr. 3 przy użyciu wyszukiwarki Yandex
Trzecie zdanie zostało trafnie poprawione.
38
Korektor wyszukiwarki Yandex wypadł nieco słabiej od swoich poprzedników. Wykrył 5 z 6
błędów, jednak tylko 4 błędy zostały trafnie poprawione.
6.1.5. Wyszukiwarka Nekst
Ostatnią badaną wyszukiwarką jest Nekst. Jest to polska wyszukiwarka, którą rozwijają
naukowcy z Instytutu Podstaw Informatyki PAN w Warszawie oraz Politechniki
Wrocławskiej.
Rys. 6.13. Korekta zdania nr. 1 przy użyciu wyszukiwarki Nekst
Korektor poprawnie wykrył błędy w dwóch słowach, lecz tylko pierwsze słowo zostało
poprawione trafnie.
Rys. 6.14. Korekta zdania nr. 2 przy użyciu wyszukiwarki Nekst
W drugim zdaniu wyszukiwarka nie wykryła błędnego słowa „kotta” oraz słowa „lubił”.
Rys. 6.15. Korekta zdania nr. 3 przy użyciu wyszukiwarki Nekst
39
Błędne słowo „ksiąrzka” zostało wykryte i poprawione prawidłowo. Nekst nie poradził sobie
jednak ze słowem „bardz”.
Nekst jest jedyną z badanych wyszukiwarek, która poradziła sobie z wykryciem błędu
w słowie „dzien”. Niestety korektora nie potrafił zaproponować poprawnej korekty.
W przypadku pozostałych błędów wyszukiwarka nie poradziła sobie dobrze i wypada
najgorzej spośród badanych wyszukiwarek.
6.2. Korektory wykorzystywane przez edytory tekstu
Kolejną grupą narzędzi są aplikacje służące jako edytory tekstu. W dzisiejszych
czasach od edytora tekstu wymaga się znacznie więcej niż jeszcze kilkanaście lat temu.
Korektor tekstu w tego rodzaju aplikacjach jest jednym z wielu podstawowych
funkcjonalności, które mogą wpłynąć bardzo pozytywnie na jakość produktu oraz jego
popularność. Poprawnie działający korektor tekstu może zwiększyć efektywność pracy oraz
jakość tekstu wprowadzonego przez użytkownika.
6.2.1. Edytor tekstu Microsoft Word
Najpopularniejszym edytorem tekstu używanym na świecie jest Microsoft Word
z pakietu Microsoft Office. Jest to niezwykle rozbudowane narzędzie, które posiada
specjalistyczny korektor tekstu.
Rys. 6.16. Korekta zdania nr.1 przy użyciu edytora Microsoft Word
Pierwsze błędne słowo zostało poprawnie wykryte i poprawione. W przypadku słowa „dzień”
korektor nie zaproponował poprawy, lecz samoistnie poprawił słowo na prawidłowe, uznając
ze 100% pewnością, że możliwa poprawa jest tylko jedna.
40
Rys. 6.17. Korekta zdania nr.2 przy użyciu edytora Microsoft Word
Słowo „lubił” nie zostało poprawione, słowo „kotta” zostało wykryte i prawidłowa poprawa
została zaproponowana jako druga możliwość.
Rys. 6.18. Korekta pierwszego słowa w zdaniu nr.3 przy użyciu edytora Microsoft Word
Rys. 6.19. Korekta drugiego słowa w zdaniu nr.3 przy użyciu edytora Microsoft Word
Obydwa słowa w zdaniu trzecim zostały poprawione w sposób prawidłowy.
Korektor tekstu będący częścią aplikacji Microsoft Word okazał się skuteczny prawie we
wszystkich przypadkach. Zaskakujące jest jednak, że nie poradził sobie z wykryciem
nieprawidłowej odmiany słowa „lubił” w zdaniu drugim.
41
6.2.2. Edytor tekstu Apache OpenOffice
Początkowo rozwijana przez firmę Oracle, a następnie przekazana Apache Software
Fundation, aplikacja OpenOffice jest doskonałą darmową alternatywą dla produktu firmy
Microsoft.
Rys. 6.20. Korekta pierwsza słowa w zdaniu nr.1 przy użyciu edytora OpenOffice
Rys. 6.21. Korekta drugiego słowa w zdaniu nr.1 przy użyciu edytora OpenOffice
Aplikacja doskonale poradziła sobie z pierwszym zdaniem.
42
Rys. 6.22. Korekta zdania nr.2 przy użyciu edytora OpenOffice
Słowo „lubił” nie został wykryte. Trafna korekta słowa „kotta” została zaproponowana
dopiero na 4 miejscu.
Rys. 6.23. Korekta pierwsza słowa w zdaniu nr.3 przy użyciu edytora OpenOffice
Rys. 6.24. Korekta drugiego słowa w zdaniu nr.3 przy użyciu edytora OpenOffice
Poprawna korekta słowa „bardz” została zaproponowana dopiero na 3 miejscu. Drugie błędne
słowo zostało trafnie poprawione.
43
6.3. Korektory online
Ostatnią badaną grupą korektorów są aplikacje webowe służące jedynie do analizy
i korekty tekstu.
6.3.1. LanguageTool
Narzędzie korektorskie, które obsługuje ponad 25 języków, w tym język polski.
Może służyć jako wtyczka do najpopularniejszych przeglądarek internetowych (Google
Chrome, Firefox) oraz jak dodatek do oprogramowania LibreOffice lub OpenOffice.
Rys. 6.25. Korekta pierwsza słowa w zdaniu nr.1 przy użyciu korektora LanguageTool
Rys. 6.26. Korekta drugiego słowa w zdaniu nr.1 przy użyciu korektora LanguageTool
Aplikacja wykryła błędne słowa i w obydwu przypadkach zaproponowała poprawna korektę.
44
Rys. 6.27. Korekta zdania nr.2 przy użyciu korektora LanguageTool
W zdaniu drugim korektor wykrył tylko drugie błędne słowa. Nie potrafił jednak
zaproponować poprawnej korekty.
Rys. 6.28. Korekta pierwsza słowa w zdaniu nr.3 przy użyciu korektora LanguageTool
Rys. 6.29. Korekta drugiego słowa w zdaniu nr.3 przy użyciu korektora LanguageTool
Trzecie zdanie zostało poprawione poprawnie.
LanguageTool poradził sobie z poprawą zdania nr.1 i nr.3. Aplikacja nie zdołała jednak
poprawić błędów w zdaniu drugim. Jest to kolejne narzędzie, które nie wykryło błędnej
odmiany czasownika „lubić”.
45
6.3.2. iKorektor
Kolejną aplikacją webową, która umożliwia analizę tekstu jest aplikacja iKorektor.
Aplikacja przystosowana jest jedynie do analizy i poprawy tekstu napisanego w języku
polskim.
Rys. 6.30. Korekta zdania nr.1 przy użyciu korektora iKokorektor
Pierwsze zdanie zostało trafnie poprawione w całości.
Rys. 6.31. Korekta zdania zdaniu nr.2 przy użyciu korektora iKokorektor
iKorektor nie poradził sobie ze zdaniem drugim. Nie wykrył żadnego błędu.
Rys. 6.32. Korekta zdania nr.3 przy użyciu korektora iKokorektor
Obydwa słowa w trzecim zdaniu korektor poprawił prawidłowo.
iKorektor poprawił jedynie 4 z 6 występujących błędów. Największym zaskoczeniem jest
fakt, że aplikacja nie wykryła błędnego słowa „kotta” w drugim zdaniu.
46
6.4. Własny korektor tekstu
Ostatnią badaną aplikacją jest własny korektor tekstu wykorzystujący graf ANAKG.
Rys. 6.33. Korekta zdania nr.1 przy użyciu własnego korektora tekstu
Pierwsze zdanie zostało poprawione prawidłowo. Aplikacja poradziła sobie z dwoma
występującymi błędami.
Rys. 6.34. Korekta zdania nr.2 przy użyciu własnego korektora tekstu
47
Korektor wykrył również błędy w zdaniu drugim. Proponowana korekta jest prawidłowa.
W przypadku słowa „kotta” aplikacja zasugerowała poprawnie słowo „kota”, jednak podała
jeszcze kilka innych alternatyw.
Rys. 6.35. Korekta zdania nr.3 przy użyciu własnego korektora tekstu
Trzecie zdanie zostało poprawione prawidłowo.
Własny korektor okazał się skuteczny w przypadku badanych zdań. Wszystkie błędne słowa
zostały wykryte oraz prawidłowo poprawione.
6.5 Podsumowanie testu korektorów
Przeprowadzona analiza pozwala stwierdzić, że używane na codzień narzędzia służące
do korygowania tekstu nie są idealne. Spośród 10 przebadanych korektorów, tylko własny
korektor oparty na ANAKG wykrył i poprawił prawidłowo wszystkie błędy. Część badanych
korektorów nie poradziła sobie tylko z jednym błędem. Fakt, że błędy te nie były identyczne
dla różnych narzędzi świadczyć może o zastosowaniu innych algorytmów do analizy
i korekty tekstu.
49
7. Podsumowanie
Analizując poprzedni rozdział można wywnioskować, że stworzony korektor tekstu
działał prawidłowo dla losowo wybranych trzech zdań z języka polskiego. Jego skuteczność
okazała się lepsza od niektórych przebadanych narzędzi, również komercyjnych. Po bardziej
wnikliwej analizie, okazuje się jednak, że korektor czasem nie działa w sposób prawidłowy.
Głównym czynnikiem, który ma na to wpływ jest ograniczona ilość tekstu wykorzystana do
budowy grafu ANAKG. Pomimo wykorzystania 400 000 zdań do budowy grafu, nadal
występują słowa języka polskiego, które nie znajdują się w grafie. Często też słowa, które są
częścią grafu, nie zostały użyte w kontekście, w jakim zostały wykorzystane w zdaniu
poddanym korekcie.
Niewielkie korpus tekstu nie jest jednak przeszkodą dla prawidłowego działania
aplikacji. Korektor wykorzystujący graf ANAKG w wielu przypadkach będzie działał
prawidłowo, ponieważ do korekty tekstu wykorzystuje kontekst słowny, który wcześniej
został użyty przy budowie grafu oraz adaptacji wag. Cecha ta sprawia, że korektor nie
potrzebuje ogromnego korpusu tekstu, aby działać prawidłowo i móc konkurować z innymi
narzędziami służącymi do korekty tekstu dla języka polskiego.
Graf wykorzystywany w aplikacji został stworzony na komputerze przenośnym
posiadającym dwurdzeniowy procesor Intel Core i7-5500u. Częstotliwość pracy jednego
rdzenia tego procesora wynosi 2,4 GHz. Niskie taktowanie procesora miało widoczny wpływ
na małą prędkość budowy grafu. Sporym ograniczeniem była również ilość pamięci RAM.
Komputer, na którym przeprowadzane były testy posiadał 8 GB pamięci RAM. Było to
główne ograniczenie, które nie pozwalało na budowę większego grafu. Wykorzystanie
komputera o lepszych podzespołach pozwoliłoby na stworzenie większego grafu, co
przełożyłoby się na zwiększenie efektywności działania aplikacji.
Innym czynnikiem, który ma negatywny wpływ na działanie korektora, jest użyty
korpus tekstu. Część zdań z tego zbioru posiada błędy. Wyeliminowanie nieprawidłowych
zdań wejściowych wpłynęłoby pozytywnie na działanie korektora, ale jest to zadanie bardzo
czasochłonne.
51
Literatura
[1]. Cohen W. W., Ravikumar P., Fienberg S. E., Comparison of String Metrics for Matching
Names and Records, Carnegie Mellon University, 2003.
[2]. Damerau F. J., A technique for computer detection and correction of spelling errors,
Communications of the ACM, vol. 7, nr. 3, 1964, pp. 171–176.
[3]. Dębowski Ł., Prawo Zipfa - próby objaśnień, Instytut Podstaw Informatyki PAN, 2005.
[4]. Domaradzki R., Zastosowanie sieci neuronowych do wspomagania decyzji
inwestycyjnych, http://bossa.pl/analizy/techniczna/elementarz/sieci_neuronowe/
[5] Goldhahn D., Eckart T., Quasthoff U., Building Large Monolingual Dictionaries at the
Leipzig Corpora Collection: From 100 to 200 Languages, Proceedings of the 8th
International Language Ressources and Evaluation (LREC'12), 2012.
[6]. Gołda A., Wstęp do sieci neuronowych, http://galaxy.uci.agh.edu.pl/~vlsi/AI/wstep/
[7]. Horzyk A., Metody inżynierii wiedzy, http://home.agh.edu.pl/~horzyk/ahdydaktyka.php
[8]. Horzyk A., Sztuczne systemy skojarzeniowe i asocjacyjna sztuczna inteligencja,
Akademicka Oficyna Wydawnicza EXIT, Warszawa, 2013.
[9]. Klaus Rafał, Budowa neuronu, Instytut Informatyki Politechniki Poznańskiej,
http://www.cs.put.poznan.pl/rklaus/assn/neuron.htm
[10]. Niewiadomski A., Materiały, przykłady i ćwiczenia do przedmiotu Komputerowe
Systemy Rozpoznawania, Instytut Informatyki Politechniki Łódzkiej, 2009.
[11]. Google Search Statistics, http://expandedramblings.com/index.php/by-the-numbers-a-
gigantic-list-of-google-stats-and-facts/
[12]. Levenshtein V. I., Binary codes capable of correcting deletions, insertions, and
reversals, Soviet Physics Doklady, vol 10, nr. 8, 1966, pp. 707–710.
[13]. Merrill D., Search 101, https://www.youtube.com/watch?v=syKY8CrHkck#t=22m03s
52
[14]. Świetlicki R., Odległość Levenshteina (odległość edycyjna), http://www.algorytm.org/
przetwarzanie-tekstu/odleglosc-levenshteina-odleglosc-edycyjna.html
[15]. Tadeusiewicz R., Sieci Neuronowe, Akademicka Oficyna Wydawnicza RM, 1993.
[16] Ziółko B., Skurzok D., Michalska M., Polish n-grams and their correction process,
Proceedings of The 4th International Conference on Multimedia and Ubiquitous Engineering
(MUE 2010), Cebu, Filipiny, 2010.
[15]. Apache OpenOffice https://www.openoffice.org/
[16]. d3js, https://d3js.org/
[17]. Hibernate, http://hibernate.org/
[18]. iKorektor, http://ikorektor.pl/
[19]. Java, https://docs.oracle.com
[20]. LanguageTool, https://www.languagetool.org/
[21]. Microsoft Office, https://support.office.com
[22]. Projekt Gutenberg, http://www.gutenberg.org/
[23]. Spring, https://spring.io/
[24]. Wikiźródła, https://pl.wikisource.org/
53
Spis rysunków
Rys. 2.1. Schemat perceptronu jednowarstwowego……………………………………………7
Rys. 2.2. Schemat budowy prawdziwego neuronu ………………………………..…………..9
Rys. 2.3. Schemat budowy sztucznego neuronu …………………………………………..…..9
Rys. 2.4. Schemat budowy układu elektronicznego symulującego neuron…………..………..9
Rys. 3.1. Fragment ranking najczęściej występujących słów przedstawiający trzy pierwsze
rekordy………………………………………………………………………………………..18
Rys. 3.2. Fragment ranking najczęściej występujących słów przedstawiający rekordy od
czwartego do trzynastego…………………………………………………………………..…18
Rys. 3.3. Wykres przedstawiający prawo Zipfa dla korpusu tekstu języka polskiego……….19
Rys. 4.1. Graf ANAKG zbudowany z kilku zdań języka angielskiego………………………21
Rys. 4.2. Obliczone współczynniki wag synaptycznych oraz współczynniki skuteczności dla
zbioru wejściowego „A B C D”……………………………………………………………....22
Rys. 4.3. Obliczone współczynniki wag synaptycznych oraz współczynniki skuteczności dla
zbioru wejściowego „A B C D A B D”…………………………………………………….....23
Rys. 5.1. Widok aplikacji wraz z opisem………………………………………………….….26
Rys. 5.2. Widok aplikacji z rozwiniętym menu……………………………………………....26
Rys. 5.3. Widok aplikacji z wykorzystaną funkcją podpowiadania kolejnego słowa.……….27
Rys. 5.4. Widok aplikacji przedstawiający wynik pracy korektora…………………………..27
Rys. 5.5. Widok aplikacji przedstawiający wyliczony współczynnik dla części zdania……..27
Rys. 5.6. Widok aplikacji przedstawiający wyliczony współczynnik dla całego zdania…….28
Rys. 6.1. Korekta zdania nr.1 przy użyciu wyszukiwarki Google……………………………33
Rys. 6.2. Korekta zdania nr.2 przy użyciu wyszukiwarki Google……………………………33
Rys. 6.3. Korekta zdania nr.3 przy użyciu wyszukiwarki Google……………………………34
Rys. 6.4. Korekta zdania nr.1 przy użyciu wyszukiwarki Bing………………………………34
Rys. 6.5. Korekta zdania nr.2 przy użyciu wyszukiwarki Bing………………………………35
Rys. 6.6. Korekta zdania nr.3 przy użyciu wyszukiwarki Bing………………………………35
Rys. 6.7. Korekta zdania nr.1 przy użyciu wyszukiwarki Ask……………………………….36
Rys. 6.8. Korekta zdania nr.2 przy użyciu wyszukiwarki Ask……………………………….36
Rys. 6.9. Korekta zdania nr.3 przy użyciu wyszukiwarki Ask………………………………..36
Rys. 6.10. Korekta zdania nr.1 przy użyciu wyszukiwarki Yandex…………………………..37
Rys. 6.11. Korekta zdania nr.2 przy użyciu wyszukiwarki Yandex…………………………..37
Rys. 6.12. Korekta zdania nr.3 przy użyciu wyszukiwarki Yandex…………………………..37
Rys. 6.13. Korekta zdania nr.1 przy użyciu wyszukiwarki Nekst…………………………….38
Rys. 6.14. Korekta zdania nr.2 przy użyciu wyszukiwarki Nekst…………………………….38
Rys. 6.15. Korekta zdania nr.3 przy użyciu wyszukiwarki Nekst…………………………….38
54
Rys. 6.16. Korekta zdania nr.1 przy użyciu edytora Microsoft Word………………………...39
Rys. 6.17. Korekta zdania nr.2 przy użyciu edytora Microsoft Word………………………...40
Rys. 6.18. Korekta pierwszego słowa w zdaniu nr.3 przy użyciu edytora Microsoft
Word…………………………………………………………………………………………..40
Rys. 6.19. Korekta drugiego słowa w zdaniu nr.3 przy użyciu edytora Microsoft Word…….40
Rys. 6.20. Korekta pierwsza słowa w zdaniu nr.1 przy użyciu edytora OpenOffice…………41
Rys. 6.21. Korekta drugiego słowa w zdaniu nr.1 przy użyciu edytora OpenOffice…………41
Rys. 6.22. Korekta zdania nr.2 przy użyciu edytora OpenOffice……………………………..42
Rys. 6.23. Korekta pierwsza słowa w zdaniu nr.3 przy użyciu edytora OpenOffice…………42
Rys. 6.24. Korekta drugiego słowa w zdaniu nr.3 przy użyciu edytora OpenOffice…………42
Rys. 6.25. Korekta pierwsza słowa w zdaniu nr.1 przy użyciu korektora LanguageTool……43
Rys. 6.26. Korekta drugiego słowa w zdaniu nr.1 przy użyciu korektora LanguageTool……43
Rys. 6.27. Korekta zdania nr.2 przy użyciu korektora LanguageTool………………………..44
Rys. 6.28. Korekta pierwsza słowa w zdaniu nr.3 przy użyciu korektora LanguageTool……44
Rys. 6.29. Korekta drugiego słowa w zdaniu nr.3 przy użyciu korektora LanguageTool……44
Rys. 6.30. Korekta zdania nr.1 przy użyciu korektora iKokorektor…………………………..45
Rys. 6.31. Korekta zdania zdaniu nr.2 przy użyciu korektora iKokorektor…………………..45
Rys. 6.32. Korekta zdania nr.3 przy użyciu korektora iKokorektor…………………………..45
Rys. 6.33. Korekta zdania nr.1 przy użyciu własnego korektora tekstu……………………...46
Rys. 6.34. Korekta zdania nr.2 przy użyciu własnego korektora tekstu……………………...46
Rys. 6.35. Korekta zdania nr.3 przy użyciu własnego korektora tekstu……………………...47
55
Spis tabel
Tabela 2.1. Rozwój neurokomputerów w drugiej połowie lat 80……………………………...8
Tabela 3.1. Odległość Levenshteina dla przykładowych ciągów znaków……………………14
Tabela 3.2. Pierwszy etap konstrukcji tablicy………………………………………………...15
Tabela 3.3. Drugi etap konstrukcji tablicy i wyznaczenie odległości edycyjnej……………..15
Top Related