D:/Documents and Settings/Rodrigo/Meus documentos ...arthur/orients/rodrigo_grad.pdf · 2.1.1...

33
1 1111

Transcript of D:/Documents and Settings/Rodrigo/Meus documentos ...arthur/orients/rodrigo_grad.pdf · 2.1.1...

1

1 1 1 1

Rodrigo Tadeu Gonçalves

Avaliando propostas de análise gramatical de latim emProlog

Monografia apresentada como requisitoparcial à obtenção do grau de bacharel emlatim, do Curso de Graduação em Letras,do setor de Ciências Humanas, Letras eArtes da Universidade Federal do Paraná.

Orientador: Prof. Dr. Luiz Arthur Pagani

CURITIBA2004

Sumário

1 Introdução 3

2 Um analisador gramatical em estrutura sintagmática para olatim 52.1 Questões sobre o latim . . . . . . . . . . . . . . . . . . . . . . 5

2.1.1 Representando a morfologia nominal do latim . . . . . 62.1.2 Os verbos latinos . . . . . . . . . . . . . . . . . . . . . 9

2.2 As regras de estrutura sintagmática . . . . . . . . . . . . . . . 102.2.1 A sentença . . . . . . . . . . . . . . . . . . . . . . . . . 102.2.2 O sintagma verbal . . . . . . . . . . . . . . . . . . . . 102.2.3 O sintagma nominal . . . . . . . . . . . . . . . . . . . 10

2.3 Discussão do analisador inicial . . . . . . . . . . . . . . . . . . 11

3 O analisador gramatical de Covington (1990, 1994b, 2003) 143.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2 Gramática de dependência . . . . . . . . . . . . . . . . . . . . 153.3 A implementação . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.3.1 O léxico . . . . . . . . . . . . . . . . . . . . . . . . . . 173.3.2 A gramática . . . . . . . . . . . . . . . . . . . . . . . . 17

3.4 Funcionamento do analisador . . . . . . . . . . . . . . . . . . 183.5 Avaliação dos resultados . . . . . . . . . . . . . . . . . . . . . 22

4 Conclusão 274.1 Prós e contras do analisador em DCG . . . . . . . . . . . . . . 274.2 Prós e contras do analisador de Covington . . . . . . . . . . . 27

1

2

4.3 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . 28

Referências Biliográficas 31

Capítulo 1

Introdução

A proposta da criação de um parser em Prolog para o latim surgiu da con-statação de que o latim seria uma língua interessante sob vários aspectos paraa abordagem do processamento de linguagem natural. Não só o latim é tidocomo uma língua de ordem (relativamente) livre, como também sustenta-se acrença de que a morfologia nominal é capaz de fazer com que a interpretaçãose dê através da construção de significado através da derivação da estruturasintático-morfológica da língua. Gostaríamos de analisar até que ponto istorealmente acontece à medida que implementamos uma gramática latina emProlog.

No entanto, mostramos que uma gramática simples de estrutura sintag-mática não é satisfatória na medida em que não pode dar conta da variaçãode ordem nem sequer num nível mais elementar.

Portanto, nesta monografia, apresentamos um fragmento de gramática deestrutura sintagmática, como ponto de partida da análise. Um número bas-tante reduzido de tipos de estruturas de constituintes e de entradas lexicaisfoi implementado, no entanto, com um resultado bastante razoável do pontode vista da estruturação sintagmática da língua.

Contudo, durante o processo de elaboração desse trabalho, nos deparamoscom uma implementação já feita em Prolog de um analisador gramaticalpara o latim utilizando a chamada Gramática de Dependência. Avaliamos,então, a proposta do analisador por Michael A. Covington (Covington, 1990),

3

4

(Covington, 1994a), (Covington, 2003) e discutimos o seu funcionamento eseus prós e contras.

Assim, no capítulo 2, mostraremos como uma gramática de estrutura sin-tagmática implementada através de uma Gramática de Cláusulas Definidas(Definite-Clause Grammars, ou DCG (?)) não se mostra eficiente para aanálise gramatical de uma língua de ordem flexível como o latim.

A seguir, no capítulo 3, apresentaremos o analisador gramatical propostopor Covington, baseado em uma gramática de dependência, e avaliaremos oseu funcionamento.

Concluimos, a seguir, com a discussão sobre o que foi conseguido com oanalisador de Covington e com o que pode vir a ser feito para melhorar osproblemas remanescentes.

Capítulo 2

Um analisador gramatical emestrutura sintagmática para olatim

2.1 Questões sobre o latim

O latim é uma língua indo-européia não mais utilizada por falantes na-tivos, e, portanto, uma língua da qual não temos registros de oralidade parapodermos nos basear em fonologia e/ou prosódia. Portanto, o trabalho se dáexclusivamente com a língua escrita.

Em latim, a ordem de ocorrência dos argumentos de um verbo é até bas-tante livre, mas admite-se que a ordem canônica seja SOV. Rubio (1989:193)aponta para o fato de que os próprios autores e falantes do latim admitiamuma ordem chamada “normal”, neutra, e cita Quintiliano a esse respeito.Para Quintiliano (Rubio 1989: 194) citando Cícero, em (1), a ordem tidacomo normal (rectus ordo verborum, indicada no exemplo por um traço), é“apropriada, porém áspera e não-culta”:

(1) a. Animadverti,perf-at-1ps

iudices,voc-pl

omnemacc-sing

accusatorisgen-sing

orationemacc-sing

inprep

duasacc-pl

t1 diuisamacc-sing

esseinf

partes1.acc-pl

5

6

