Lietuvių kalbos morfologija atvirojo kodo „Hunspell“ platformoje
Full text
BENDRINĖ KALBA 90 (2017) www.bendrinekalba.lt ISSN 2351-7204 VIRGINIJUS DADURKEVIČIUS Uniwersytet Wileński MORFOLOGIA JĘZYKA LITEWSKIEGO W PLATFORMIE OTVARTEGO KODU HUNSPELL 1 SŁOWA KLUCZOWE: lingwistyka komputerowa, język litewski, gramatyka, morfologia, analiza morfologiczna, sprawdzanie pisowni, indeksowanie tekstu, wyszukiwanie, otwarty kod, Hunspell. WSTĘP Ponad 100 lat temu dzięki staraniom Jonasa Jablonskisa (1901, 1918, 1922) rozpoczęto standaryzację języka litewskiego i przystosowano go do pełnienia funkcji głównego narzędzia jednoczącego państwo. Już w pierwszej Gramatyce języka litewskiego Jonasa Jablonskisa (1901) sformalizowano fonetykę, morfologię i składnię języka litewskiego: zdefiniowano podstawowe pojęcia, przedstawiono zasady odmiany wyrazów i budowy zdania (zob. rys. 1). RYS. 1 Fragment z Gramatyki języka litewskiego Jonasa Jablonskisa z 1901 roku 2 Nieoceniony wkład Jonasa Jablonskisa w normalizację leksyki języka litewskiego oraz wyjaśnianie semantycznych właściwości wyrazów. Przez długi czas to w zupełności wystarczało uczniom i nauczycielom, pisarzom i czytelnikom, urzędnikom i naukowcom. Wraz z pojawieniem się zmieniającej cywilizację nowości – komputerów – przed klasyczną gramatyką i leksyką stanęła konieczność „przywdziania nowego stroju” i stania się pełnoprawną nowoczesnych 1 Artykuł opracowano na podstawie referatu Gramatyka języka litewskiego w świecie otwartego kodu, wygłoszonego na 24. międzynarodowej konferencji Jonasa Jablonskisa Zasoby cyfrowe języka, kierunki ich rozwoju i możliwości wykorzystania (2017 09 29); zorganizowały ją Centrum Badań Języka Standardowego Instytutu Języka Litewskiego oraz Katedra Języka Litewskiego Uniwersytetu Wileńskiego. 2 Paveikslas iš http://www.epaveldas.lt/vbspi/biRecord.do?biRecordId=25383.
VIRGINIJUS DADURKEVIČIUS. Morfologia języka litewskiego na platformie hunspell o otwartym kodzie BENDRINĖ KALBA 90 (2017) www.bendrinekalba.lt ISSN 2351-7204 źródłowym |2 częścią technologii. Najpierw znajomość zagadnień językowych w komputerach była potrzebna do kodowania tekstu (zamiany liter na liczby), automatycznego korygowania błędów we wprowadzanym tekście oraz dzielenia na sylaby tekstu kolumn o obustronnym justowaniu. Nieco później – do wyszukiwania informacji, analizy i syntezy mowy, tłumaczenia maszynowego z jednego języka na inny, automatycznego rozumienia treści, automatycznej „emocjonalnej” analizy tekstu itd. Zagadnienia językowe musiały zostać szczegółowo sformalizowane i zapisane w inny sposób, zrozumiały dla komputerów. Najważniejsza spośród tych dziedzin jest morfologia, ponieważ stanowi podstawę wszelkich bardziej pogłębionych prac z zakresu lingwistyki komputerowej (składnia, analiza semantyczna itp.). Pierwszą taką pracę na przełomie wieków wykonał programista zakładu doświadczalnego „Bitas” Vytautas Zinkevičius (1996, 2000). Przez prawie dwie dekady było to niezastąpione i jedyne narzędzie do nowoczesnych badań nad językiem litewskim oraz zastosowań komputerowych. System ten z powodzeniem wykorzystywano do wykrywania błędów ortograficznych w programach do edycji tekstu, a także do przeprowadzania analizy i syntezy morfologicznej w pracach naukowych i stosowanych w Instytucie Języka Litewskiego, na Uniwersytecie Witolda Wielkiego (tam jego prace otrzymały nazwę „Lemuoklis”) oraz na Uniwersytecie Wileńskim. Stworzono nawet wariant tego systemu przystosowany do analizy dawnego języka litewskiego (Gelumbeckaitė i in. 2012). Jednak wraz ze wzrostem potrzeb lingwistyki komputerowej zaczęły uwidaczniać się wady tego systemu: niestandardowe, nieopisane struktury danych; zamknięty kod; niepełna realizacja nazw własnych, iliatywu, liczby podwójnej, czasu przyszłego czasowników pierwotnych, form skróconych oraz rzadkich. Szczególnie dalszy rozwój tego systemu utrudniał zamknięty kod – dane i algorytm mógł w praktyce zmieniać wyłącznie sam autor. W celu uniknięcia wcześniej opisanych wad i stworzenia morfologii komputerowej języka litewskiego nowej generacji sformułowano następujące wymagania: 1) używać i tworzyć wyłącznie otwarty kod; 2) tylko dane, a nie ich forma i interpretacja, mogą mieć specyficzne cechy języka litewskiego; 3) cały kod programu musi być uniwersalny, odpowiedni dla każdego innego języka; 4) wykorzystać rozwiązania pomyślnie zastosowane w innych językach świata. Wyżej wymienionym wymaganiom dobrze odpowiada platforma Hunspell. Ponadto po opisaniu języka w 3 ten sposób można później bez trudu sprawdzać błędy ortograficzne w wielu (ponad 50) aplikacjach (OpenOffice, LibreOffice, Firefox, Chrome, Safari, InDesign itd.), przeprowadzać analizę morfologiczną i syntezę słów, wykonywać inteligentne wyszukiwanie informacji tekstowych itp. 3 Prieiga internete: https://en.wikipedia.org/wiki/Hunspell.
VIRGINIJUS DADURKEVIČIUS. Morfologia języka litewskiego na platformie Hunspell o otwartym BENDRINĖ KALBA 90 (2017) www.bendrinekalba.lt ISSN 2351-7204 kodzie źródłowym |3 W niniejszym artykule omówiono nową implementację morfologii języka litewskiego opartą na platformie Hunspell. Omówiono związane z tym problemy i sposoby ich rozwiązania, przedstawiono przykłady pomyślnego testowania i praktycznego zastosowania. 1. CECHY OPISU JĘZYKA LITEWSKIEGO W FORMACIE HUNSPELL 1.1. Przesłanki powstania platformy Hunspell i zasady ogólne Platforma open source Hunspell rozwinęła się z najprostszych narzędzi do sprawdzania pisowni, takich jak Ispell, Aspell, MySpell itp. Stopniowo zwiększając ich złożoność i 4 dostosowując je do coraz większej liczby języków (zwłaszcza aglutynacyjnych – fińskiego, 5 węgierskiego, tureckiego itp.), umożliwiono rozwiązywanie nie tylko zadań sprawdzania pisowni, 6 lecz także analizy i syntezy morfologicznej. Autorami tej niezwykle popularnej na świecie platformy są głównie naukowcy oraz inżynierowie-programiści pochodzenia węgierskiego (Trón i in. 2005). Nic dziwnego, że pierwszy człon jej nazwy „Hun-” pochodzi od angielskiej nazwy Węgier. Morfologię języka w platformie Hunspell opisują dwa pliki tekstowe: reguły odmiany zapisuje się z rozszerzeniem .aff, natomiast z rozszerzeniem .dic zapisuje się słownik form wyrazowych zawierający podstawową informację morfologiczną oraz odwołania do jednej lub kilku grup reguł odmiany, które mogą być dodatkowo stosowane. Pojedynczą regułę można sobie wyobrazić jako instrukcję, w której określono: 1) Co na co można zmieniać w wyrazie ze słownika form. Np. w regule SFX 85 čias ty [^š]čias is:Masc_Sg_Voc „SFX” oznacza, że zmieniana jest końcówka wyrazu, a można zmienić „–čias” na „–ty”. „PFX“ oznaczałoby, że zmieniany jest początek słowa. Zmiany w środku słowa nie są przewidziane. 2) Numer grupy reguł odmiany, do której przypisana jest ta reguła. Grupę może tworzyć jedna lub kilka reguł, które zawsze stosuje się łącznie. W poprzednim przykładzie reguła jest przypisana do grupy o numerze „85“. 3) Warunki, przy których zmiana jest możliwa (stosuje się pewien formalizm wyrażeń regularnych). W naszym przykładzie zmiana jest możliwa tylko pod warunkiem, że końcówka słowa z leksykonu form nie jest „–ščias“ (np. „vaikiščias“). 4) Informacja morfologiczna związana z tą zmianą. W naszym przykładzie z taką zmianą końcówki słowa wiąże się oznaczenie morfologiczne „Masc_Sg_Voc” (rodzaj męski, liczba pojedyncza, wołacz, np. „svety”). 4 Prieiga internete: https://www.cs.hmc.edu/~geoff/ispell.html. 5 Dostęp online: http://aspell.net. 6 Dostęp online: https://code.google.com/archive/a/apache-extras.org/p/ooo-myspell.
VIRGINIJUS DADURKEVIČIUS. Morfologia języka litewskiego na platformie hunspell o otwartym BENDRINĖ KALBA 90 (2017) www.bendrinekalba.lt ISSN 2351-7204 kodzie źródłowym |4 Z zasadami tworzenia reguł odmiany Hunspell i wskazywania informacji morfologicznej można zapoznać się bardziej szczegółowo na stronie internetowej tej 7 platformy, natomiast możliwości opisu morfologii różnych języków na tej platformie zostały dość dobrze zbadane w rozprawie doktorskiej Tommiego A. Pirinena (2014). 1.2. Specyficzne wymagania dotyczące realizacji języka litewskiego Aby taka formalizacja języka nadawała się do analizy morfologicznej, syntezy, indeksowania informacji tekstowej i wyszukiwania, należy spełnić dwa następujące wymagania: 1) w słowniku form wyrazowych mogą być zapisywane tylko lematy (formy hasłowe); 2) słowotwórstwo przedrostkowe, przyrostkowe i zwrotne musi być odzwierciedlone nie w pliku .aff, lecz w pliku .dic. Pierwszego wymagania nie jest łatwo spełnić w języku litewskim ze względu na dużą różnorodność odmiany czasowników (około 170 wariantów), ale w rozwiązaniu tego problemu pomogła możliwość platformy Hunspell polegająca na wywoływaniu jednej reguły odmiany z innej. Chociaż „głębokość” takich wywołań może wynosić tylko jeden, znacznie zmniejsza to rozmiar pliku reguł odmiany – z kilku milionów do kilkunastu tysięcy wierszy. Spełnienie drugiego wymagania nieco zwiększa rozmiar pliku .dic, ponieważ np. przedrostkowe–przyrostkowe–zwrotne derywaty tego samego rdzenia „imti”, „paimti”, „suimti” i „nesiimti” będą zapisywane w osobnych wierszach. I nie jest to jedyna negatywna konsekwencja tego wymagania – łatwo można się pomylić i nie uwzględnić jakiegoś rzadziej używanego derywatu czasownika lub przymiotnika. Prawdą jest, że problem ten jest dość szczegółowo rozwiązywany poprzez dobieranie leksemów przede wszystkim nie z opublikowanych słowników, lecz ze zgromadzonych korpusów tekstów. 1.3. Fragmenty litewskich plików .dic i .aff (przykłady) Kilka fragmentów litewskiego pliku .dic (słownika) z pogrubionymi odpowiednikami przykładowych słów Jonasa Jablonskisa pokazano na rysunku 2. 7 Dostęp online: https://github.com/hunspell/hunspell.
VIRGINIJUS DADURKEVIČIUS. Morfologia języka litewskiego na platformie open source hunspell |5 BENDRINĖ KALBA 90 (2017) www.bendrinekalba.lt ISSN 2351-7204 laukakmenis/118,122,132,137,141,145,157,159,9999 po:noun laukan po:adverb laukas/1,3,7,10,12,14,20,21,30,9999 po:noun Laukavičienė/738,740,745,9999 po:noun_family_name ... svečias/1467,1767,1775,1781,1784,1841,9999 po:adjective svečias/71,73,85,93,98,100,106,116,9999 po:noun svečiavimasis/1308,1310,1314,1315,1317,1319,9999 po:noun_reflexive Svečiulienė/738,740,745,9999 po:noun_family_name ... Gaidulis/118,122,132,141,145,157,9999 po:noun_family_name Gaidulytė/738,740,745,749,754,760,9999 po:noun_family_name gaidys/264,268,278,280,284,288,300,302,9999 po:noun Gaidys/264,268,278,284,288,300,9999 po:noun_family_name peilinis/2036,9999 po:adjective peilis/118,122,132,137,141,145,157,159,9999 po:noun peiliukas/1,3,8,10,12,14,20,21,30,9999 po:noun Peipus/444,446,452,9999 po:noun_geographic_name RYS. 2. Fragment ... pliku .dic form wyrazów. Liczby po ukośniku oznaczają odwołania do adresowanych grup reguł fleksyjnych. Na czerwono wyróżniono odwołania do grup reguł przedstawionych na RYS. 3. Na rys. 3 przedstawiono kilka fragmentów pliku .aff z regułami fleksji języka litewskiego: SFX 21 Y 1 SFX 21 as uosna . is:Masc_Pl_Il ... SFX 98 Y 2 SFX 98 as ai . is:Masc_Pl_Nom SFX 98 as ų . is:Masc_Pl_Gen ... SFX 264 Y 6 SFX 264 is is . is:Masc_Sg_Nom SFX 264 ys ys . jest:Masc_Sg_Nom SFX 264 is żio . jest:Masc_Sg_Gen SFX 264 ys żio . jest:Masc_Sg_Gen SFX 264 ai ai . jest:Masc_Pl_Nom SFX 264 ai ų . is:Masc_Pl_Gen ... SFX 145 Y 12 SFX 145 is iams . is:Masc_Pl_Dat SFX 145 ys iams . is:Masc_Pl_Dat SFX 145 is iam . is:Masc_Pl_Dat_short SFX 145 ys iam . is:Masc_Pl_Dat_short SFX 145 is ius . is:Masc_Pl_Acc SFX 145 ys ius . is:Masc_Pl_Acc SFX 145 is iais . is:Masc_Pl_Inst SFX 145 ys iais . is:Masc_Pl_Inst SFX 145 is iuose . is:Masc_Pl_Loc SFX 145 ys iuose . is:Masc_Pl_Loc SFX 145 is iuos . is:Masc_Pl_Loc_short SFX 145 ys iuos . is:Masc_Pl_Loc_short 3 RYS. Fragmenty pliku .aff reguł odmiany. Pogrubiono kilka reguł, które są dalej używane do zilustrowania analizy morfologicznej.
VIRGINIJUS DADURKEVIČIUS. Lietuvių kalbos morfologija atvirojo kodo hunspell platformoje |6 BENDRINĖ KALBA 90 (2017) www.bendrinekalba.lt ISSN 2351-7204 Po zastosowaniu opisu języka przedstawionego w przykładach i standardowych (niezależnych od języka) narzędzi analizy Hunspell otrzymalibyśmy dla przykładowych słów Jonasa Jablonskisa następującą odpowiedź (zob. rys. 4. ). RYS. 4. Przykład analizy morfologicznej wyrazów 2. PRZEBIEG PRACY I WYNIKI Gdy zostanie już sporządzony pełnowartościowy opis języka w formacie Hunspell (tj. utworzone zostaną odpowiednie pliki .dic i .aff), otwierają się praktycznie nieograniczone możliwości zastosowań praktycznych – począwszy od sprawdzania pisowni lub gramatyki, a skończywszy na inteligentnych systemach wyszukiwania informacji. Ze względu na dość złożoną morfologię języka litewskiego (wiele reguł i ich grup) oraz konieczność uzgodnienia listy lematów z dużymi korpusami (liczącymi ponad 1 mld słów), odzwierciedlającymi rzeczywisty stan współczesnego pisanego języka litewskiego, potrzeba było około 5 lat od pierwszych prób do stworzenia sprawnie działanego wariantu morfologii. Przykłady przedstawione wcześniej w tym artykule mają bardziej ilustracyjny charakter i służą jedynie zrozumieniu idei; w rzeczywistości reguły i ich grupy są znacznie bardziej złożone, zwłaszcza te związane z czasownikami. Aby przyspieszyć czas tworzenia morfologii i uniknąć błędów przy zapisywaniu tysięcy reguł oraz przypisywaniu ich lematom, początkowo utworzono pierwotny, bardziej abstrakcyjny niż wymagany w specyfikacjach Hunspell opis morfologii (reguły – w tabeli MS Excel, lematy i ich klasyfikacja – w bazie danych MS Access). Utworzono również narzędzia programowe do automatycznego przekształcania tych pierwotnych struktur, łatwiejszych do odczytania przez człowieka i prostszych do zrozumienia, w pliki .aff i .dic lub inną formę określoną przez specyfikę 8 zastosowania. Najnowsza wersja litewskich plików .aff i .dic jest dostępna na stronie autora w serwisie GitHub. W całym procesie formalizacji morfologii wykorzystywano następujące główne źródła: 8 Dostęp online: https://github.com/dadurka/hunspell_morphology_lt.
VIRGINIJUS DADURKEVIČIUS. Morfologia języka litewskiego na platformie open source hunspell |7 BENDRINĖ KALBA 90 (2017) www.bendrinekalba.lt ISSN 2351-7204 1) Gramatyka współczesnego języka litewskiego (DLKG 2006); 2) Vytauto Didžiojo universiteto (toliau – VDU) Dabartinės lietuvių kalbos tekstynas 9 – ~140 mln słów; 3) Korpus tłumaczeń maszynowych 10 Uniwersytetu Wileńskiego – ~800 mln słów, ~4 mln unikalnych; 4) dokumenty Sejmu Republiki 11 Litewskiej (dalej – LRS) – ~400 mln słów, ~1 mln. unikalnych; 5) Słownik współczesnego języka litewskiego (DŽ 2006) – ~60 tys. lem; 6) Słownik języka 12 litewskiego – ~500 tys. artykułów; 7) Słownik wyrazów międzynarodowych (VTŽŽe) – ~22 tys. lem; 8) Słownik litewskich nazwisk (LPŽ) (~80 tys. nazwisk). Łącznie utworzono około 5000 grup adresowalnych reguł (18 000 indywidualnych reguł). Sposób rozłożenia grup reguł według części mowy przedstawiono na rysunku 5. RYS. 5 Rozkład grup reguł fleksyjnych według części mowy. Plik .dic (słownik) został utworzony ze 171 000 lematów. Rozkład lematów według części mowy przedstawiono na rysunku 6. 9 Dostęp online: http://tekstynas.vdu.lt/tekstynas/. 10 Dostęp online: https://www.versti.eu/. 11 Dostęp online: http://www.lrs.lt/. 12 Dostęp online: http://www.lkz.lt/. Rzeczowniki (370) Przymiotniki (238) Liczebniki (55) Zaimki (64) Czasowniki (4161) Przysłówki (13)
VIRGINIJUS DADURKEVIČIUS. Morfologia języka litewskiego na platformie open source Hunspell |8 6 BENDRINĖ KALBA 90 (2017) www.bendrinekalba.lt ISSN 2351-7204 RYS. Rozkład lemów według części mowy błędnych, nielitewskich, niezalecanych, obraźliwych i Vykdant atranką buvo apsiribojama tiktai taisyklinga šiuolaikine lietuvių kalba ir vengiama nieużywanych słów. Rzeczowniki własne dzielono dodatkowo na nazwiska, imiona, nazwy geograficzne i inne przypadki. Taki dobór ułatwia zastosowanie stworzonej morfologii do sprawdzania pisowni i pozwala łatwiej wykorzystywać wyniki analizy na późniejszych etapach analizy tekstu (składnia, rozpoznawanie nazwanych jednostek, indeksowanie i wyszukiwanie). Dokładność nowo stworzonego analizatora morfologicznego wynosi około 98 proc., tzn. średnio 98 ze 100 słów analizator morfologiczny interpretuje poprawnie (Kapočiūtė-Dzikienė i in. 2017). Pozostałe 2 proc. nierozpoznanych słów stanowią najczęściej błędy ortograficzne, słowa z innych języków (imiona, nazwiska, cytaty frazowe itp.), słowa niezalecane i nienormatywne oraz poprawne słowa, które nie zostały uwzględnione na liście lemów. 3. ZASTOSOWANIE PRAKTYCZNE 3.1. System analizy składniowo-semantycznej VDU Nowo stworzona morfologia języka litewskiego na platformie Hunspell w latach 2011–2015 została zastosowana w systemie analizy składniowo-semantycznej VDU do sprawdzania pisowni i gramatyki oraz przeprowadzania 13 morfologicznej i składniowej analizy tekstu (zob. rys. 7). Analizę morfologiczną uzupełniono hybrydowym statystyczno-regułowym ujednoznacznianiem (ukryty model Markowa, prawdopodobieństwa trigramów aproksymowane według złotego standardu, algorytm Viterbiego, kilka wyjątków). Więcej o ujednoznacznianiu w analizie morfologicznej napisano w publikacji Jurgity Kapočiūtė-Dzikienė, Erikos Rimkutė i Loïca Boizou (2017). 13 Dostęp online: http://semantika.lt/SyntaticAndSemanticAnalysis/Analysis. Rzeczowniki (pospolite) (41820) Rzeczowniki (własne) (73697) Przymiotniki (14552) Liczebniki (153) Zaimki (53) Czasowniki (34662) Przysłówki (3850) Inne (2290)
VIRGINIJUS DADURKEVIČIUS. Morfologia języka litewskiego na platformie Hunspell o otwartym kodzie BENDRINĖ KALBA 90 (2017) www.bendrinekalba.lt ISSN 2351-7204 źródłowym |9 7 RYS. Zastosowanie morfologii języka litewskiego Hunspell w systemie analizy składniowo-semantycznej VDU 3.2. System wyszukiwania w rejestrze aktów prawnych LRS W latach 2011–2013 równolegle z tworzeniem nowej morfologii języka litewskiego trwało jej wdrażanie w systemie wyszukiwania w Rejestrze Aktów Prawnych w kancelarii LRS. Zazwyczaj w 14 takich systemach wszystkie słowa dokumentów są zamieniane na ich lematy i zapamiętywane jest, sistemose dar prieš vykdant pirmąją paiešką visi dokumentai yra indeksuojami lemuojant, t. y. gdzie znajdował się który lemat. Przed wykonaniem zapytania wyszukiwawczego jego tekst również jest lematyzowany w ten sam sposób, dlatego później znajduje się nie tylko forma słowa zapisana w zapytaniu, lecz także każda inna forma tego słowa występująca wśród wyszukiwanych dokumentów. Ponieważ w tym systemie nie można było bezpośrednio wykorzystać danych .dic i .aff, wymagany przez system oryginalny format (plik tekstowy, w którym każdy wiersz ma postać [lemat] [część mowy] [lista form]) był generowany na podstawie wspomnianego wcześniej pierwotnego opisu morfologii. Chociaż na podstawie tego opisu można wygenerować około 15 mln teoretycznie możliwych form wyrazów, z powodu wewnętrznych ograniczeń systemu wyszukiwania wykorzystano z nich tylko około 1 mln najczęstszych. Takie rozwiązanie się sprawdziło, wyszukiwanie działa dość sprawnie i jest używane do dziś (zob. rys. 8). 14 Dostęp online: https://www.e-tar.l.t
