Ramy gramatyczne
Grammatical Framework ( GF ) to język programowania do pisania gramatyk języków naturalnych. GF jest w stanie analizować i generować teksty w kilku językach jednocześnie, pracując z niezależną od języka reprezentacją znaczenia. Gramatyki napisane w GF można kompilować do formatu niezależnego od platformy, a następnie używać z różnych języków programowania, w tym C i Java , C# , Python i Haskell . Towarzyszem GF jest GF Resource Grammar Library , biblioteka wielokrotnego użytku do radzenia sobie z morfologią i składnią rosnącej liczby języków naturalnych.
Zarówno sam GF, jak i GF Resource Grammar Library są open-source . Typologicznie GF jest funkcjonalnym językiem programowania. Z matematycznego punktu widzenia jest to system formalny oparty na teorii typów (a dokładniej ramy logiczne ) oparty na intuicjonistycznej teorii typów Martina-Löfa , z dodatkowymi osądami dostosowanymi specjalnie do dziedziny lingwistyki.
Funkcje językowe
- system typu statycznego , do wykrywania potencjalnych błędów programistycznych
- programowanie funkcyjne dla potężnych abstrakcji
- wsparcie dla bibliotek pisania, które mają być używane w innych gramatykach
- narzędzia do ekstrakcji informacji , aby przekształcić zasoby językowe w GF
Instruktaż
Cel: napisać wielojęzyczną gramatykę wyrażania stwierdzeń o miłości Jana i Marii.
Moduły abstrakcyjne i konkretne
W GF gramatyki są podzielone na dwa typy modułów:
- moduł abstrakcyjny , zawierający formuły osądów
cat
ifun
.-
kotów
lub kategorii wymieniają kategorie, tj. wszystkie możliwe typy drzew, jakie mogą istnieć. -
fun
lub deklaracje funkcji określają funkcje i ich typy , muszą być one zaimplementowane przez konkretne moduły (patrz poniżej).
-
- jeden lub więcej konkretnych modułów zawierających formularze oceny
lincat
ilin
.-
lincat
lub definicje typu linearyzacji , określają, jaki typ obiektów tworzy linearyzacja dla każdej kategorii wymienionej wcat
. -
reguły
lin
lub linearyzacji implementują funkcje zadeklarowane wfun
. Mówią, jak drzewa są linearyzowane.
-
Rozważ następujące:
Składnia abstrakcyjna
streszczenie Zero = { kot S ; NP ; wiceprezes ; V2 ; zabawa Pred : NP -> VP -> S ; Compl : V2 -> NP -> VP ; Jan , Maria : NP ; Miłość : V2 ; }
Konkretna składnia: angielski
konkretny ZeroEng od Zero = { lincat S , NP , VP , V2 = Str ; lin Pred np vp = np ++ vp ; Compl v2 np = v2 ++ np ; Jan = "Jan" ; Maryja = „Maryja” ; Miłość = „kocha” ;
}
Uwaga: Str
(token list lub „string”) jako jedyny typ linearyzacji.
Tworzenie gramatyki wielojęzycznej
Pojedynczą abstrakcyjną składnię można zastosować do wielu konkretnych składni, w naszym przypadku po jednej dla każdego nowego języka naturalnego, który chcemy dodać. Ten sam system drzew można podać:
- różne słowa
- różne szyki słów
- różne typy linearyzacji
Konkretna składnia: francuski
konkretny ZeroFre od Zero = { lincat S , NP , VP , V2 = Str ; lin Pred np vp = np ++ vp ; Compl v2 np = v2 ++ np ; Jan = „Jean” ; Maria = „Maria” ; Miłość = „cel” ;
}
Tłumaczenie i wielojęzyczne pokolenie
Możemy teraz używać naszej gramatyki do tłumaczenia zwrotów między francuskim a angielskim. W powłoce interaktywnej GF można wykonać następujące polecenia.
Importuj wiele gramatyk z tą samą składnią abstrakcyjną
> importuj ZeroEng.gf ZeroFre.gf Języki: ZeroEng ZeroFre
Tłumaczenie: linearyzacja potoku na parsowanie
> parse -lang=Pol „Jan kocha Maryję” | linearize -lang=Fre Jean Aime Marie
Generowanie wielojęzyczne: linearyzacja we wszystkich językach
> generuj_losowo | linearize -treebank Zero: Pred Mary (Compl Love Mary) ZeroEng: Mary kocha Mary ZeroFre: Marie Aime Marie
Parametry, tabele
Łacina ma przypadki : mianownik dla podmiotu, biernik dla dopełnienia.
- Ioannes Mariam amat „John-Nom kocha Mary-Acc”
- Maria Ioannem amat „Mary-Nom kocha Johna-Acc”
Używamy typu parametru dla wielkości liter (tylko 2 z 6 przypadków łacińskich). Typ linearyzacji NP jest typem tablicowym : od Case
do Str
. Linearyzacja Johna
jest tablicą przegięcia . Używając NP, wybieramy ( ! )
odpowiedni przypadek z tabeli.
Konkretna składnia: łac
konkretny ZeroLat od Zero = { lincat S , VP , V2 = Str ; NP = przypadek => str ; lin Pred np vp = np ! nom ++ vp ; Compl v2 np = np ! Acc ++ v2 ; Jan = tabela { Nom =>
„Joannes” ; Acc => "Ioannem" } ; Maria = stół { Nom => "Maria" ; Acc => "Mariam" } ; miłość = "amat" ; parametr Przypadek = Nom | Acc ; }
Składniki nieciągłe, zapisy
W języku niderlandzkim czasownik heeft lief jest składnikiem nieciągłym. Typ linearyzacji V2
jest typem rekordu z dwoma polami . Linearyzacja Miłości
jest zapisem . Wartości pól są wybierane przez projekcję ( .
)
Konkretna składnia: niderlandzka
konkretny ZeroDut od Zero = { lincat S , NP , VP = Str ; V2 = { v : Str ; p : Str } ; lin Pred np vp = np ++ vp ; Compl v2 np = v2 . v ++ np ++ v2 . P
; Jan = "Jan" ; Maria = „Maria” ; Miłość = { v = "wysokość" ; p = "wierzenie" } ; }
Zmienne i nieodłączne funkcje, umowa, obsługa Unicode
Dla hebrajskiego NP ma nieodłączną cechę płci – pole w zapisie. VP ma płeć jako swoją zmienną cechę – argument tabeli. W orzekaniu VP otrzymuje płeć NP.
Konkretna składnia: hebrajski
konkretny ZeroHeb z Zero = { kodowanie flag = utf8 ; lincat S = Str ; NP = { s : Str ; g : Płeć } ; VP , V2 = Płeć => Str ; lin Pred np vp = np . s ++ vp ! np
. g ; Compl v2 np = table { g => v2 ! g ++ "את" ++ np . s } ; Jan = { s = "ג׳ון" ; g = maska } ; Maria = { s = "מרי" ; g = Fem } ; Miłość =
table { Masc => "אוהב" ; Fem => "אוהבת" } ; param Płeć = Maska | Kobieta ; }
Wizualizacja drzew analizy
GF ma wbudowane funkcje, których można użyć do wizualizacji drzew analizy i wyrównania słów.
Następujące polecenia wygenerują drzewa analizy dla podanych fraz i otworzą utworzony obraz PNG za pomocą systemowego polecenia eog
.
> parse -lang=Pol „Jan kocha Maryję” | visualize_parse -view="eog" > parse -lang=Dut "Jan heeft Marie Lief" | visualize_parse -view="eog"
Generowanie wyrównania słów
- W językach L1 i L2: połącz każde słowo z jego najmniejszym rozpinającym poddrzewem.
- Usuń pośrednie drzewo, łącząc linki bezpośrednio z L1 do L2.
Ogólnie rzecz biorąc, daje to wyrównanie frazy. Linki mogą się krzyżować, frazy mogą być nieciągłe. Komenda align_words
ma podobną składnię:
> parse -lang=Fre "Marie Aime Jean" | align_words -lang=Fre,Dut,Lat -view="eog"
Biblioteka gramatyki zasobów
W aplikacjach języka naturalnego biblioteki są sposobem radzenia sobie z tysiącami szczegółów związanych ze składnią, leksykonem i fleksją. GF Resource Grammar Library to standardowa biblioteka dla Grammatic Framework. Obejmuje morfologię i podstawową składnię coraz większej liczby języków, w tym obecnie afrykanerski, amharski (częściowy), arabski (częściowy), baskijski (częściowy), bułgarski, kataloński, chiński, czeski (częściowy), duński, niderlandzki, angielski, estoński, fiński, francuski, niemiecki, starożytna greka (częściowo), współczesna greka, hebrajski (fragmenty), hindi, węgierski (częściowo), interlingua, włoski, japoński, koreański (częściowo), łacina (częściowo), łotewski, maltański, mongolski , nepalski, norweski bokmål, norweski nynorsk, perski, polski, pendżabski, rumuński, rosyjski, sindhi, słowacki (częściowy), słoweński (częściowy), somalijski (częściowy), hiszpański, suahili (fragmenty), szwedzki, tajski, turecki (fragmenty) ) i urdu. Ponadto 14 języków ma leksykon WordNet i rozszerzenia analizujące na dużą skalę.
Pełną dokumentację API biblioteki można znaleźć na stronie RGL Synopsis . Dokument statusu RGL podaje języki aktualnie dostępne w Bibliotece gramatyki zasobów GF, w tym ich dojrzałość.
Zastosowania GF
GF powstał po raz pierwszy w 1998 roku w Xerox Research Center Europe , Grenoble, w ramach projektu Multilingual Document Authoring. W firmie Xerox wykorzystano go do stworzenia prototypów, w tym rozmówek restauracyjnych, systemu zapytań do bazy danych, sformalizowania instrukcji systemu alarmowego z tłumaczeniami na 5 języków oraz systemu autorskiego opisów leków.
Późniejsze projekty wykorzystujące GF i angażujące osoby trzecie obejmują:
- REMU : Reliable Multilingual Digital Communication, projekt finansowany przez Szwedzką Radę ds. Badań Naukowych w latach 2013–2017.
- MOLTO : wielojęzyczne tłumaczenie online, projekt UE realizowany w latach 2010–2013.
- SALDO : Szwedzki słownik morfologiczny oparty na regułach opracowanych dla GF i morfologii funkcjonalnej
- WebAlt : wielojęzyczne generowanie ćwiczeń matematycznych (projekt komercyjny)
- TALK: wielojęzyczne i multimodalne systemy dialogu mówionego
Pod względem naukowym GF był używany w wielu rozprawach doktorskich i zaowocował wieloma publikacjami naukowymi ( niektóre z nich można znaleźć na liście publikacji GF ).
Komercyjnie GF był używany przez wiele firm w takich dziedzinach, jak handel elektroniczny, opieka zdrowotna i tłumaczenie specyfikacji formalnych na język naturalny.
Wspólnota
Lista mailingowa deweloperów
Istnieje aktywna grupa zarówno dla programistów, jak i użytkowników GF, znajdująca się pod adresem https://groups.google.com/group/gf-dev
Szkoły letnie
2020 – GF jako źródło prawa obliczeniowego (Singapur)
Siódma szkoła letnia GF , przełożona z powodu COVID-19, odbędzie się w Singapurze. Szkoła letnia, współorganizowana z Centrum Prawa Obliczeniowego Singapurskiego Uniwersytetu Zarządzania, będzie koncentrować się w szczególności na prawie obliczeniowym.
2018 – Szósta Letnia Szkoła GF (Stellenbosch, RPA)
Szósta szkoła letnia GF była pierwszą zorganizowaną poza Europą. Głównymi tematami letniej szkoły były afrykańskie zasoby językowe oraz rosnące wykorzystanie GF w zastosowaniach komercyjnych.
2017 – GF in a Full Stack of Language Technology (Ryga, Łotwa)
Piąta szkoła letnia GF odbyła się w Rydze na Łotwie. W tej szkole letniej wzięło udział wielu uczestników ze startupów, którzy zaprezentowali przemysłowe zastosowania GF.
2016 – Summer School in Rule-Based Machine Translation (Alicante, Hiszpania)
GF była jedną z czterech platform zaprezentowanych podczas Summer School in Rule-Based Machine Translation , obok Apertium, Matxin i TectoMT.
2015 – Czwarta Szkoła Letnia GF (Gozo, Malta)
Czwarta szkoła letnia GF odbyła się na wyspie Gozo na Malcie. Podobnie jak w poprzedniej edycji z 2013 roku, ta letnia szkoła obejmowała współpracę z innymi zasobami, takimi jak Apertium i FrameNet.
2013 – Zwiększanie zasobów gramatycznych (jezioro Chiemsee, Niemcy)
Trzecia letnia szkoła GF odbyła się na wyspie Frauenchiemsee w Bawarii w Niemczech ze specjalnym tematem „Skalowanie zasobów gramatycznych”. Ta letnia szkoła koncentrowała się na rozszerzeniu istniejących gramatyk zasobów z ostatecznym celem radzenia sobie z dowolnym tekstem w obsługiwanych językach. Rozszerzenie leksykonu jest oczywistą częścią tej pracy, ale interesujące były również nowe konstrukcje gramatyczne. Istniało szczególne zainteresowanie przenoszeniem zasobów z innych podejść typu open source, takich jak WordNets i Apertium, oraz wzajemnym ułatwianiem ponownego wykorzystania zasobów GF w innych podejściach.
2011 – Granice technologii wielojęzycznych (Barcelona, Hiszpania)
Druga letnia szkoła GF , z podtytułem Frontiers of Multilingual Technologies, odbyła się w 2011 roku w Barcelonie w Hiszpanii. Został on sponsorowany przez CLT , Centrum Technologii Językowych Uniwersytetu w Göteborgu oraz UPC , Universitat Politècnica de Catalunya. Szkoła zajęła się nowymi językami, a także promowała trwające prace nad tymi językami, które są już w budowie. Szczególnie zachęcano do braku języków UE.
Szkoła rozpoczęła się od 2-dniowego samouczka GF, przeznaczonego dla osób zainteresowanych wprowadzeniem do GF lub przeglądem bieżącej pracy.
Wszystkie wyniki szkoły letniej są dostępne jako oprogramowanie open source na licencji LGPL.
2009 – Letnia Szkoła GF (Göteborg, Szwecja)
Pierwsza letnia szkoła GF odbyła się w 2009 roku w Göteborgu w Szwecji. To był wspólny wysiłek, aby stworzyć gramatyki nowych języków w Grammatical Framework, GF. Te gramatyki zostały dodane do Biblioteki gramatyki zasobów, która wcześniej zawierała 12 języków. W przygotowaniu jest już około 10 nowych języków, a Szkoła zamierzała zająć się 23 nowymi językami. Wszystkie wyniki Szkoły Letniej zostały udostępnione jako oprogramowanie typu open source na licencji LGPL.
Szkoła letnia została zorganizowana przez Zespół Technologii Językowych na Wydziale Informatyki i Inżynierii . Grupa jest częścią Centrum Technologii Językowych , głównego obszaru badawczego Uniwersytetu w Göteborgu .
Kod stworzony przez uczestników szkoły jest udostępniany w repozytorium GF darcs, podkatalog contrib/summerschool .