b. Notei, juízes, que o discurso do acusador está dividido em duaspartes (Cic., pro Cluent., 1)

O PP adjunto de orationem na subordinada (do tipo acusativo com infinitivo,geralmente abreviada por ACI) tem o núcleo do DP subcategorizado por seunúcleo movido para fora do sintagma, para se adequar ao estilo do orador,no caso.

A questão que nos permite, a princípio, deixar de lado os problemasmaiores da ordem das palavras é a morfologia. Como se pode ver em (1), oDP subcategorizado por PP tem seu núcleo movido para fora do sintagma,mas a informação morfológica não permite ao sistema lingüístico relacionaraquele substantivo (partes, plural) aos adjetivos omnem e divisam, ambosno singular. Em sentenças sintaticamente ambíguas, no entanto, não seriaassim tão fácil encontrar a estrutura sintagmática preferencial ou as leituraspossíveis de organizações sintáticas diferentes.

No entanto, nossa análise deixa de lado, por enquanto, as questões deliberdade mais geral de ordenação de palavras e supõe uma ordem canônicaque serve de base para a construção das regras de escritura sintagmática.

2.1.1 Representando a morfologia nominal do latim

O latim é uma língua que apresenta marcas morfológicas de caso. Issoquer dizer que, de acordo com a função gramatical exercida na oração, umsubstantivo apresenta terminações diferentes que indicam essa função. Porexemplo, em (2), a relação expressa pelo predicado de dois lugares amare,verbo transitivo como o nosso amar em português, supõe um indivíduo queama e outro que é amado.

(2) dominus amat deam.

De acordo com a marcação de caso, o morfema de nominativo -us diz quea palavra dominus é o sujeito da oração, o indivíduo que ama. Já o casoacusativo, marcado pelo morfema -m, faz com que deam não possa ser senãoo objeto do verbo amat, ou seja, aquilo que é amado. Esse tipo de informaçãomorfológica permite, a princípio, que a ordem das palavras, mesmo em uma

7

sentença tão simples, varie livremente (embora a variação acarrete efeitospragmáticos, como, por exemplo, foco, topicalização e estilo). No entanto,como já exposto acima, os latinos reconheciam uma ordem de palavras maisnatural, e esta seria a seguinte, em (3):

(3) dominus deam amat.

Neste caso, quem ama continua sendo o senhor (dominus) e quem é amadoainda é a deusa (deam). No entanto, se trocarmos as desinências paradominum (acusativo) e dea (nominativo), a relação de amar é invertida, e oamante passa a ser a deusa, enquanto que o senhor passa a ser o amado. Emlínguas como o português e o inglês, sem marcação morfológica de caso, arelação se daria através da colocação dos argumentos na ordem “amante amaamado”, e a inversão da ordem dos argumentos inverteria o papel desempen-hado por eles na relação de amar.

Como vimos, nominativo e acusativo são os casos que representam asfunções de sujeito e de objeto direto (simplificando bastante a noção de ca-sos). Porém, o latim ainda apresenta o caso genitivo para indicar posse, comoem uma expressão do tipo sagitta (nom) domini (gen) (a flecha do poeta).Em seguida no paradigma da declinação nominal, temos o caso dativo, queindica geralmente um alvo de um evento como o expresso pelo verbo dare,que se compõe de um argumento que dá (no nominativo), um argumentoque representa o que é dado (no acusativo) e um argumento no dativo (paraquem se dá a coisa). O caso ablativo é o caso que exprime geralmente umafonte de onde alguma coisa provém, o modo através do qual algo se dá ou,por exemplo, um instrumento através do qual algo se faz. Por exemplo, naexpressão dominus poetam vulnerat sagitta a palavra sagitta se encontra nocaso ablativo, e exprime a maneira através da qual o senhor fere o poeta, ouseja, uma noção instrumental. Ainda temos o caso chamado vocativo, que éusado para se endereçar um interlocutor, como em domine, juva poetam (Ósenhor, ajude o poeta).

Isso tudo se complica ainda quando consideramos que os nomes, em geral,apresentam formas para o singular e formas para o plural. Ao todo, a maioriados substantivos apresenta, dessa forma, doze formas diferentes, seis para o

8

singular e seis para o plural. Vejamos a tabela simplificada abaixo:

Caso e número Sub. fem. Tradução simplificada Sub. masc. Tradução simplificadaNominativo sing. dea a deusa (sujeito) dominus o senhor (sujeito)Vocativo singular dea ó deusa domine ó senhorAcusativo singular deam a deusa (objeto) dominum o senhor (objeto)Genitivo singular deae da deusa domini do senhorDativo singular deae para a deusa domino para o senhorAblativo singular dea pela deusa domino pelo senhorNominativo plural deae as deusas (sujeito) domini os senhores (suj.)Vocativo plural deae ó deusas domini ó senhoresAcusativo plural deas as deusas (objeto) dominos os senhores (obj.)Genitivo plural dearum das deusas dominorum dos senhoresDativo plural deiis para as deusas dominis para os senhoresAblativo plural deiis pelas deusas dominis pelos senhores

Tabela 1: Morfologia nominal

A solução, ainda provisória e simplificada, para a questão da represen-tação das doze formas possíveis do substantivo latino, foi a criação de en-tradas lexicais que funcionassem através de listas ordenadas, como o seguinteexemplo:

(4) n(masc, [dominus, domine, dominum, domini, domino, domino, do-mini, domini, dominos, dominorum, dominis, dominis]).

