Begränsad grammatik
Constraint grammatik ( CG ) är ett metodologiskt paradigm för naturlig språkbehandling (NLP). Lingvistskrivna, kontextberoende regler sammanställs till en grammatik som tilldelar grammatiska taggar ("läsningar") till ord eller andra symboler i löpande text. Typiska taggar adresserar lemmatisering ( lexem eller basform ), inflexion , härledning , syntaktisk funktion , beroende, valens , kasusroller , semantisk typ etc. Varje regel lägger antingen till, tar bort, väljer eller ersätter en tagg eller en uppsättning grammatiska taggar i en given meningssammanhang. Kontextvillkor kan kopplas till valfri tagg eller tagguppsättning av vilket ord som helst i meningen, antingen lokalt (definierade avstånd) eller globalt (odefinierade avstånd). Kontextvillkor i samma regel kan vara länkade, dvs. betingade av varandra, negerade eller blockerade av störande ord eller taggar. Typiska CG består av tusentals regler, som tillämpas set-wise i progressiva steg, som täcker allt mer avancerade nivåer av analys. Inom varje nivå används säkra regler före heuristiska regler, och ingen regel får ta bort den sista läsningen av ett givet slag, vilket ger en hög grad av robusthet.
CG-konceptet lanserades av Fred Karlsson 1990 (Karlsson 1990; Karlsson et al., eds, 1995), och CG-taggare och parsers har sedan dess skrivits för en mängd olika språk, vilket rutinmässigt har uppnått noggrannhet i F-poäng för del av tal . (ordklass) på över 99 %. Ett antal syntaktiska CG-system har rapporterat F-poäng på cirka 95 % för syntaktiska funktionsetiketter. CG-system kan användas för att skapa fullständiga syntaktiska träd i andra formalismer genom att lägga till små, icke-terminalbaserade frasstrukturgrammatiker eller beroendegrammatiker , och ett antal Treebank -projekt har använt CG för automatisk annotering. CG-metodik har också använts i ett antal språkteknologiska tillämpningar, såsom stavningskontroller och maskinöversättningssystem .
Regelsyntax och format
En Constraint Grammar-parser förväntar sig som indata en ström av morfologiskt analyserade tokens, vanligtvis producerade av en Finite-state-transducer -baserad analysator (vanliga är Xerox-verktygen twolc/lexc/xfst, HFST eller Apertiums lttoolbox). Varje token kan vara tvetydig och ha många avläsningar , ytformen med alla dess avläsningar kallas en kohort . Nedan är ett möjligt exempel på analys av ", och X var som "" i inmatningsformatet förväntat av VISL CG-3:
"<,>" "," cm " " "och" conj " " "X" num pl "X" substantiv prop " " "vara" verb past p1 sg "be" verb past p3 sg " " "gilla" adj "gilla" subj "gilla" pr "gilla" verb inf "gilla" verb pres "gilla" verb imp "<“>" "“" lquot
Det här utdraget visar 5 kohorter, var och en med en eller flera avläsningar. Ytordsformerna står i "<vinkelcitat>"
medan lemman/basformerna står i vanliga "citattecken"
följt av en uppsättning taggar utan citat, och vi ser att vissa kohorter har flera läsningar, dvs. är tvetydiga ( "<gilla>"
är tvetydigt mellan 6 avläsningar). CG-parserns uppgift är nu att 1) ta bort så många felaktiga avläsningar som det är säkert att göra med tanke på sammanhanget, 2) valfritt applicera en eller flera syntaktiska funktionsetiketter på varje kohort (eller till och med beroenderelationer) och 3) disambiguera tillämpade etiketter/relationer.
Nedan är en exempelregel (igen i VISL CG-3-format) för att välja tredje persons läsning av "var" (genom att ta bort förstapersonsläsningen), med tanke på att det inte finns något förstapersonspronomen till vänster:
REMOVE (verb p1) IF (0C (verb)) (NEGATE *-1 (prn p1)) ;
Här (verb p1)
är en uppsättning taggar (ordning spelar ingen roll) som måste matcha läsningen vi tar bort. Efter att IF
följer en lista med noll eller fler begränsningar säger den första att i denna kohort (position 0) har
alla avläsningar (kvalificeraren C
, för Careful) tagverbet . Den andra begränsningen säger att om det finns en kohort som är minst ett ord till vänster (position *-1
, * betyder att vi kan
gå längre än ett ord och -
betyder vänster) och den kohorten är ett förstapersonspronomen, då begränsningen matchar *inte* ( NEGATE )
.
I CG-3 kan regler även ges namn, t.ex. SELECT:somename (…) IF
, som visas i spårningsutgången.
En regel kan också välja en enskild avläsning om vi är säkra på att alla andra avläsningar måste vara fel med tanke på begränsningarna:
SELECT:quoting ("gilla" subj) IF (-1 (" ")) (1 (lquot) ELLER (":"));
I den här regeln ser vi att vi kan hänvisa till både ordformer och basformer i taggset (de behandlas precis som vilken annan tagg, och en läsning kommer alltid att matcha dess ordform). Här använder den andra begränsningen OR
för att kombinera två tagguppsättningar. Om denna uppsättning är vanligt förekommande kan vi ge den ett namn och använda namnet – utan parentes – så här:
LIST prequote = lquot ":" ; SELECT:quoting ("gilla" subj) IF (-1 (" ")) (1 förcitat);
En ekvivalent definition skulle vara SET prequote = (lquot) OR (":");
.
Efter att ha kört ovanstående regler borde vi sluta med detta:
"<,>" "," cm " " "och" conj " " "X" num pl "X" substantiv prop " " "vara" verb förbi p3 sg " " "gilla" subj "<">" """ lquot
Om vi använde --trace
, skulle vi se de borttagna avläsningarna med en initial ;
, och regelns namn och radnummer varhelst den gällde för en avläsning.
Regelsyntaxen för att lägga till syntaktiska funktionsetiketter följer ett liknande schema med "gör detta om x, y och z":
LIST nominal = substantiv prn ; ADD (@SUBJ) IF (NEGATE *-1 nominell) (0C (prop)) (1C finiteverb) ;
Detta kallas en "mappningsregel", och vi kan sluta med flera sådana mappningstaggar per kohort, i vilket fall vi kan disambiguera med samma SELECT/REMOVE-regler.
Genomföranden
CG-1
Den första implementeringen av CG var CGP av Fred Karlsson i början av 1990-talet. Det var rent LISP -baserat och syntaxen baserades på LISP s-uttryck (Karlsson 1990).
CG-2
Pasi Tapanainens CG-2-implementering mdis tog bort några av parenteserna i grammatikformatet och implementerades i C++, vilket tolkade grammatiken som en finita tillståndsgivare för hastighet.
CG-2 omimplementerades senare (med en icke-FST-metod) av VISL-gruppen vid Syddansk Universitet som öppen källkod VISL CG [1] , med samma format som Tapanainens mdis med stängd källkod .
CG-3
VISL-projektet förvandlades senare till VISL CG-3, vilket medförde ytterligare ändringar och tillägg till grammatikformatet, t.ex.
- fullständigt Unicode- stöd genom International Components for Unicode
- annan tolkning av negation (NOT)
- namngivna relationer utöver vanliga beroendeförhållanden
- variabel inställning
- fullständig matchning av regex
- tag/uppsättning förening –
LIST gen = mf; SELECT (det) + $$gen IF (1 substantiv) (1 $$gen);
kommer att välja bestämaren som har samma kön som följande substantiv - omslag för att läsa/skriva Apertium- och HFST -format
- stöd för underläsningar (där en läsning har flera "delar", används för uttryck och sammansättningar med flera ord)
- skanna förbi ursprungspunkten eller till och med fönstergränser
- använda som bibliotek och stöd för integration med externa processer
Det finns också enkel IDE för CG-3 utvecklad av VISL, [2] som ger syntaxmarkering och låter dig se in- och utdata och möjliga fel när du skriver din grammatik. Det finns också ett Emacs- läge cg.el
[3] med liknande funktioner och enkel kodnavigering.
Till skillnad från Tapanainen-implementeringen använder VISL-implementeringarna inte finita tillståndsgivare. Reglerna är ordnade inom sektioner, vilket ger mer förutsägbarhet när man skriver grammatik, men till priset av långsammare analys och möjlighet till oändliga loopar.
Det har förekommit experimentella FST-baserade omimplementeringar med öppen källkod av CG-2 som för små grammatiker når hastigheten för VISL CG-3, om inte mdis .
Lista över system
- Gratis mjukvara
- VISL CG-3 Cgrammar kompilator/parser
-
Nord- och lulesamiska , färöiska , komiska och grönländska från universitetet i Tromsø ( mer information , nordsamisk dokumentation )
- Fred Karlssons finska originalfinCG finns även tillgänglig från universitetet i Tromsø som GPL, både i original CG1 och i en konverterad CG3- version .
- estniska [4]
- Norsk nynorsk och bokmål online , Oslo-Bergen taggare ( källkod )
- Breton , walesisk , irländsk gaelisk och norsk (omvandlat från ovan) i Apertium (se CG i Apertium )
- Icke-fri programvara
- baskiska [5]
- Katalanska CATCG
- danska DanGram
- Engelska ENGCG , ENGCG-2 , VISL-ENGCG
- Esperanto EspGram
- franska FrAG
- tyska GerGram
- irländska online
- Italienska ItaGram
- Spanska HISPAL
- Svenska SWECG
- Swahili
- Portugisiska PALAVRAS
- ^ För engelska, se till exempel Tapanainen och Voutilainen 1994.
- ^ Tapanainen, Pasi 1996: The Constraint Grammar Parser CG-2. Helsingfors universitets publikationer nr 27.
- ^ Nemeskey, DM, Tyers, FM och Hulden, M. (2014) "Why Implementation Matters: Evaluation of an Open-source Constraint Grammar Parser". Proceedings of the 25th International Conference on Computational Linguistics (COLING 2014) (kommer att visas)
- Bick, Eckhard. 2000. Parsingsystemet "Palavras": Automatisk grammatisk analys av portugisiska i ett ramverk för grammatik med begränsningar . Aarhus: Aarhus University Press. ISBN 87-7288-910-1 .
- Karlsson, Fred. 1990. Constraint Grammar as a Framework for Parsing Unrestricted Text. H. Karlgren, red., Proceedings of the 13th International Conference of Computational Linguistics, Vol. 3. Helsingfors 1990, 168-173.
- Karlsson, Fred, Atro Voutilainen, Juha Heikkilä och Arto Anttila, redaktörer. 1995. Constraint Grammar: A Language-Independent System for Parsing Unrestricted Text . Natural Language Processing, nr 4. Mouton de Gruyter, Berlin och New York. ISBN 3-11-014179-5 .
- Tapanainen, Pasi och Atro Voutilainen 1994: Märkning korrekt: gissa inte om du vet . ANLC '94 Proceedings of the fourth conference on Applied natural language processing.
externa länkar
- CG Tutorial av Kevin Donnelly
- VISL CG-3 , grammatikkompilatorn/parsern
- Lista över vissa Constraint Grammar-publikationer (åtminstone fram till 2010)