DAB760: Språk och logik 15/4: Finita automater i 15-17 språkteknologi Leif Grönqvist (leif.gronqvist@msi.vxu.se) Växjö Universitet (MSI) GSLT (Sveriges nationella forskarskola i språkteknologi) Göteborg Universitet (Institutionen för lingvistik) Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck Dagens föreläsning XEROX finite-state-verktyg: XFST Några exempel bland annat från XEROX webbsida Morfologi Fransk vokalförändring Substantivfraser Grammatikkontroll Stavelseuppdelning Taligenkänning Soundex Översättning mellan romerska och arabiska tal Einsteins puzzel Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck XEROX verktyg Xerox har en gratisversion av sin FST-kompilator på nätet: http://www.xrce.xerox.com/competencies/content-analysis/fsCompiler/fsinput.html# En mer utvecklad version som kan hantera större automater finns att köpa Xerox Finite-State Compiler utvecklades av Tamás Gaál, Ronald M. Kaplan, Lauri Karttunen, André Kempe Några praktiska operatorer har lagts till: A .x. B : Kryssprodukt för språken A och B .#. : Början/slut av sträng A -> B || L _ R : Ersätt A (i övre språket) med B (i undre) i kontexten: efter språket L och före R % används före specialtecken, t.ex. mellanslag Läs i dokumenten på XEROX hemsida för en fullständig lista Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck Morfologisk kodning En transduktor (Lauri Karttunen. 1994. Constructing Lexical Transducers) Ger en möjlighet att översätta mellan grundform+analys (övre språk) ytform i texten (undre språk) Ett litet exempel från XEROX webbsida: [ [l e a v e VBZ .x. l e a v e s] | [l e a v e VB .x. l e a v e] | [l e a v e VBG .x. l e a v i n g] | [l e a v e VBD .x. l e f t] | [l e a v e NN .x. l e a v e] | [l e a v e NNS .x. l e a v e s] | [l e a f NNS .x. l e a v e s ] | [l e f t JJ .x. l e f t] ] Kan matas in direkt i XEROX finite-state-kompilator Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck Resulterande nätverk 16 states, 22 arcs, 8 paths. Sigma: a e f g i l n s t v JJ NN NNS VB VBD VBG VBZ s0: l -> s1. s1: e -> s2. s2: a -> s3, f -> s4, <a:f> -> s5. s3: v -> s6, <f:v> -> s7. s4: t -> s8. s5: <v:t> -> s9. s6: e -> s10, <e:i> -> s11. s7: <NNS:e> -> s12. s8: <JJ:0> -> fs13. s9: <e:0> -> s14. s10: <NN:0> -> fs13, <NNS:s> -> fs13, <VB:0> -> fs13, <VBZ:s> -> fs13. s11: <VBG:n> -> s15. s12: <0:s> -> fs13. fs13: (no arcs) s14: <VBD:0> -> fs13. s15: <0:g> -> fs13. Växjö 15 april -04 Språk & logik: Reguljära uttryck
Morfologiskt lexikon som FST Resultatet från XEROX FST-kompilator är: Deterministiskt med avseende på par av strängar Epsilonfri (inga bågar med enbart epsilon) Minimal Icke-deterministiskt vid uppslagning Ger flera svar för en sträng “Slå upp åt båda håll” Stora lexikon lagras ganska kompakt Kanske den vanligaste användningen av FST Växjö 15 april -04 Språk & logik: Reguljära uttryck
Vokalförändring i olika kontexter Exemplet handlar om reduktioner i franska I vissa kontexter försvinner ‘e’ i “le” och “de”. Regel: [[ e % ] -> ' || [% |.#.] [c|d|l|s] _ [A|E|I|O|U|H|a|e|i|o|u|h]] “de le” reduceras ibland till “du”: [[ d e % l e] -> d u || [% |.#.] _ [% |.#.]] Reglerna komponeras ihop med hjälp av kompositionsoperatorn .o. Växjö 15 april -04 Språk & logik: Reguljära uttryck
Substantivfras-parser Jobbar på ordklassnivå Markerar början och slut på substantivfraser Ett simpelt exempel för att visa idén Ordklasserna är: a=adjektiv, d=determinerare, n=substantiv, v=verb “Många små katter gillar mjölk” representeras som “danvn” [(d) a* n+ @-> %{ ... %}] definierar en enkel uppmärkare “@->”-operatorn ser till att längsta frasen som matchar uttrycket markeras d? skrivs (d) i XEROX-syntax Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck Resulterande FST [(d) a* n+ @-> %{ ... %}] ger ett nät med 8 tillstånd och 28 övergångar Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck Grammatikkontroll Det vanligaste sättet att hitta fel i skriven text är att Formulera regler som letar fel, exempelvis kongruensfel, meningar som saknar subjekt osv. Ett annat sätt är att använda FST på ett listigt sätt: Definiera en grov grammatik som inte tittar på komplicerade beroenden mellan delar av meningar Definiera en finkornig grammatik inklusive de beroenden som skall gälla när det gäller kongruens, mm. Nu har vi två språk, dvs två (oändliga) mängder av strängar En grammatik för felaktiga strängar fås genom att subtrahera den finkorninga grammatiken från den grova! Denna beskriver hur fel ser ut, baserat på vad vi anser vara rätt Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck Stavelseuppdelning En stavelse i finska kan beskrivas som [C* V+ C*] där C är en konsonant och V en vokal En enkel transduktor definieras som: [C* V+ C*] @-> ... "-" || _ [C V] Med definitioner av C och V ger uppslagning med strängen “strukturalismi” ur övre språket resultatet: struk-tu-ra-lis-mi Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck Taligenkänning En taligenkännare består av flera resurser: En akustisk modell som ger sannolikheter för att en mycket kort ljudsekvens svarar mot ett visst språkljud Modeller för olika ords uttalsvarianter Metoder för att beskriva skillnaden mellan olika talare (dialekter, röst, mm.) Modeller som beskriver vilka kontexter olika ord brukar förekomma i Dessa resurser är av väldigt olika typ men kan paketeras genom att: Transformera dem till finita transduktorer Sätta ihop dem till en stor transduktor med hjälp av komposition Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck Soundex Liknande namn som Johnson, Johnsen, Johansson, Johanson och Johansen är lätta att förväxla Soundex-algoritmen beräknar ett värde för varje sträng som sedan kan jämföras. Namnen ovan får samma värde Donald Knuths beskrivning av Soundex: Retain the first letter of the name, and drop all occurrences of a, e, h, i, o, u, w, y in other positions. Assign the following numbers to the remaining letters after the first: b, f, p, v -> 1, c, g, j, k, q, s, x, z -> 2, d, t -> 3, l -> 4, m, n -> 5, r -> 6. If two or more letters with the same code were adjacent in the original name (before step 1), omit all but the first. Convert to the form "letter, digit, digit, digit" by adding trailing zeros (if there are less than three digits), or by dropping rightmost digits (if there are more than three). Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck Soundex, forts. Knuths definition kan översättas till ett reguljärt uttryck: [ [ [b|f|p|v]+ @-> 1, [c|g|j|k|q|s|x|z]+ @-> 2, [d|t]+ @-> 3, l+ @-> 4, [m|n]+ @-> 5, r+ @-> 6, [a|e|h|i|o|u|w|y]+ @-> [] ] .o. [?^4 [?:0]* | ?^3 0:%0 | ?^2 [0:%0]^2 | ? [0:%0]^3] ] Vilket resulterar i en FT med 26 tillstånd och 805 bågar Växjö 15 april -04 Språk & logik: Reguljära uttryck
Översättning mellan romerska och arabiska siffror Romerska tal byggs upp av följande siffror: I=1 V=5 X=10 L=50 C=100 D=500 M=1000 Högre tal byggs upp genom att summera flera romerska siffror i fallande storleksordning: MCCV motsvarar 1205 Om en romersk siffra föregås av en siffra med lägre värde fås subtraktion: MCMXCIV motsvarar 1994 Växjö 15 april -04 Språk & logik: Reguljära uttryck
Romerska/Arabiska tal, forts. Enklast är att definiera det reguljära uttrycket stegvis Ett mellanformat beskriver talen som en lång rad av ettor: XXIV -> 111111111111111111111111 -> 24 Tillåtna arabiska tal beskrivs som: [(1|2|3) ["0"|1|2|3|4|5|6|7|8|9]^{1,3}] - ["0"+ ?+] Enstaka romerska siffror översätts så här: [I -> 1 || _ \[X | V] | .#. ,, V -> 1^5 || _ ,, X -> 1^10 || _ \[L | C] | .#. ,, L -> 1^50 || _ ,, C -> 1^100 || _ \[M | D] | .#. ,, D -> 1^500 || _ ,, M -> 1^1000 || _ ] .o. [I 1 -> 0 , X 1^10 -> 0 , C 1^100 -> 0] Det fullständiga uttrycket kan skrivas som: [Roman .o. RomanToUnary] .o. [Arabic .o. ArabicToUnary].i Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck Einsteins puzzel Den här typen av problem kan lösas med XFST, men webb-versionen räcker inte riktigt till (versionen som följer med boken Finite-State Morphology, 2003 av Kenneth R. Beesley and Lauri Karttunen klarar det) På en gata finns 5 hus i en rad och varje hus har: En viss färg Ägaren har en viss nationalitet En favoritdrink Ett husdjur Ett favoritcigarettmärke Givet ett antal fakta och listor på färger, nationaliteter, drinkar, husdjur och cigarettmärken, skall följande fråga besvaras: Vem har fiskar? Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck Einsteins puzzel (2) Bakgrundsfakta: The Englishman lives in the red house. The Swede keeps dogs. The Dane drinks tea. The green house is just to the left of the white one. The owner of the green house drinks coffee. The Pall Mall smoker keeps birds. The owner of the yellow house smokes Dunhills. The man in the center house drinks milk. The Norwegian lives in the first house. The Blend smoker has a neighbor who keeps cats. The man who smokes Blue Masters drinks bier. The man who keeps horses lives next to the Dunhill smoker. The German smokes Prince. The Norwegian lives next to the blue house. The Blend smoker has a neighbor who drinks water. Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck Einsteins puzzel (3) Några definitioner: define Color [blue | green | red | white | yellow]; define Nationality [Dane | Englishman | German | Swede | Norwegian]; define Drink [bier | coffee | milk |tea | water]; define Cigarette [Blend | BlueMaster | Dunhill | PallMall | Prince]; define Pet [birds | cats | dogs | fish | horses]; Ett hushåll representeras av: define House [Color Nationality Drink Cigarette Pet]; Antalet möjliga hushåll är 3125 och antalet möjliga kombinationer för de 5 husen blir 3125^5 (!) Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck Einsteins puzzel (4) De 15 fakta vi har kan ses som regler som begränsar antalet kombinationer, dvs. språket de beskriver är en delmängd av de 3125^5 kombinationerna Skärningen av dessa språk består av de kombinationer som uppfyller samtliga fakta! Om det finns ett svar på frågan “vem har fiskar?” så kan vi utläsa det i det resulterande språket Om frågan inte går att besvara så finns flera kombinationer med olika fiskägare eller ingen lösning alls Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck Einsteins puzzel (5) Faktumet: “The Swede keeps dogs.” kan beskrivas som: $[Color Swede Drink Cigarette dogs]; eller förenklat: $[Swede ~$Pet dogs]; “The Norwegian lives next to the blue house.” blir: $[Norwegian ~$Color blue | blue ? ~$Nationality Norwegian]; Notera att norrmannen kan bo till höger eller till vänster om det blå huset Efter att ha definierat alla fakta samt C16 ($fish) som säger att någon måste ha fiskar fås lösningen med: Define Solution [House^5 & C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 & C9 & C10 & C11 & C12 & C13 & C14 & C15 & C16]; Om vi gör ett uppsnyggande filter fås en snygg utskrift med: [Solution .o. Prettyprint]; Växjö 15 april -04 Språk & logik: Reguljära uttryck
Språk & logik: Reguljära uttryck Einsteins puzzel (6) Den resulterande automaten innehåller 76 tillstånd, 75 bågar och en stig: regex [Solution .o. Describe]; 76 states, 75 arcs, 1 path. xfst[2]: print lower-words In the yellow house the Norwegian drinks water, smokes Dunhills, and keeps cats. In the blue house the Dane drinks tea, smokes Blends, and keeps horses. In the red house the Englishman drinks milk, smokes PallMalls, and keeps birds. In the green house the German drinks coffee, smokes Princes, and keeps fish. In the white house the Swede drinks bier, smokes BlueMasters, and keeps dogs. Växjö 15 april -04 Språk & logik: Reguljära uttryck