A entrada lexical exemplificada em (4) diz que a lista dentro dos colchetes éa lista de possibilidades morfológicas do substantivo (n) de gênero masculino(masc). Para o programa reconhecer uma palavra como um substantivo, asolução foi fazer com que o programa olhasse para a posição na lista pararecuperar a informação relativa ao caso e número da forma específica en-contrada na análise. Um exemplo de regra para os substantivos segue em(5),

(5) n(N, acc, sing, Gen) :- n(Gen, [_, _, N|_]).

que diz que, se o item lexical encontrado estiver na terceira posição emuma lista de uma entrada lexical de substantivo (n), esta palavra é um sub-stantivo na sua forma de acusativo singular. Apesar de a regra parecer poucoelegante, ela dá conta das regras de estrutura geradas até então, e, assim que

9

a análise morfológica puder ser feita de maneira mais eficiente, estas regrasserão substituídas e as entradas lexicais tornar-se-ão mais enxutas.

A mesma solução foi encontrada para os adjetivos que usamos no pro-grama até então, com uma diferença fundamental que diz respeito ao gênerodas palavras: os substantivos apresentam gênero morfológico que deve con-cordar com o gênero do adjetivo. Portanto, os adjetivos apresentam, na suamaioria (os de 1a classe, que seguem a declinação dos nomes que usamosno programa), três declinações diferentes, totalizando 36 formas. Como sóusamos substantivos masculinos e femininos (há ainda também o gênero neu-tro), nossas entradas lexicais de adjetivos são separadas de acordo com osgêneros. Temos, então, 24 formas de adjetivos, que devem concordar emgênero, número e caso com o substantivo que modificam. Exemplos dissosão: fessus dominus (o senhor cansado, masc., nom. e sing.); fessos poetas(os poetas cansados, masc., acc., e plural) e fessarum dearum (das deusascansadas, fem., gen., plural).

2.1.2 Os verbos latinos

A morfologia verbal do latim é bastante rica (o verbo possui marcas depessoa, número, tempo, aspecto, modo e voz). No entanto, para o nossoprograma, as formas verbais apresentam apenas formas no presente do in-dicativo, nas terceiras pessoas do singular e do plural. Nossos verbos são,também, por enquanto, todos transitivos diretos. Portanto, a entrada lexicalde um verbo é como a seguinte:

(6) v(amat, sing).

Essa entrada de regra diz, portanto, que um átomo como “amat” é verbo nosingular. Para a atual versão do programa, que desconsidera a complexidadedo sistema verbal latino, entradas lexicais como essa dão conta dos objetivosatuais da pesquisa, mas devem ser remodeladas em etapas subseqüentes dotrabalho de modo a representar melhor as relações verbais em latim.

10

2.2 As regras de estrutura sintagmática

2.2.1 A sentença

A regra para a sentença latina no nosso programa é, por enquanto, apenasuma: um NP (sintagma nominal, do inglês noun phrase) no nominativo,portanto, sujeito, e um VP (sintagma verbal, do inglês verb phrase). Aentrada da regra no programa é a seguinte:

(7) s(s(NP, VP)) –> np(NP, nom, Num), vp(VP, Num).

A regra (7) nos diz que, além de a sentença ser composta por NP no nomi-nativo e VP, ambos têm que concordar em número (concordância que se dáatravés do usa da variável Num).

2.2.2 O sintagma verbal

Os sintagmas verbais possíveis no nosso programa são os seguintes:

(8) vp(vp(NP, V), Num) –> np(NP, acc, _), v(V, Num).

(9) vp(vp(NP1, V, NP2), Num) –> np(NP1, acc, _), v(V, Num), np(NP2,abl, _).

O VP resultante de (8) é um que contém um NP no acusativo e um verbo, e oque resulta de (9) tem adicionalmente um NP ablativo, que gera e reconhecesentenças com ablativo instrumental. As sentenças geradas são, por exemplo,(10) e (11):

(10) dominus poetam juvat (o senhor ajuda o poeta)

(11) dominus poetam vulnerat sagitta (o senhor fere o poeta com a/atravésda flecha)

2.2.3 O sintagma nominal

Os sintagmas nominais disponíveis até então são os seguintes: (a) substan-tivo; (b) adjetivo + substantivo; (c) substantivo + adjetivo; (d) substantivo

11

no genitivo + substantivo; (e) substantivo + substantivo no genitivo. Asconfigurações escolhidas para o sintagma nominal são simplificações que, noentanto, seguem Hawkins (1983: 217-9) no que diz respeito à distribuição,por exemplo, de Nome + Genitivo versus Genitivo + Nome, que, segundoanálise quantitativa, é dita ser, em latim, livre. O mesmo não acontece como par de ordens Adjetivo + Nome versus Nome + Adjetivo, que, de acordocom o estudo de Hawkins, deve ter o primeiro elemento privilegiado quantoà freqüência de ocorrências, com a segunda ordem às vezes ocorrendo. Man-tivemos as quatro possibilidades, então, e, desse modo, os sintagmas nominaispossíveis são já bastante variados, como nos seguintes exemplos:

(12) fessus poeta (o/um poeta cansado)

(13) sagitta domini (a/uma flecha do senhor)

Dois exemplos de regras para a formação de sintagmas nominais são:

(14) np(np(N), Caso, Num) –> n(N, Caso, Num, _).

(15) np(np(N, A), Caso, Num) –> n(N, Caso, Num, Gen), a(A, Caso,Num, Gen).

2.3 Discussão do analisador inicial

O parser, mesmo ainda em um estágio tão simplístico de construção deregras e de entradas lexicais, já é capaz de reconhecer um grande número desentenças e gerar outras tantas.

