Natuurlijke Taalverwerking

18
Natuurlijke Taalverwerking 3e trimester 98/99 docent: Gosse Bouma

description

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. - PowerPoint PPT Presentation

Transcript of Natuurlijke Taalverwerking

Page 1: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking

3e trimester 98/99docent: Gosse Bouma

Page 2: Natuurlijke Taalverwerking

Transducers en fonologische regels in FSA

Week 3

Page 3: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 3

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

Page 4: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 4

Transducer

l:la:a

k:k

o:oo:

p:p

+:

+:k

e:e

n:n

lak+en -> lakken, loop+en -> lopen

Page 5: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 5

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.

Page 6: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 6

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.

Page 7: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 7

Reg Ex Voorbeeld

{{a,e,i,u,o} x ‘V’,{b,c,d} x ‘C’}*

abeceeidi -> VCVCVVVCV

a:V, e:V, i:V b:C, c:C, d:C

Page 8: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 8

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]}

Page 9: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 9

Non-deterministisch

h:h

a:a

r:r

a:aa:

r:r

+:

d:d

e:e

n:n

haar+en -> haren, haard+en -> haarden

Page 10: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 10

Getallen -> woorden

• Macro(eentallen,[{1:een, 2:twee, 3:drie}]).

• Macro(twintig,[2:[],eentallen,[]:entwintig]).

• 21 -> eenentwintig

Page 11: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 11

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.

Page 12: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 12

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

Page 13: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 13

(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]}*

Page 14: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 14

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

Page 15: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 15

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,[],[])

Page 16: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 16

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,[] : -],[],[])

Page 17: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 17

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

Page 18: Natuurlijke Taalverwerking

Natuurlijke Taalverwerking 18

Opdracht 2

• G2P conversie voor letters• a e i o u d n r s t