Wykorzystanie sztucznych sieci neuronowych do rozpoznawania języków: polskiego, angielskiego i francuskiego Tworzenie i nauczanie sieci przy pomocy języka C++ i biblioteki FANN (Fast Artificial Neural Network) Joanna Długosz BIBLIOTEKA FANN (FAST ARTIFICIAL NEURAL NETWORK ) FANN jest biblioteką implementującą SSN, którą moŝna wykorzystać w C, C++, PHP, Pythonie, Delphi a nawet w środowisku Mathematica. Biblioteka FANN została stworzona przez Steffena Nissena informatyka z Danii. Została ona udostępniona przez niego w 2003 roku. Z początku była dostępna tylko dla Linuxa. Obecnie dostępna jest w większości kompilatorów i systemów operacyjnych.
BIBLIOTEKA FANN (FAST ARTIFICIAL NEURAL NETWORK ) Podstawowe funkcje FANN: fann_create tworzenie sieci fann_train_on_file uczenie się sieci na podstawie pliku treningowego fann_save zapis pod określoną nazwą fann_destroy koniec pracy z siecią struct fann *ann_create (float connection_rate, float learning_rate, unisigned int num_layers,) jest stosowana do tworzenia SSN, parametr connection_rate moŝe być uŝyty do utworzenia SSN nie w pełni połączonej, zaślearning_rate stosowany jest do określenia intensywności procesu uczenia. Ostatni parametr num_layers słuŝy do zdefiniowania układu warstw w SNN. ROZPOZNAWANIE JĘZYKA Jedną z metod na rozpoznanie języka jest analiza częstotliwości występowania w tekście liter alfabetu. Dla języków europejskich wystarczy wziąć pod uwagę częstotliwość występowania tylko liter A-Z, pomimo nawet tego, Ŝe wiele języków wykorzystuje równieŝ inne litery. Z pomocą biblioteki FANN napisanie programu, którego zadaniem będzie określenie, w jakim języku został napisany dany plik tekstowy, jest niezwykle proste. Zastosowana w tym celu SSN powinna mieć neuron wejściowy dla kaŝdej z 26 liter i jeden neuron wyjściowy dla kaŝdego języka.
I. Napisanie programu mierzącego częstotliwość występowania liter w pliku tekstowym II. Wygenerowanie pliku trenującego PoniŜszy obraz pokazuje fragment zawartości pliku trenującego, wygenerowanego przy uŝyciu czterech plików tekstowych dla kaŝdego z trzech języków.
II. Wygenerowanie pliku trenującego Plik zapisujemy pod nazwą frequencies.data Uśrednione częstotliwości występowania liter w językach francuskim, polskim angielskim III. Tworzenie programu uczącego sieć Liczba warstw oraz neuronów w warstwie ukrytej zostały dobrane eksperymentalnie poprzez sprawdzenie kilku moŝliwych konfiguracji tylko konfiguracja 13 neuronów potrafiła sprostać parametrom uczenia. Wynik nauczania zapisujemy do pliku: klasyfikacja_jezykow
III. Tworzenie programu uczącego sieć Wyjście FANN podczas trenowania: Liczba epok w zaleŝności od uŝytego algorytmu uczenia: Rodzaj algorytmu Domyślnyrprop Incremental Batch Quickprop (przy zwiększeniu czasu działania algorytmu) Ilość epok 57 8108 91985 662 IV. Tworzenie programu klasyfikującego tekst PoniŜszy program wczytuje zachowaną SSN i uŝywa jej do klasyfikowania tekstu jako angielski, francuski lub polski. Korzysta z niektórych funkcji utworzonych w Kroku I oraz z pliku zawierającego wyniki uczenia.
IV. Tworzenie programu klasyfikującego tekst Wynik działania programu: KONIEC