Quanto à geração, pelo fato de o programa ainda não contar com ummódulo de seleção semântica, o programa ainda permite, por exemplo, ageração de sentenças como (16),

(16) ?dominus poetam amat poeta (?O senhor ama o poeta com/fazendouso do poeta)

em que a construção de ablativo instrumental não seleciona nomes através derestrições semânticas impostas pelo verbo e, eventualmente, por característi-

12

cas do próprio nome (como ser marcado no léxico como não-animado ou algonesse sentido).

Outro problema causado pela geração livre de sentenças através das re-gras do programa é que, por enquanto, os NPs são compostos de elementosatômicos, ao invés de elementos atômicos seguidos ou precedidos por outroNP de algum tipo especial. Isso é especialmente desinteressante no caso dosgenitivos, que podem concordar em gênero com um adjetivo, por exemplo.Então, nosso programa não reconhece nem gera um sintagma como (17),

(17) sagitta fessae deae (a flecha da deusa cansada)

pois fessae deae é, na verdade, um sintagma genitivo, que foi descartadonesta etapa inicial em favor de genitivos atômicos, especialmente para evitarsobre-geração recursiva e problemas na interpretação de outras sentenças.Esse é mais um problema que deve ser resolvido em breve com a adoção deregras mais eficientes.

No entanto, já há resultados significativos mesmo com uma gramática deestrutura tão simples. A entrada de uma pergunta como (18),

(18) ?- s(Estrutura, [sagittae, deae, poetam, vulnerant], []).

que pede que o Prolog responda dando a estrutura sintagmática da sentençasagittae deae poetam vulnerant, traz três respostas diferentes, com estru-turas sintagmáticas bastante distintas, gerando o reconhecimento de umaambigüidade estrutural bastante interessante. Os resultados são apresenta-dos em (19), (20) e (21), seguidos de tradução:

(19) Estrutura = s(np(n(sagittae)), vp(np(n(deae), n(poetam)), v(vulnerant)))Tradução: As flechas ferem o poeta da deusa.

(20) Estrutura = s(np(n(sagittae), n(deae)), vp(np(n(poetam)), v(vulnerant)))Tradução: As flechas da deusa ferem o poeta.

(21) Estrutura = s(np(n(deae), n(sagittae)), vp(np(n(poetam)), v(vulnerant)))Tradução: As deusas da flecha ferem o poeta.

13

Mesmo que (21) seja semanticamente um tanto anômala, a ambigüidade en-contrada pelo analisador de estrutura sintagmática é legítima do ponto devista da linguagem natural. Como genitivos podem livremente preceder ouseguir os nomes que são seus núcleos, em (19) deae, “da deusa”, liga-se aonúcleo do NP complemento do verbo, ou seja, temos “o poeta da deusa”. Em(20), o genitivo se liga ao núcleo do NP sujeito, resultando em “as flechasda deusa”. Em (21), no entanto, temos coincidência de forma das palavrasterminadas em -ae da primeira declinação, que podem ser tanto formas denominativo plural e vocativo plural quanto formas de genitivo singular (comotambém dativo singular e vocativo plural, vide nota). Deae deixa de ser, en-tão, genitivo e é interpretada como o núcleo do NP sujeito, sendo modificadapor sagittae, agora genitivo singular, resultando em “as deusas da flecha”.

Capítulo 3

O analisador gramatical deCovington (1990, 1994b, 2003)

3.1 Introdução

Gramáticas de estrutura sintagmática como a usada para a implemen-tação proposta em DCG anteriormente não dão conta do fenômeno da vari-abilidade da ordem de palavras nas línguas. Regras do tipo S −→ SN SV,que dizem que uma sentença se reescreve por uma seqüência de um sintagmanominal e um sintagma verbal, não são adequadas se queremos um anal-isador gramatical eficiente. Isso porque, numa gramática de estrutura sin-tagmática que pudesse lidar melhor com o fenômeno da liberdade de ordem,precisaríamos de tantas regras quantas fossem as possibilidades de variação,gerando uma lista possivelmente infinita de regras.

Desse modo, deve-se buscar uma saída mais adequada para a questão.Covington (1990) analisa diversas propostas para o tratamento da variabil-idade da ordem das palavras nas línguas e chega à conclusão de que agramática de dependência é a que melhor pode fazê-lo. Mas antes disso,ele analisa as possibilidades de tratamento da questão.

Como já vimos, gramáticas de estrutura sintagmática não resolvem oproblema. Uma outra maneira possível de se tratar o fenômeno seria atravésdo chamado formalismo ID/LP (immediate dominance/linear precedence). O

14

15

formalismo consistiria em separar as regras de estrutura sintagmática em umaparte diz que elementos formam um sintagma, e uma parte que estabelece aordem em que esses elementos aparecem. Assim, uma regra do tipo S −→SN SV seria separada em uma que dissesse que S imediatamente dominaSN e SV e outra que dissesse que SN precede linearmente SV. O tratamentode línguas como o latim através desse formalismo consistiria em eliminar asregras de precedência linear, mantendo apenas as de dominância imediata.

No entanto, o que se consegue com um formalismo como esse é meramenteliberar as posições dos elementos que constituem um sintagma, sem permitirque elementos de dentro de um sintagma possam ser analisados se estiveremmais longe que os limites do próprio sintagma (o que é de certa forma bastantecomum em latim).

Covington (1990) discute algumas outras possibilidades de tratamento davariação de ordem de palavras, mas a maneira mais adequada em sua opiniãoseria mesmo a utilização de gramáticas de dependência.

