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

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 i fun .
    • 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 i lin .
    • lincat lub definicje typu linearyzacji , określają, jaki typ obiektów tworzy linearyzacja dla każdej kategorii wymienionej w cat .
    • reguły lin lub linearyzacji implementują funkcje zadeklarowane w fun . 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"  
Parse tree for "John loves Mary" Parse tree for "Jan heeft Marie lief"

Generowanie wyrównania słów

  1. W językach L1 i L2: połącz każde słowo z jego najmniejszym rozpinającym poddrzewem.
  2. 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"
Wyrównanie słów dla „Marie Aime Jean” w języku francuskim, niderlandzkim i łacińskim

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)

Zdjęcie grupowe z Letniej Szkoły GF 2009 w Göteborgu, 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 .

Linki zewnętrzne