22

T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

T-(538|725)-MALV, MálvinnslaSamhengisfrjáls mállýsing og Prolog

Hrafn Loftsson1 Hannes Högni Vilhjálmsson1

1Tölvunarfræðideild, Háskólinn í Reykjavík

September 2007

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 2: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

Outline

1 Prolog

2 De�nite Clause Grammar

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 3: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

Outline

1 Prolog

2 De�nite Clause Grammar

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 4: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

Prolog (1970)

Lesning

http://en.wikipedia.org/wiki/Prolog

Appendix A í kennslubók.

Hönnunarforsendur

Að styðja við málvinnslu (e. Natural Language Processing)e. Declarative programming

(http://en.wikipedia.org/wiki/Declarative_programming

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 5: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

Prolog (1970)

Lesning

http://en.wikipedia.org/wiki/Prolog

Appendix A í kennslubók.

Hönnunarforsendur

Að styðja við málvinnslu (e. Natural Language Processing)e. Declarative programming

(http://en.wikipedia.org/wiki/Declarative_programming

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 6: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

Outline

1 Prolog

2 De�nite Clause Grammar

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 7: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

De�nite Clause Grammar (DCG)

Innifalið í Prolog.

Styður við táknun á samhengisfrjálsri mállýsingu (CFG) íProlog.

Prolog breytir CFG reglunum í Prolog reglur.

Prolog algrímið sér sjálfkrafa um þáttun (e. parsing) án frekariforritunar.

Helsti kostur við Prolog m.t.t. til CFG er: Fáar línur af kóða!

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 8: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

De�nite Clause Grammar (DCG)

Dæmi

Reglur Orðasafn

------------------------------------------------------------

s --> np, vp. det --> [the]. verb --> [brought].

np --> det, noun. det --> [a]. prep --> [to].

np --> np, pp. noun --> [waiter]. prep --> [of].

vp --> verb, np. noun --> [meal].

vp --> verb, np, pp. noun --> [table].

pp --> prep, np. noun --> [day].

Athugið að vanalega er notaður virkinn :- til að skilja á milli vinstriog hægri hliðar í Prolog. Þegar um DCG er að ræða þá er -->notaður.

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 9: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

De�nite Clause Grammar (DCG)

Prolog search

Almennt gildir að Prolog athugar hvort staðreynd er sönn eðabýr til allar lausnir.

Í tilviki DCG, þá athugar Prolog hvort setningu er hægt aðleiða út frá mállýsingunni eða myndar allar setningar semmállýsingin stendur fyrir.

Prófun

Starta Prolog: "c:\Program Files\pl\bin\plwin"

Hlaða inn skrá: ?- consult('cfg.pro').

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 10: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

De�nite Clause Grammar (DCG)

Prolog search

Almennt gildir að Prolog athugar hvort staðreynd er sönn eðabýr til allar lausnir.

Í tilviki DCG, þá athugar Prolog hvort setningu er hægt aðleiða út frá mállýsingunni eða myndar allar setningar semmállýsingin stendur fyrir.

Prófun

Starta Prolog: "c:\Program Files\pl\bin\plwin"

Hlaða inn skrá: ?- consult('cfg.pro').

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 11: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

De�nite Clause Grammar (DCG)

Athuga hvort strengur er í málinu

?- s([the, waiter, brought, the, meal, to , the, table], []).

Yes

?- s([the, waiter, brought, the, meal, of , the, day], []).

Yes

Mynda allar (málfræðilega réttar) setningar

?- s(L, []).

L = [the, waiter, brought, the, waiter] ;

L = [the, waiter, brought, the, meal] ;

L = [the, waiter, brought, the, table] ;

...

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 12: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

De�nite Clause Grammar (DCG)

Athuga hvort strengur er í málinu

?- s([the, waiter, brought, the, meal, to , the, table], []).

Yes

?- s([the, waiter, brought, the, meal, of , the, day], []).

Yes

Mynda allar (málfræðilega réttar) setningar

?- s(L, []).

L = [the, waiter, brought, the, waiter] ;

L = [the, waiter, brought, the, meal] ;

L = [the, waiter, brought, the, table] ;

...

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 13: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

Þýðing á DCG y�r í Prolog reglur (e. clauses)

DCG reglan s --> np, vp.

. . . er þýdd y�r í regluna:

s(L) :- np(L1), vp(L2).

Dæmi: the waiter brought the meal

L �matches� [the, waiter, brought the meal]L1 �matches� [the, waiter]L2 �matches� [brought, the, meal]

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 14: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

Þýðing á DCG y�r í Prolog reglur (e. clauses)

Til að vera alveg nákvæm þá gerist þetta með svokölluðumdi�erence lists

DCG reglan s --> np, vp.

. . . er þýdd y�r í regluna:

s(L1,L) :- np(L1,L2), vp(L2,L).

DCG reglan: det --> [the].

. . . er þýdd y�r í staðreyndina:

det([the | L], L).

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 15: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

Prolog framkvæmir depth-�rst search

?- trace.

?- s([the, waiter, brought, the, meal], []).

S

VP

NP

Noun

meal

Det

the

Verb

brought

NP

Noun

waiter

Det

The

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 16: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

Prolog framkvæmir depth-�rst search

?- s([the, waiter, brought, the, meal], []).s(L1, L) :- np(L1, L2), vp(L2, L).

L1 = [the, waiter, brought, the, meal], L=[].

np(L1, L) :- det(L1, L2), noun(L2, L).det(the | L), L.

L = [waiter, brought, the, meal].⇒ L1 = [the].⇒ L2 = [waiter, brought, the, meal].

noun([waiter, brought, the, meal],L).

. . .

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 17: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

Vinstri endurkvæmni (e. left recursion)

?- s([the, brought, the, meal], []).ERROR: Out of local stack

Vegna vinstri endurkvæmni í reglunni np --> np, pp.

Hægt að eyða vinstri endurkvæmni og það er reyndarnauðsynlegt í Prolog (sjá ka�a 8.3.3 í bók).

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 18: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

Margræðni í þáttun (e. parsing ambiguity)

Reglurnar . . .

vp --> verb, np og np --> np, pp

vp --> verb, np, pp

. . . leiða af sér margræðni, því �eiri en eitt þáttunartré er tilfyrir sama strenginn.

T.d. fyrir setninguna: The waiter brought the meal to the

table

Tré 1a og 2a á næstu glærum eru rétt.

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 19: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

Margræðni í þáttun � Tré 1a

S

VP

PP

NP

Noun

table

Det

the

Prep

to

NP

Noun

meal

Det

the

Verb

brought

NP

Det

waiterThe

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 20: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

Margræðni í þáttun � Tré 1b

S

VP

NP

PP

NP

Noun

table

Det

the

Prep

to

NP

Noun

meal

Det

the

Verb

brought

NP

Det

waiterThe

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 21: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

Margræðni í þáttun � Tré 2a

S

VP

NP

PP

NP

Noun

day

Det

the

Prep

of

NP

Noun

meal

Det

the

Verb

brought

NP

Det

waiterThe

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog

Page 22: T-(538|725)-MALV, Málvinnsla Samhengisfrjáls mállýsing og ...cadia.ru.is/wiki/_media/public:t-malv-07-3:cfg_og_prolog.pdf · De nite Clause Grammar (DCG) Innifalið í Prolog

Margræðni í þáttun � Tré 2b

S

VP

PP

NP

Noun

day

Det

the

Prep

of

NP

Noun

meal

Det

the

Verb

brought

NP

Det

waiterThe

Loftsson, Vilhjálmsson Samhengisfrjáls mállýsing og Prolog