3.2 Gramática de dependência

Uma gramática de dependência não necessita de regras sintagmáticas poisela analisa uma expressão através do estabelecimento de ligações entre aspalavras e através da especificação dos tipos de ligações que se estabelecem.

O exemplo de Covington é a sentença “O cachorro vê o homem”: nessasentença, cachorro é sujeito de vê, gato é objeto de vê, o modifica cachorro eassim por diante. Para usar os termos da gramática de dependência, cachorrodepende de vê como sujeito, gato depende de vê como objeto, o depende degato como determinante e assim por diante.

Representaremos a análise gramatical de dependência através de uma listaindentada da seguinte forma (que se assemelha ao resultado gráfico de umaanálise feita pelo analisador de Covington):

16

cachorro

o

gato

o

Assim, podemos ver graficamente que as relações se estabelecem da seguintemaneira: o depende de gato, o outro o depende de cachorro. Gato dependede vê e cachorro também depende de vê.

A tarefa do analisador que funciona através de uma gramática de de-pendência é, então, receber palavra por palavra da expressão e verificar seela depende de alguma outra já analisada, e no final construir uma árvore dedependência como a mostrada acima. Vejamos como Covington implementouem Prolog esse tipo de gramática.

3.3 A implementação

O código do programa descrito em Covington (2003) pode ser encontradoem http://www.ai.uga.edu/mc/dparser/dparser.zip. Descreverei as partesrelevantes do código ao longo do texto.

O algoritmo básico consiste em aceitar as palavras uma a uma e adicioná-la a uma de duas listas: a lista de palavras (WordList) e a lista de núcleos(HeadList, que não são dependentes de nenhuma outra).

Os passos são os seguintes:1. O algoritmo procura por uma palavra W no léxico e cria um nó para

ela (mostraremos mais tarde como isso ocorre).2. Procura em HeadList palavras que possam ser dependentes de W, e

caso haja, as anexa como dependentes de W e as remove de HeadList.3. Procura em WordList uma palavra da qual W possa ser dependente.

Caso haja, anexa W como dependente dessa palavra. Caso contrário, adi-ciona W na HeadList.

4. Adiciona W a WordList.

17

Para o processo ser completado, a HeadList deve ficar com apenas umelemento, o verbo principal, do qual dependem os argumentos, como vimosna seção anterior.

3.3.1 O léxico

As palavras são cadastradas no programa da seguinte maneira:

word(canis, [n, ’’’dog’’’, masc, sg, nom, 3]).

word(felem, [n, ’’’cat’’’, masc, sg, acc, 3]).

word(videt, [v, ’’’sees’’’, _, sg, _, 3]).

Temos o predicado word que contém dois argumentos: o primeiro é apalavra em si, flexionada. O segundo é uma lista de características dapalavra, com a seguinte confuguração: na primeira posição, a categoria àqual a palavra pertence. Na segunda, uma glosa para o inglês, para identi-ficar a palavra na árvore de análise apresentada pelo Prolog. Na terceira, ogênero, na quarta, o número, na quinta, o caso e na sexta a pessoa gramatical.

Esse mecanismo de representação de léxico através de um predicado quecontém a forma da palavra como o primeiro argumento e uma lista de carac-terísticas como o segundo argumento é bastante útil para se estabelecerem asregras da gramática que serão vistas na próxima seção. Através do mecan-ismo de unificação de variáveis o Prolog pode efetuar a checagem dos traçosde concordância e estabelecer as relações de dependência corretamente. Ve-jamos como isso foi feito por Covington.

3.3.2 A gramática

As regras da gramática que especificam as relações de dependência sãoda seguinte forma:

dh(Dependent, Head)

Assim, o predicado dh estabelece uma relação entre o primeiro e o segundoargumento, de forma que o primeiro seja o dependente e o segundo seja onúcleo.

18

A gramática toma a seguinte forma:

Sujeito e verbo:

dh([n,_,_,Number,nom,Person], [v,_,_,Number,_,Person]).

Objeto e verbo:

dh([n,_,_,_,acc,_], [v,_,_,_,_,_]).

Adjetivo e nome:

dh([adj,_,Gender,Number,Case,_], [n,_,Gender,Number,Case,_]).

Como podemos ver, a regra de sujeito e verbo nos diz que um n nocaso nom (substantivo no caso nominativo) pode ser dependente de um v,contanto que sejam iguais as características representadas pelas variáveisNumber e Person. Isso garante que haja concordância de pessoa e númeroentre o sujeito e o verbo.

Para a relação entre objeto e verbo, basta que o dependente seja um nno caso acc (substantivo no caso acusativo) e que o núcleo seja um v.

A relação entre adjetivos e substantivos se estabelece na terceira regrade forma que um adjetivo dependa de um substantivo se concordarem emgênero, número e caso. O uso das mesmas variáveis Gender, Number e Casenas duas posições garante que somente se houver essa concordância poderáse estabelecer uma relação de dependência entre o adjetivo e o substantivo.

Covington nos alerta em seu código e em seu texto que, de acordo comessas regras, não há nada que impeça um verbo de ter múltiplos sujeitosou objetos, o que gera mais análises que se poderia esperar para algumassentenças. Discutiremos essa questão quando apresentarmos os resultadosdas análises.

3.4 Funcionamento do analisador

Os itens lexicais descritos acima são então transformados em nós daseguinte forma:

19

[Count, Dependents, Category, Gloss, Gender, Number, Case, Person]

