180 likes | 365 Views
Natuurlijke Taalverwerking. 3e trimester 98/99 docent: Gosse Bouma. Transducers en fonologische regels in FSA. Week 3. Transducers. Nut van herkenners (recognizers) is beperkt. Meeste finite state toepassingen gebruiken transducers.
E N D
Natuurlijke Taalverwerking 3e trimester 98/99 docent: Gosse Bouma
Transducers • Nut van herkenners (recognizers) is beperkt. • Meeste finite state toepassingen gebruiken transducers. • Een transducer vertaalt een invoerstring naar een uitvoerstring. • apen -> a-pen • 19 -> negentien • KPN -> kapeEn Natuurlijke Taalverwerking
Transducer lak+en -> lakken, loop+en -> lopen k:k a:a +:k l:l n:n e:e o:o +: o: p:p Natuurlijke Taalverwerking
Reguliere expressies • [a:b, c*] vertaalt accc in bccc • ‘:’ is de ‘pair’-operator: A:B vertaalt symbool A in symbool B. • [{a,e,i,o,u} x ‘V’] vertaalt strings uit taal {a,e,i,o,u} in de string ‘V’. • ‘x’ is de ‘cross-product-operator’: A x B vertaalt strings uit taal A in strings uit taal B. Natuurlijke Taalverwerking
Reguliere expressies • [a:b, c*] is eigenlijk een afkorting voor [a:b, (c:c)*] • reguliere expressies zonder ‘:’ of ‘x’ worden dus gelezen als ‘identity-transducers’: ieder input-symbool verschijnt ongewijzigd in de output. Natuurlijke Taalverwerking
Reg Ex Voorbeeld {{a,e,i,u,o} x ‘V’,{b,c,d} x ‘C’}* abeceeidi -> VCVCVVVCV b:C, c:C, d:C a:V, e:V, i:V Natuurlijke Taalverwerking
Spellingsregels • [lttr*, {[[a,a] x a, cons],[a,a,cons,cons]}, +:[], e,n] • haar+en --> haren • haard+en --> haarden • Non-deterministisch? • Echt non-determinisch: • {[a:b,c*,b],[a:d,c*,d]} Natuurlijke Taalverwerking
Non-deterministisch haar+en -> haren, haard+en -> haarden r:r h:h n:n d:d a:a e:e +: a:a a: r:r Natuurlijke Taalverwerking
Getallen -> woorden • Macro(eentallen, [{1:een, 2:twee, 3:drie}]). • Macro(twintig, [2:[],eentallen,[]:entwintig]). • 21 -> eenentwintig Natuurlijke Taalverwerking
Compositie • Vertaal Nederlandse getalsnamen naar het Engels: • eenentwintig -> 21 -> twentyone • Een mogelijke benadering: • schrijf een transducer die NL in getallen omzet, • schrijf een transducer die getallen in ENG omzet, • Knoop ze aan elkaar. Natuurlijke Taalverwerking
Compositie (2) • macro(nl2num,{een x 1, twee x 2, …}). • macro(num2eng,{1 x one, 2 x two,..}). • macro(trans, nl2num o num2eng). • A o B is een transducer waarbij output van A wordt gebruikt als input van B. • eenentwintig -> A -> 21 -> B -> twentyone Natuurlijke Taalverwerking
(Fonologische) Regels • Een transducer die de letter ‘x’ vervangt door ‘ks’: • Poging 1 (fout): • [[? *, ‘x’ x [k,s]]*, ?*] • axax -> aksaks, axaks, aksaks, axax • Poging 2 (goed): • [[(? - x)*, ‘x’ x [k,s]]*, (? - x)*] • axax -> aksaks • Poging 3 (simpel): {? - x, ‘x’ x [k,s]}* Natuurlijke Taalverwerking
Regels met context • c -> s, mits gevolgd door e of i (cent, politici) • Poging 1: • {?-c,[c:s,{e,i}]}* • cent -> sent, cactus -> no output • c -> k, anders • Poging 2: • {? -c,[c:k,{e,i}],[c:s,? - {e,i}]}* • cent -> sent, cactus -> kaktus Natuurlijke Taalverwerking
De replace-operator • Het handmatig definiëren van regels is moeizaam • replace(A x B, LC, RC): vervang A door B in de context LC _ RC • replace(c:s,[],{e,i}) • replace(c:s,[],{e,i}) o replace(c:k,[],[]) Natuurlijke Taalverwerking
Grafeem naar foneem conversie • Stap 1: segmenteren • g-r-a-f-ee-m, r-i-ng, s-ch-oo-l • macro(segment,{a,aa,aai,…,z}). • replace([segment,[] : -],[],[]) Natuurlijke Taalverwerking
Grafeem naar foneem conversie • Stap 2: conversie van gesegmenteerde input • macro(g2p(Target,LC,RC), replace([Target,-:+],[LC,{-,+}],RC)) • macro(lang, g2p({[a,a] x a, [e,e] x e},[],[]). • slaapt -> slapt, weer -> wer Natuurlijke Taalverwerking
Opdracht 2 • G2P conversie voor letters • a e i o u d n r s t Natuurlijke Taalverwerking