No qual se representa um número contador (Count) único para cadapalavra que aparecer na expressão, uma variável Dependents, que contémtodos os nós dependentes desse item lexical, e as outras informações já pre-sentes nas regras dos itens lexicais.

Analisemos então o funcionamento do programa. Primeiro temos o pred-icado parse/2 :

% parse(+InputList,-Result)

% Parses a list of words, giving a HeadList.

parse(InputList,Result) :-

parse_loop(1,InputList,[],[],Result).

Esse predicado pega uma lista de entrada (InputList) e gera uma repre-sentação gramatical (Result). Para que ele funcione, ele opera recursivamenteatravés do predicado parseloop/5 :

% parse_loop(+Count,+InputList,+WordList,+HeadList,-Result)

% Called by parse/2, to loop through the list.

parse_loop(Count,[Word|InputList],WordList,HeadList,Result) :-

word(Word,WordFeatures), % Look up the next word

Node = [Count, _ | WordFeatures], % Build a node for it

parse_node(Node,WordList,HeadList,NewHeadList), % Try to attach it

NewCount is Count + 1,

NewWordList = [Node|WordList], % Add Node to WordList

parse_loop(NewCount,InputList,NewWordList,NewHeadList,Result).

parse_loop(_,[],_,Result,Result).

20

% No more words to parse; so Result := HeadList.

O predicado parseloop recursivamente checa os itens lexicais, gera nóspara eles, invoca o predicado parsenode/4, aumenta o contador em um (paraa palavra seguinte) e finalmente chama a si mesmo para analisar a palavraseguinte. A condição de término, como se vê pela segunda entrada do predi-cado parseloop, é a lista de núcleos (HeadList) ser igual ao resultado (Result),ou seja, só haver uma palavra na lista de núcleos, de modo que todas as outrassejam dependentes dessa.

O predicado parsenode/4 é aquele que analisa cada nó criado e tentaanexálo a outros como dependente ou como núcleo.

% parse_node(+Node,+WordList,+HeadList,-NewHeadList)

% Try to attach Node to the dependency tree.

% HeadList gets modified here; WordList does not

% (except by instantiation).

parse_node(Node,[],[],[Node]) :- !.

% If this is the first word, just add it to HeadList.

parse_node(Node,WordList,HeadList,NewHeadList) :-

try_inserting_as_head(Node,HeadList,HeadList2),

try_inserting_as_dependent(Node,WordList,HeadList2,NewHeadList).

A primeira entrada do predicado diz que as listas de palavras e de núcleosestiverem vazias, o nó Node deve ser instanciado como a nova lista de núcleos(NewHeadList). Na segunda entrada, os predicados try_inserting_as_heade try_inserting_as_dependent tentam adicionar a palavra à lista de núcleosou à de dependentes.

% try_inserting_as_head(+Node,+HeadList,-NewHeadList)

21

% Try to insert Node as the head above a word presently in HeadList.

% This entails deleting an element from HeadList.

try_inserting_as_head(_,[],[]).

% No more elements of HeadList to look at.

try_inserting_as_head(Node,[Head|HeadList],NewHeadList) :-

% Insert Node above Head, and remove Head from HeadList.

Node = [_,D|NodeFeatures],

Head = [_,_|HeadFeatures],

dh(HeadFeatures,NodeFeatures), % Head is the dependent here

add_item(D,Head),

% Now recurse down HeadList and see if it can be done again.

% (Multiple elements of HeadList may be dependents of Node.)

try_inserting_as_head(Node,HeadList,NewHeadList).

try_inserting_as_head(Node,[Head|HeadList],[Head|NewHeadList]) :-

% Couldn’t use Head, so skip it.

try_inserting_as_head(Node,HeadList,NewHeadList).

Primeiramente, o predicado falha se não houver mais elementos na lista denúcleos. A segunda e entrada do predicado checa as regras da gramática paradizer se um nó pode ser núcleo de outro. A terceira entrada do predicadodescarta o nó Head, que não pode ser usado, e então chama o predicadonovamente, com a lista de núcleos menor, decrescida de Head.

Vejamos como funciona o predicado try_inserting_as_dependent/4 :

% try_inserting_as_dependent(+Node,+WordList,+HeadList,-NewHeadList)

% Try to insert Node as a dependent of a word already encountered,

% i.e., of an element of WordList.

% Alternatively, add Node to HeadList.

try_inserting_as_dependent(Node,WordList,HeadList,HeadList) :-

22

member(Word,WordList),

Word = [_,D|WordFeatures],

Node = [_,_|NodeFeatures],

dh(NodeFeatures,WordFeatures),

add_item(D,Node).

try_inserting_as_dependent(Node,_,HeadList,[Node|HeadList]).

% couldn’t attach it, so add it to HeadList

Esse predicado tenta achar para Node um núcleo dentro das palavras jápresentes na WordList. Caso não ache, adiciona a palavra Node à cabeça dalista HeadList, incluindo-a nesta última.

A primeira entrada do predicado então procura uma palavra Word quefaça parte da lista WordList através do predicado member. Caso haja umaregra na gramática que diga que Node é dependente de Word, o predicadoadd_item então adiciona aquela palavra à posição de dependente dentro deNode.

3.5 Avaliação dos resultados

Vejamos como os resultados do analisador podem ser avalisados. Primeira-mente, o programa de Covington apresenta uma facilidade para lidar com asanálises. Existe o predicado parse, exposto acima, que apresenta apenas umresultado, e de maneira graficamente pouco clara. No entanto, o predicadotry/2 procura todas as análises para uma dada expressão (lista de palavrasseparadas por vírgulas) e as imprime todas no formato de linhas indentadasrepresentando as relações de dependência. Vejamos alguns exemplos.

Comecemos com sentenças não-ambíguas como ‘O cachorro vê o gato’:Como sabemos, essa sentença pode ser escrita em latim a princípio em

qualquer ordem de palavras, dada a rica morfologia nominal que o permite.Façamos o teste com o predicado try :

23

?- try([canis,videt,felem]).

canis videt felem

2 v ’sees’ _ sg _ 3

1 n ’dog’ masc sg nom 3

3 n ’cat’ masc sg acc 3

No (more) parses.

Yes

Assim, na ordem SVO, a sentença não-ambígua ‘O cachorro vê o gato’apresenta apenas uma análise: o nó 1, canis, depende do nó 2, videt, e o nó3, felem, também depende de videt.

Testemos a mesma sentença com ordenamentos diferentes de palavras.

?- try([canis,felem,videt]).

canis felem videt

3 v ’sees’ _ sg _ 3

2 n ’cat’ masc sg acc 3

1 n ’dog’ masc sg nom 3

No (more) parses.

Yes

Temos o mesmo resultado, com as variações apenas nos números dos nós(que indicam a ordem original das palavras na expressão) e a ordem em queas regras foram encontradas: o objeto, agora, foi encontrado antes do sujeito.

As mesmas variações acontecem nas outras ordens possíveis para as palavras

24

dessa sentença, mas as árvores de dependência são sempre corretas: os argu-mentos dependem do verbo.

Analisemos uma sentença um pouco mais complicada, mas ainda não-ambígua. A sentença ‘O cachorro vê o gato pequeno’ contém agora um adje-tivo que só pode ser dependente de gato, em latim, já que ambos concordamem caso. Assim, qualquer que seja o ordenamento da sentença apresenta amesma árvore de dependência. Analisemos primeiramente uma ordem mais“canônica” para a sentença e, posteriormente, uma sequência mais radical-mente desordenada:

?- try([canis, felem, parvum, videt]).

canis felem parvum videt

4 v ’sees’ _ sg _ 3

2 n ’cat’ masc sg acc 3

3 adj ’small’ masc sg acc _

1 n ’dog’ masc sg nom 3

No (more) parses.

Yes

?- try([parvum, canis, videt, felem]).

parvum canis videt felem

3 v ’sees’ _ sg _ 3

2 n ’dog’ masc sg nom 3

4 n ’cat’ masc sg acc 3

1 adj ’small’ masc sg acc _

No (more) parses.

Yes

25

A primeira expressão apresenta os sintagmas contíguos na ordem canônicalatina SOV: canis é sujeito, felem parvum é objeto e videt é o verbo. Nasegunda sentença, parvum, que modifica felem, está separado de seu núcleopelas outras palavras da sentença, e mesmo assim a árvore de dependência éa mesma: nos dois casos o adjetivo pequeno depende de gato, gato dependede vê e cachorro depende de vê.

Passemos às análises de sentenças sintaticamente ambíguas. Uma sen-tença como “canes feles vident” pode ser traduzida tanto por “Os cachorrosvêem os gatos” quanto por “Os gatos vêem os cachorros”. Isso se dá porqueas formas de nominativo e acusativo plural dos nomes da terceira declinaçãolatina possuem desinências iguais. Assim, o analisador deveria apresentarduas respostas: ambas com substantivos sujeito (no nominativo) e objeto(no acusativo) dependendo do verbo principal. Isso acontece. Mas tam-bém acontece que duas outras análises aparecem como resultados. Vejamosabaixo:

?- try([canes, feles, vident]).

canes feles vident

3 v ’see’ _ pl _ 3

2 n ’cat’ masc pl nom 3

1 n ’dog’ masc pl nom 3

3 v ’see’ _ pl _ 3

2 n ’cat’ masc pl acc 3

1 n ’dog’ masc pl nom 3

3 v ’see’ _ pl _ 3

2 n ’cat’ masc pl nom 3

1 n ’dog’ masc pl acc 3

3 v ’see’ _ pl _ 3

2 n ’cat’ masc pl acc 3

1 n ’dog’ masc pl acc 3

26

No (more) parses.

Yes

Como podemos notar, na primeira resposta, o analisador interpreta ambosos substantivos como sujeitos do verbo principal (uma opção que a morfologiadá mas que a sintaxe não deveria permitir). Na quarta análise, os doissubstantivos são interpretados como objetos do verbo principal, o que é tãocomplicado quanto a primeira análise. As duas análises intermediárias são ascorretas, que interpretam feles ora como sujeito e ora como objeto e canes oracomo sujeito e ora como objeto. Esse é um problema que Covington nota: nãohá nada que impeça o analisador de anexar mais de um sujeito e mais de umobjeto para cada verbo. É necessário que se faça reflexão mais aprofundadasobre esses resultados, já que o analisador gera cegamente mais análises doque se esperaria. Não devemos rejeitar imediatamente essas análises antes depensarmos nas seguintes questões: um verbo sem sujeito e com dois objetoscoordenados por vírgula no latim pode não ser tão agramatical quanto parece,já que a morfologia verbal nos diz quem é o sujeito oculto e já que, em algunscasos, a coordenação pode se dar de outra forma que não com a conjunçãoet : pode-se coordenar sintagmas em latim acrescentando-se o sufixo -queao último elemento da lista de itens coordenados e pode-se, eventualmente,coordenar itens apenas com o uso de vírgulas (essa última possibilidade,admito, deve ser averiguada com mais cuidado).

Assim, podemos ver que o analisador de Covington dá conta da variaçãolivre de ordem no latim para um fragmento reduzido da gramática (verbostransitivos diretos e substantivos modificados por adjetivos). Apesar dasanálises adicionais que não parecem bem vindas num primeiro momento, asvantagens sobre o analisador proposto anteriormente são óbvias. Discutamosessas questões no próximo capítulo.

Capítulo 4

Conclusão

4.1 Prós e contras do analisador em DCG

Um analisador gramatical em DCG é fácil de ser implementado e lidabastante bem com gramáticas de estrutura sintagmática. Ou seja, paralínguas de ordem mais rígida, como o inglês, uma gramática de estruturasintagmática em DCG implementada em Prolog pode analisar melhor umfragmento um pouco maior da língua. No entanto, para línguas com umpouco mais liberdade de ordem, como o português, ou línguas com aindamais liberdade (de ordem quase livre) como o latim, o finlandês e o russo,e para línguas que se supõe que sejam totalmente livres de ordem (como owalpiri, língua aborígene australiana), uma gramática de estrutura sintag-mática com regras de reescritura do tipo “S se reescreve como um SN seguidode um SV” não dão conta de analisar corretamente os fenômenos de variaçãode ordem e descontiuidade sintagmática. Por isso, o analisador propostono capítulo 2 dessa monografia não se mostrou adequado para analisar umalíngua como o latim.

4.2 Prós e contras do analisador de Covington

Já o analisador de Covington, estruturado através de uma gramática dedependência, lida mais razoavelmente com a variabilidade de ordem em uma

27

28

língua como o latim. No entanto, a primeira ressalva séria que o próprioautor faz (Covington, 2003, p. 7) é a de que o analisador na verdade trata olatim como se não houvesse limitação alguma de ordem de palavras. Sabemosque isso pode ser complicado, mas a falta de falantes nativos com quem sepudesse testar as hipóteses de análise e as restrições possíveis na variação daordem das palavras em latim faz com que a assunção da total liberdade deordem seja, na verdade, uma saída razoável para o problema. Isso porque,se tivéssemos que seguir os manuais de retórica/oratória, o uso “clássico” dalíngua, as restrições pragmáticas, as de estilo ou quaisquer que fossem asrestrições exceto as sintáticas e morfológicas, precisaríamos estabelecer comprecisão quais seriam essas restrições. Portanto, uma gramática que trate olatim como uma língua com liberdade total de variação de ordem de palavrastalvez seja vantajosa do ponto de vistá científico e eventualmente pedagógico:as análises sintáticas são todas disponibilizadas pelo analisador, e o usuáriodo programa (acadêmico ou eventual aprendiz de latim) pode avaliar todasas possibilidades de leituras sintáticas para uma dada expressão.

Assim, provido de um léxico mais rico e de mais regras de dependência,o analisador de Covington pode ser uma excelente ferramenta para auxiliaros usuário do latim no seu trato com a língua. Com um pouco de esforço, asárvores de dependência com glosas podem ser transformadas em sentençassimples de outras línguas, criando um tradutor simples de latim para outraslínguas. Pode-se também pensar em aplicações pedagógicas para o programa:alunos de latim podem ser instruídos pelos professores a realizar consultaspara análises de sentenças latinas, bastando que, para tanto, se construa umainterface mais amigável para o usuário do analisador.

4.3 Considerações finais

Finalmente, como um trabalho introdutório à questão da análise gramat-ical em Prolog de uma língua sem falantes vivos como o latim, os resultadosa que chegamos foram satisfatórios, já que, mesmo não tendo desenvolvidoum analisador eficiente para o latim, pudemos encontrar e descrever um jádesenvolvido que consideramos eficiente em vários pontos e cujas limitações,

29

admitidas pelo autor, podem vir a ser, de acordo com o mesmo, reduzidasatravés do uso de estruturas de características e de restrições mais empíricassobre a gramática.

Referências Bibliográficas

Clocksin, W. F. and Mellish, C. S. (1981). Programming in Prolog, Springer,Berlin.

Covington, M. A. (1990). A dependency parser for variable-word-order lan-guages, Research report ai-1990-01, The University of Georgia. AvailableOnline at http://www.ai.uga.edu/ftplib/ai-reports/ai199001.ps.

Covington, M. A. (1994a). Discontinuous dependency parsing offree and fixed word order: Work in progress, Research re-port ai-1994-02, The University of Georgia. Available Online athttp://www.ai.uga.edu/ftplib/ai-reports/ai199402.ps.

Covington, M. A. (1994b). Natural Language Processing for Prolog Program-mers, Prentice-Hall, Englewood Cliffs, New Jersey.

Covington, M. A. (2003). A free-word-order dependency parser in prolog,Internet: www.ai.uga.edu/mc.

Hawkins, J. A. (1983). Word order universals, Academic Press, New York.

Pagani, L. A. (2004). Gramática categorial através de estrutura de carac-terística, Revista Letras (60): 385–410.

Pagani, L. A. (n.d.a). Analisador gramatical em prolog para gramáticascategoriais, Internet: http://www.cce.ufpr.br/ pagani/gramcat.pdf.

Pagani, L. A. (n.d.b). Analisador gramatical em prolog para gramáti-cas de estrutura sintagmática, Internet: http://www.cce.ufpr.br/ pa-gani/portdcg1.pdf.

30

31

Pereira, F. and Shieber, S. (1987). Prolog and Natural Language Analysis,CSLI/SRI International, Stanford, CA.

Rubio, L. (1989). Introducción a la sintaxis estructural del latín, Ariel,Barcelona.