relatÓrio de estÁgio - clul.ulisboa.pt · o centro de linguística da universidade de lisboa –...

160
Faculdade de Ciências - Universidade de Lisboa DEPARTAMENTO DE INFORMÁTICA Bloco C5 - Piso 1 - Campo Grande, 1700 Lisboa Tel & Fax: 351.1.7500084 RELATÓRIO DE ESTÁGIO realizado no âmbito do projecto INQUER – Interacção Pessoa-Máquina em Linguagem Natural MÓDULO I Análise Sintáctico - Semântica CLG – Grupo de Computação do Conhecimento Léxico-Gramatical CENTRO DE LINGUÍSTICA DA UNIVERSIDADE DE LISBOA Catarina Santiago Ribeiro Lisboa, Março de 2003 Universidade de Lisboa Faculdade de Ciências

Upload: voanh

Post on 13-Nov-2018

220 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Faculdade de Ciências - Universidade de Lisboa DEPARTAMENTO DE INFORMÁTICA

Bloco C5 - Piso 1 - Campo Grande, 1700 Lisboa Tel & Fax: 351.1.7500084

RELATÓRIO DE ESTÁGIO

realizado no âmbito do projecto

INQUER – Interacção Pessoa-Máquina

em Linguagem Natural

MÓDULO I – Análise Sintáctico - Semântica

CLG – Grupo de Computação do Conhecimento

Léxico-Gramatical

CENTRO DE LINGUÍSTICA DA

UNIVERSIDADE DE LISBOA

Catarina Santiago Ribeiro

Lisboa, Março de 2003

Universidade de Lisboa

Faculdade de Ciências

Page 2: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional
Page 3: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Faculdade de Ciências - Universidade de Lisboa DEPARTAMENTO DE INFORMÁTICA

Bloco C5 - Piso 1 - Campo Grande, 1700 Lisboa Tel & Fax: 351.1.7500084

RELATÓRIO DE ESTÁGIO

realizado no âmbito do projecto

INQUER – Interacção Pessoa-Máquina

em Linguagem Natural

MÓDULO I – Análise Sintáctico - Semântica

CLG – Grupo de Computação do Conhecimento Léxico-Gramatical

CENTRO DE LINGUÍSTICA DA

UNIVERSIDADE DE LISBOA

Catarina Santiago Ribeiro

Responsável pela FCUL: Prof. Doutor António Branco

Responsável pelo CLUL: Prof.ª Doutora Palmira Marrafa

Lisboa, Março de 2003

Page 4: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional
Page 5: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Resumo

O interesse em sistemas de pergunta-resposta tem vindo a aumentar nos últimos anos com a

expansão de novas tecnologias na área das bases de dados e da Internet. O aumento da informação

disponível torna necessário o desenvolvimento de sistemas que permitam uma interacção com o

utilizador de forma mais natural e eficaz.

Nos últimos anos, a necessidade de desenvolver sistemas de pergunta-resposta tem vindo a crescer

à medida que cresce o interesse por parte de investigadores, empresas e utilizadores. Estes

sistemas, ao contrário do que o que acontece nos sistemas de extracção de informação

convencionais, permitem a inserção de perguntas em língua natural e devolvem respostas também

em língua natural em vez de apresentarem listas de documentos.

Na sua forma mais simples, que é lidar com interrogativas totais polares, estes sistemas têm de ser

capazes de determinar o valor de verdade da proposição que está em causa. Um sistema de

pergunta-resposta capaz de lidar com qualquer tipo de estrutura interrogativa (descrito numa dada

gramática computacional) em qualquer contexto (fornecido por uma dada base de dados) tem de

compreender a pergunta de uma forma não trivial.

O projecto INQUER tem como objectivo o desenvolvimento de um sistema deste genéro que

permita a extracção de informação contida na WordNet.PT. O desenvolvimento deste sistema foi

dividido em módulos, respeitando este relatório ao Módulo I – Análise Sintáctico – Semântica.

Page 6: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional
Page 7: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Índice

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 7

Índice

1. INTRODUÇÃO ..............................................................................................................................11

1.1 INSTITUIÇÃO DE ACOLHIMENTO .....................................................................................11

1.2 INTERACÇÃO PESSOA-MÁQUINA EM LINGUAGEM NATURAL – INQUER.................16

1.3 ESTRUTURA DO RELATÓRIO FINAL DE ESTÁGIO.........................................................17

2. OBJECTIVOS DO ESTÁGIO E CONTEXTO DO TRABALHO ................................................19

2.1 OBJECTIVOS DO ESTÁGIO.................................................................................................19

2.2 CONTEXTO DO TRABALHO...............................................................................................19

3. METODOLOGIA E CALENDARIZAÇÃO DO TRABALHO.....................................................23

3.1 METODOLOGIA ...................................................................................................................23

3.2 CALENDARIZAÇÃO DO TRABALHO ................................................................................23

4. ESTUDO SOBRE A WORDNET.PT.............................................................................................29

5. MÉTODO DE PROCESSAMENTO DAS PERGUNTAS.............................................................31

6. LINGUAGEM DE PROGRAMAÇÃO ..........................................................................................33

7. ESCOLHA DO PARSER................................................................................................................35

7.1 ESTRATÉGIAS DE ANÁLISE...............................................................................................35

7.2 PARSER ESCOLHIDO...........................................................................................................36

8. FORMALISMOS SINTÁCTICO E SEMÂNTICO .......................................................................39

8.1 FORMALISMO SINTÁCTICO ..............................................................................................39

8.2 FORMALISMO SEMÂNTICO...............................................................................................41

9. TIPOS DE PERGUNTAS...............................................................................................................47

9.1 QUESTIONÁRIO...................................................................................................................47

9.2 RESULTADOS OBTIDOS .....................................................................................................47

9.3 TRATAMENTO DOS RESULTADOS ...................................................................................48

10. BASE DE DADOS LEXICAL ......................................................................................................51

10.1 EXPRESSÕES NOMINAIS SIMPLES .................................................................................52

10.3 EXPRESSÕES NOMINAIS QUE SELECCIONAM COMPLEMENTO................................54

10.2 EXPRESSÕES VERBAIS.....................................................................................................55

10.4 OUTRAS EXPRESSÕES......................................................................................................55

11. A GRAMÁTICA...........................................................................................................................57

11.1 META-ENTRADAS LEXICAIS...........................................................................................58

Page 8: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

8 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

11.2 REGRAS LEXICAIS ............................................................................................................72

11.3 REGRAS SINTAGMÁTICAS ..............................................................................................73

12. ALGORITMO DE CONVERSÃO ...............................................................................................93

13. CONCLUSÕES E TRABALHO FUTURO..................................................................................95

13.1 TRABALHO FUTURO..........................................................................................................95

REFERÊNCIAS..................................................................................................................................97

ANEXOS...........................................................................................................................................101

ANEXO 1 – AVALIAÇÃO DOS PARSERS .............................................................................103

ANEXO 2 – QUESTIONÁRIO..................................................................................................113

ANEXO 3 – LISTA DE PERGUNTAS RECEBIDAS .............................................................115

ANEXO 4 – EXCERTO DA BASE DE DADOS LEXICAL ....................................................119

ANEXO 5 – MECANISMO DE HERANÇA DE TRAÇOS .........................................................123

ANEXO 6 – IMPLEMENTAÇÃO DA GRAMÁTICA ..................................................................125

ANEXO 7 – EXEMPLOS DO PROCESSAMENTO SINTÁCTICO E SEMÂNTICO DE

INTERROGATIVAS................................................................................................145

ANEXO 8 – IMPLEMENTAÇÃO DO ALGORITMO DE CONVERSÃO ....................................149

ANEXO 9 – EXEMPLOS DA REPRESENTAÇÃO SEMÂNTICA DE INTERROGATIVAS EM

PORTUGUÊS UTILIZANDO O ALGORITMO DE CONVERSÃO .........................157

Page 9: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Índice de Figuras, Quadros e Regras Sintagmáticas

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 9

Índice de Figuras, Quadros e Regras Sintagmáticas

FIGURAS

FIGURA 1 – RELAÇÃO HIPERONÍMIA/HIPONÍMIA......................................................................................29

FIGURA 2 – ESQUEMA GERAL DO MÓDULO I ...........................................................................................57

FIGURA 3 – META-ENTRADA LEXICAL ....................................................................................................58

FIGURA 4 – REGRA SINTAGMÁTICA ........................................................................................................73

FIGURA 5 – REPRESENTAÇÃO EM ÁRVORE DA ESTRUTURA SINTÁCTICA ADOPTADA PARA AS ADJUNÇÕES A

N’........................................................................................................................................77

FIGURA 6 – EXEMPLO DA APLICAÇÃO DA REGRA SINTAGMÁTICA 3 .........................................................78

FIGURA 7 – REPRESENTAÇÃO DA ESTRUTURA SINTÁCTICA ADOPTADA PARA A ADJUNÇÃO DO

QUANTIFICADOR “TODOS” A N’’............................................................................................80

FIGURA 8 – REPRESENTAÇÃO EM ÁRVORE DA ESTRUTURA SINTÁCTICA ADOPTADA PARA A ADJUNÇÃO DO

OPERADOR DE NEGAÇÃO A SV ..............................................................................................81

FIGURA 9 – REPRESENTAÇÃO EM ÁRVORE DA ESTRUTURA SINTÁCTICA ADOPTADA PARA AS

CONJUNÇÕES .......................................................................................................................84

FIGURA 10 – REPRESENTAÇÃO EM ÁRVORE DA ESTRUTURA SINTÁCTICA ADOPTADA PARA O

ESPECIFICADOR-NÚCLEO.......................................................................................................87

QUADROS

QUADRO 1– CALENDARIZAÇÃO DO PLANO .............................................................................................23

QUADRO 2 – TEMPO DA ANÁLISE DAS FRASES.........................................................................................37

QUADRO 3 – CORRESPONDÊNCIA ENTRE SÍMBOLOS LPO E OPERADORES DEFINIDOS PARA A

REPRESENTAÇÃO EM PROLOG ............................................................................................42

QUADRO 4 – REPRESENTAÇÃO SEMÂNTICA DE QUANTIFICADORES ..........................................................44

QUADRO 5 – TRAÇOS DAS EXPRESSÕES NOMINAIS SIMPLES .....................................................................53

QUADRO 6 – TRAÇOS DAS EXPRESSÕES NOMINAIS QUE SELECCIONAM COMPLEMENTOS ...........................54

QUADRO 7 – TRAÇOS DAS EXPRESSÕES VERBAIS ....................................................................................55

QUADRO 8 – TRAÇOS DE OUTRAS EXPRESSÕES PRESENTES NA BASE DE DADOS LEXICAL...........................56

Page 10: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

10 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

REGRAS SINTAGMÁTICAS

REGRA SINTAGMÁTICA 1 – PROMOÇÃO DE X PARA X’............................................................................74

REGRA SINTAGMÁTICA 2 – ORAÇÕES RELATIVAS RESTRITIVAS ...............................................................74

REGRA SINTAGMÁTICA 3 – ADJUNÇÃO DE UM MODIFICADOR (SP/VR) A UM N’ E DE UM QUANTIFICADOR A

UM N’ ’ .........................................................................................................76

REGRA SINTAGMÁTICA 4 – ADJUNÇÃO DA NEGAÇÃO A SV .....................................................................81

REGRA SINTAGMÁTICA 5 – SNS MARCADOS...........................................................................................83

REGRA SINTAGMÁTICA 6 – COORDENAÇÕES ..........................................................................................84

REGRA SINTAGMÁTICA 7 – ESPECIFICADOR - NÚCLEO ............................................................................87

REGRA SINTAGMÁTICA 8 – VERBO EXISTIR COM INVERSÃO DE SUJEITO ...................................................89

REGRA SINTAGMÁTICA 9 – GAP À DIREITA DE UM NÚCLEO VERBAL ........................................................90

REGRA SINTAGMÁTICA 10 – PREDICADOS COM UM COMPLEMENTO IN SITU .............................................90

Page 11: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Introdução

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 11

1. Introdução

O presente estágio insere-se no 5º ano da Licenciatura em Engenharia da Linguagem e do Conhecimento

da Faculdade de Letras e da Faculdade de Ciências da Universidade de Lisboa. É nesta última instituição

que, através do departamento de informática (http://www.di.fc.ul.pt/), o estágio está inscrito.

O estágio tem a duração de seis meses com início a 1 de Setembro de 2002 e fim a 28 de Fevereiro de

2003. A Prof. Doutora Palmira Marrafa1 é a orientadora por parte da instituição de acolhimento, sendo o

Prof. Doutor António Branco2 co-orientador por parte do departamento de informática.

1.1 INSTITUIÇÃO DE ACOLHIMENTO

O estágio decorreu numa unidade de investigação, mais especificamente, no Grupo de Computação do

Conhecimento Léxico-Gramatical – CLG, do Centro de Linguística da Universidade de Lisboa (CLUL),

situado no Complexo Interdisciplinar da Universidade de Lisboa.

1.1.1 CENTRO DE LINGUÍSTICA DA UNIVERSIDADE DE LISBOA – CLUL

1.1.1.1 HISTÓRIA

O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976

como adstrito ao Instituto Nacional de Investigação Científica (INIC), continua o Centro de Estudos

Filológicos (CEF), criado em 1932 na dependência do Instituto de Alta Cultura. Apesar do seu nome e da

estreita relação que desde a sua criação mantém com a Universidade de Lisboa, nunca esteve, de facto,

ligado a qualquer departamento dessa universidade, tendo desde sempre procurado preservar a sua

identidade e a sua autonomia em matéria de planeamento e execução da actividade científica, como forma

de garantir as condições e as estruturas básicas para uma actividade de investigação e desenvolvimento

planeada a longo prazo e de carácter interdisciplinar. Aquando da extinção do INIC, a sua dimensão, o

seu riquíssimo património e a especificidade dos trabalhos nele realizados justificaram a manutenção de

um estatuto de autonomia relativa e a sua integração na Universidade de Lisboa como centro de

investigação directamente dependente da Reitoria, estando ainda em curso as diligências necessárias para

homologação de estatutos próprios, condizentes com esta nova situação.

1A Profª Doutora Palmira Marrafa é Professora do Departamento de Linguística Geral e Românica, da Faculdade deLetras da Universidade de Lisboa, sendo docente da Licenciatura em Engenharia da Linguagem e do Conhecimento, edirectora e coordenadora científica do CLG.

2 O Prof. Doutor António Branco é Professor do Departamento de Informática, da Faculdade de Ciências daUniversidade de Lisboa, sendo docente da Licenciatura em Engenharia da Linguagem e do Conhecimento.

Page 12: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

12 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

1.1.1.2 OBJECTIVOS E ESTRUTURA

O Centro de Linguística da Universidade de Lisboa – CLUL (http://www.clul.ul.pt/) é uma unidade que

depende directamente da Reitoria da Universidade de Lisboa e se dedica à investigação, formação e

divulgação científicas. Tem como principais objectivos a realização de actividades de investigação e de

desenvolvimento experimental nas áreas da Linguística e a promoção e realização de investigação

interdisciplinar, associando às áreas especificamente linguísticas áreas afins, nomeadamente a da

Filologia, Antropologia e Engenharia da linguagem e do Conhecimento. Contribui para a formação de

investigadores nessas áreas e para o conhecimento da língua portuguesa, apoiando a sua divulgação

formação.

Actualmente, conta com cinco grupos de investigação a saber: Fala, Linguística de Corpus, Computação

do Conhecimento Gramatical (CLG), Variação e Filologia. Fazem parte deste centro cerca de 50

investigadores, assistentes e professores repartidos pelos vários grupos dependendo da área da sua

especialidade.

Projectos do grupo de Fala:

- Estudo sobre a Relação entre Factores Segmentais e Prosódicos em Português Europeu;

- DIXI+: Um Sintetizador Texto-para-Fala em Português para Comunicação Alternativa e

Aumentativa;

- Alguns aspectos da Fonologia do Português no Quadro Auto-Segmental.

Projectos do grupo de Linguística de Corpus:

- Recursos Linguísticos Disponíveis (RLD): Corpora e Léxicos;

- CRPC – Corpus de Referência do Português Contemporâneo;

- C-ORAL-ROM – Integrated Reference Corpora for Spoken Romance Languages;

- Recursos Linguísticos para o Português: um corpus e instrumentos para a sua consulta e análise;

- Léxico Multifuncional Computorizado do Português Contemporâneo;

- SIMPLE – Semantic Information for Multifunctional Plurilingual Lexica;

- Tábuas de concordâncias, uma ferramenta para o estudo da língua portuguesa;

- Análise Sintáctica e Semântica dos Verbos Psicológicos do Português, Passagens Semânticas e

Homonímia;

- AUDIOLING-LP Língua Portuguesa: som e pronúncia;

- Estudo do uso e do Significado da Preposição DE em Contextos Nominais SN DE SN;

- Ensino de Aspectos de Morfologia e de Sintaxe do Português Língua Materna;

- ENABLER: European National Activities for Basic Language Resources.

Projectos do grupo de Computação do Conhecimento Léxico-Gramatical:

- WordNet.PT – Rede Semântica-Lexical da Língua Portuguesa;

- PROGRAM – Laboratório de Processamento Gramatical;

Page 13: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Introdução

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 13

- TFNL – Teorias Formais das Línguas Naturais: Fundamentos Conceptuais, Arquitecturas e

Computação.

- LexNet – Especificação de Padrões de Lexicalização para uma Extensão da WordNet.PT

- A interface léxico-enciclopédia na construção de léxicos computacionais

- INQUER – Interacção Pessoa – Máquina em linguagem natural

Projectos do grupo de Variação:

- ALEPG – Atlas Linguístico-Etnográfico de Portugal e da Galiza;

- ALEAç – Atlas Linguístico e Etnográfico dos Açores;

- ALLP – Atlas Linguístico do Litoral Português;

- ALiR – Atlas Linguistique Roman;

- ALE – Atlas Linguarum Europae;

- Linguagens Fronteiriças: Mirandês;

- Linguagens Fronteiriças: Barranquenho;

- CORDIAL-SIN – Corpus Dialectal com Anotação Sintáctica;

- Estudo das Variantes Flexionais do Verbo em Português Continental Falado.

Projectos do grupo de Filologia:

- DRA: Dicionário de Regionalismos e Arcaísmos;

- Estudos de Lírica Galego-Portuguesa;

- Bibliografia da Prosa Medieval em Língua Portuguesa;

- Filologia Medieval;

- Filologia do Manuscrito Moderno;

- Fontes para a História do Português Clássico;

- Onomástico Português e Românico.

1.1.1.3 ÓRGÃOS DE GESTÃO

Assembleia Plenária

A Assembleia Plenária é o órgão representativo máximo do CLUL. À Assembleia Plenária compete:

� aprovar e propor superiormente eventuais alterações estatutárias;

� eleger os vogais da Comissão Directiva e decidir da sua eventual substituição ou destituição;

� discutir quaisquer assuntos que lhe sejam submetidos pelo Conselho Científico, pela Comissão

Directiva ou por iniciativa de um terço dos seus membros.

Conselho Científico

O Conselho Científico é o órgão responsável pela definição e pela condução da política científica do

CLUL, compreendendo a planificação, a orientação e a coordenação, nas suas grandes linhas, das

actividades sectoriais.

Page 14: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

14 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Compete ao Conselho Científico:

� definir, criar ou reestruturar os sectores de investigação do CLUL;

� orientar e estimular a actividade do CLUL;

� discutir e aprovar os programas dos sectores, seus projectos de investigação e actividades

complementares;

� apreciar e aprovar os planos e relatórios anuais e plurianuais de actividade científica;

� planificar as acções de formação do CLUL;

� emitir directrizes gerais relativas às actividades da biblioteca, do serviço de documentação, do

serviço de edições e de quaisquer outros serviços que no CLUL venham a ser criados;

� aprovar os acordos e convénios de incidência científica e pedagógica entre o CLUL e quaisquer

outras entidades;

� fazer propostas relativas à aquisição de equipamentos e de material bibliográfico e documental.

Comissão Directiva

A Comissão Directiva é o órgão de gestão administrativa e financeira do CLUL. É composta por quatro

membros, um presidente e três vogais. Os vogais são eleitos pela Assembleia Plenária. As funções de

Presidente da Comissão Directiva são desempenhadas, por inerência, pelo Coordenador Científico do

CLUL.

Compete à Comissão Directiva:

� velar pelo cumprimento da lei e dos estatutos e dirigir os serviços;

� executar, dentro das possibilidades orçamentais, as deliberações da Assembleia Plenária e do

Conselho Científico e coordenar toda a actividade inerente à gestão administrativa e financeira

ou relativa ao património do CLUL;

� assegurar a realização de todas as eleições previstas nos estatutos;

� elaborar e/ou aprovar os orçamentos e os relatórios de contas anuais ou plurianuais, de acordo

com as prioridades definidas pelo Conselho Científico;

� executar as políticas definidas pelo Conselho Científico e elaborar os planos de desenvolvimento

do CLUL;

� propor a abertura de concursos de admissão ou de promoção de pessoal não científico e propor

as respectivas nomeações e contratações;

� deliberar sobre as aquisições necessárias ao bom funcionamento do CLUL e promovê-las;

� aceitar liberalidades feitas ao CLUL.

Page 15: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Introdução

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 15

Coordenador Científico

O Coordenador Científico é, por inerência, Presidente da Comissão Directiva, sendo eleito pelo Conselho

Científico.

Compete ao Coordenador Científico:

� convocar o Conselho Científico e presidir às suas reuniões;

� dar publicidade às deliberações do Conselho Científico e promover a discussão das que não

forem directamente cometidas a outros membros do Conselho;

� coordenar as actividades do CLUL e assegurar a elaboração dos planos, relatórios anuais e

plurianuais de actividade científica;

� fomentar a discussão das grandes opções programáticas;

� supervisionar a negociação de acordos ou convénios entre CLUL e quaisquer outras entidades,

cabendo-lhe propor ao Conselho Científico a sua aprovação;

� presidir aos júris de concursos de admissão ou promoção de pessoal científico do CLUL.

1.1.2 GRUPO DE COMPUTAÇÃO DO CONHECIMENTO LÉXICO-GRAMATICAL – CLG

A Prof. Doutora Palmira Marrafa é a coordenadora deste grupo, que tem como principais linhas de

investigação (i) a modelização computacional das línguas naturais e (ii) o estudo dos fundamentos

conceptuais das teorias formais das línguas naturais.

A primeira destas linhas subdivide-se em semântica lexical do Português e modelização das línguas

naturais, e sistemas de parsing. No âmbito do primeiro subdomínio estão em fase de desenvolvimento três

projectos dos quais se destaca, pela sua importância neste estágio, o projecto WordNet.PT. Este projecto

visa a construção de uma Base de Dados Lexicais susceptível de ser utilizada em várias aplicações no

âmbito da Linguística Computacional e da Engenharia da Linguagem, tais como instrumentos de apoio ao

ensino do Português, tradução automática, busca de informação com base em perguntas em Português,

interfaces em Português, etc. Os resultados deste projecto estão já, em parte, gratuitamente disponíveis na

Internet (http://www.clul.ul.pt/WordNet/index.html).

Ainda dentro deste domínio está em fase de desenvolvimento o projecto LexNet – Especificação de

Padrões de Lexicalização para uma Extensão da WordNet.PT– e o projecto “A interface léxico-

enciclopédica na construção de léxicos computacionais”.

No domínio da modelização das línguas naturais e sistemas de parsing estão a ser desenvolvidas várias

dissertações de doutoramento e monografias, enquadradas no projecto PROGRAM –Laboratório de

Processamento Gramatical, que envolve a modelização e a computação de diversos fenómenos

Page 16: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

16 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

gramaticais e análise comparativa de algoritmos de parsing para diferentes quadros de representação

gramatical.

Da segunda grande linha de investigação (ii) destaca-se o projecto TFNL-Teorias Formais das Línguas

Naturais: Fundamentos Conceptuais, Arquitecturas e Computação, no âmbito do qual está a ser

desenvolvida uma cartografia conceptual comparativa das ferramentas e dos temas mais importantes nas

arquitecturas das teorias formais das línguas naturais.

1.2 INTERACÇÃO PESSOA-MÁQUINA EM LINGUAGEM NATURAL – INQUER

A estagiária integrou uma equipa de dois elementos que tinha como objectivo o planeamento e

desenvolvimento da primeira fase de um projecto denominado INQUER – Interacção Pessoa-Máquina

em Linguagem Natural. Este projecto destina-se a desenvolver um sistema de pergunta-resposta em

Linguagem Natural que permitirá a interacção entre o utilizador e a máquina, sendo que esta última

responderá a questões simples sobre o mundo real. Para isso o sistema utilizará a WordNet.PT que contém

informação suficiente e organizada de forma a facilitar a busca e extracção dessa mesma informação.

O sistema INQUER será um recurso tecnológico capaz de explorar as potencialidades da WordNet.PT

uma vez que permitirá um fácil acesso à informação aí descrita. Para além disso, será também uma

ferramenta linguística, na medida em que recebe perguntas em linguagem natural e as analisa de forma a

construir uma representação semântica capaz de permitir a extracção da informação relevante. Embora

esta ferramenta tenha sido pensada para a exploração de recursos da WordNet.PT, os mecanismos e

metodologias que utiliza podem ser facilmente adaptáveis a outro tipo de base de dados.

O desenvolvimento deste sistema foi subdividido em três grandes módulos sendo, nesta primeira fase,

implementados apenas dois. O primeiro módulo consiste na implementação de um analisador sintáctico

de perguntas em Linguagem Natural e de um gerador de representações semânticas adequadas, de forma a

serem utilizadas no Módulo II – Inferência. Nesse módulo será pesquisada e extraída a informação

necessária à elaboração da resposta, sendo o resultado utilizado no módulo III para a construção de uma

resposta em língua natural – Geração (módulo não desenvolvido nesta fase do projecto).

Devido à modularidade deste sistema é necessária uma constante interacção entre os responsáveis pela

implementação dos diferentes módulos. Assim, durante todo o desenvolvimento desta fase do projecto

houve um trabalho de equipa que cabe salientar.

Page 17: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Introdução

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 17

A importância deste projecto, assim como a sua complexidade, fazem com que o seu desenvolvimento

não se limite aos 6 meses de duração do estágio, sendo que outras fases de desenvolvimento estão já a ser

planeadas (nomeadamente a fase da Geração).

Os objectivos gerais do desenvolvimento desta primeira fase do projecto passam pelos seguintes itens:

1. Enriquecimento da base de dados extraída da WordNet.PT

2. Construção de um sistema de análise de estruturas gramaticais

3. Construção de um sistema de busca e extracção de informação

4. Construção de uma interface que permita a introdução de perguntas em língua natural e devolva

uma resposta

1.3 ESTRUTURA DO RELATÓRIO FINAL DE ESTÁGIO

Neste relatório são apresentadas todas as opções tomadas durante a construção do módulo I, da

responsabilidade da estagiária, que no que respeita à implementação quer no que respeita à motivação

linguística.

No capítulo seguinte – Objectivos do estágio e contexto do trabalho – são apresentados os objectivos

do estágio, o plano de trabalho inicialmente delineado, assim como uma pequena descrição de todas as

suas fases.

No capítulo 3 – Metodologia e calendarização do trabalho – é apresentada a calendarização inicial do

plano descrito no capítulo 2, as alterações ao plano inicial e a justificação dessas mesmas alterações.

No capítulo 4 – Estudo sobre a WordNet.PT – é apresentada brevemente a base de dados de

conhecimento linguístico que serve de base de dados ao sistema.

Nos capítulos seguintes são apresentadas e justificadas as várias opções tomadas para a implementação da

do sistema. No capítulo 5 – Método de processamento das perguntas – é descrita a opção tomada para

o tratamento das perguntas introduzidas pelo utilizador.

No capítulo 6 – Linguagem de programação – é apresentada a justificação para a escolha da linguagem

de programação escolhida para a implementação do sistema. O capítulo 7 – A escolha do parser –

descreve as razões que levaram à escolha do parser a utilizar neste sistema.

Page 18: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

18 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

No capítulo 8 – Formalismos Sintáctico e Semântico – é justificada a escolha dos formalismos

adoptados no desenvolvimento deste sistema. No Capítulo 9 – Tipos de Perguntas – são apresentados os

vários tipos de construções interrogativas aceites pelo sistema nesta primeira fase, assim como a

justificação para a sua preferência em relação a outros.

No Capítulo 10 – Base de dados lexical – é descrito todo o processo de escolha e tratamento dos lexemas

que constituem a base de dados lexical deste sistema. O Capítulo 11 – A Gramática – descreve a

implementação da gramática deste sistema, assim como a justificação de todas as opções tomadas do

ponto de vista linguístico.

No capítulo 12 – Algoritmo de conversão – é apresentado o algoritmo que recebe uma interrogativa em

língua natural e devolve uma ou mais representações semânticas adequadas.

Por fim, no Capítulo 13 – Conclusões e Trabalho Futuro – é feita uma análise crítica ao trabalho

efectuado e apontadas as perspectivas para um trabalho futuro.

Page 19: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Objectivos do estágio e contexto do trabalho

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 19

2. Objectivos do estágio e contexto do trabalho

2.1 OBJECTIVOS DO ESTÁGIO

O projecto INQUER pretende desenvolver um sistema de interacção Pessoa-Máquina em Linguagem

Natural utilizando como base a WordNet.PT, que está a ser desenvolvida no CLG.

Devido à dimensão de um sistema deste tipo, foi necessária a sua divisão em três módulos distintos –

Análise Sintáctico-Semântica, Inferência e Geração –, sendo, nesta fase, desenvolvidos apenas os dois

primeiros. Cada um dos módulos foi atribuído a um dos elementos de uma equipa constituída para o

desenvolvimento deste projecto.

A estagiária integrou esta equipa a 1 de Setembro de 2002, tendo lhe sido atribuído o desenvolvimento do

módulo I – Análise Sintáctico-Semântica. Este módulo centra-se, concretamente, na selecção e

modelização de estruturas sintácticas e envolve a implementação de um programa que receba como input

uma pergunta em linguagem natural, faça uma análise sintáctica dessa mesma pergunta e construa uma

representação semântica simplificada. Os objectivos gerais deste módulo são:

1. Escolha do tipo de perguntas a tratar numa primeira fase

2. Enriquecimento da base de dados

3. Estudo sobre as várias opções de modelização e implementação possíveis (formalismos

sintáctico e semântico e parser)

4. Construção de uma gramática capaz de dar conta da análise sintáctica e semântica das

construções interrogativas definidas no ponto 1

Para se proceder à concretização deste módulo foi necessária uma pesquisa prévia sobre os trabalhos já

desenvolvidos nesta área assim como um estudo de formalismos computacionais de representação da

sintaxe e da semântica. Foi também necessário estudar bibliografia sobre a WordNet.PT.

2.2 CONTEXTO DO TRABALHO

O projecto INQUER surge no seguimento do projecto WordNet.PT também desenvolvido pelo CLG. Este

projecto permitirá o desenvolvimento de uma ferramenta que potenciará as virtualidades da WordNet.PT

enquanto recurso linguístico, e que permitirá uma pesquisa da informação aí contida de forma fácil e

natural.

Page 20: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

20 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

No desenvolvimento deste projecto estão envolvidas diversas áreas científicas, como é o caso da Lógica,

da Semântica, da Sintaxe, da Inteligência Artificial e da Engenharia da Linguagem, o que lhe confere o

interesse e os riscos acrescidos da multidisciplinaridade.

O plano que se segue apresenta as várias fases da implementação deste módulo, assim como uma breve

descrição dos seus objectivos.

1. Definição do plano

1.1. Estudo da arquitectura geral do projecto WordNet.PT

Selecção e estudo de bibliografia essencial sobre a arquitectura do projecto WordNet.PT, como

base para a concepção e organização do projecto INQUER.

1.2. Concepção do projecto INQUER

1.2.1. Planificação do projecto

1.2.2. Divisão do projecto em três módulos autónomos

1.2.3. Atribuição de tarefas diferentes a cada elemento da equipa de investigação

Esta fase do estágio passa pela integração dos estagiários no CLG – Grupo de Computação do

Conhecimento Léxico-Gramatical, e pela planificação do projecto INQUER.

2. Definição do formato das perguntas

2.1. Levantamento dos vários tipos de perguntas possíveis

Caracterização informal dos vários tipos de interrogativas do Português, relativamente ao tipo de

resposta pretendida.

2.2. Primeira abordagem das várias estratégias de implementação

Reflexão, com base nos pontos anteriores, sobre a forma como cada um dos tipos de perguntas

estudados anteriormente pode ser tratado no âmbito da aplicação em desenvolvimento.

2.3. Selecção dos tipos de perguntas a tratar numa primeira fase do projecto

Tendo em conta as considerações tecidas no ponto anterior, propõe-se, numa primeira fase, a

implementação de apenas alguns dos tipos de interrogativas. A razão desta selecção prende-se

com o facto de a informação necessária para responder a alguns dos tipo de questões não estar

definida ou estruturada na base de dados. Neste contexto, a informação necessária para responder

a todos os tipos de questões teria ainda de ser inserida manualmente na base de dados, o que está

fora do âmbito deste trabalho.

Page 21: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Objectivos do estágio e contexto do trabalho

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 21

3. Avaliação dos formalismos gramaticais

3.1. Pesquisa dos formalismos disponíveis.

Nesta fase procede-se a um levantamento de vários tipos de formalismos existentes para a

construção de gramáticas.

3.2. Estudo e análise aprofundada de cada formalismo.

Neste ponto, avaliam-se as vantagens e as desvantagens dos diferentes formalismos, fazendo uma

comparação entre eles.

3.3. Selecção do formalismo gramatical

Na sequência do trabalho desenvolvido nas etapas anteriores, selecciona-se o formalismo

gramatical mais apropriado para o tratamento do problema em questão.

4. Tratamento do léxico

4.1. Selecção do léxico a tratar

Neste ponto são escolhidos os domínios semânticos do léxico a tratar. A razão desta escolha tem

como principal motivação o facto de a WordNet.PT ainda não ter todos os seus domínios

revistos.

4.2 Extracção e tratamento do léxico da base de dados

Este ponto consiste no tratamento manual do léxico de modo a que este possa ser utilizado pela

aplicação em desenvolvimento. Utiliza-se a WordNet.PT como principal fonte de entradas

lexicais.

5. Representação sintáctica e semântica da frase

5.1. Construção da Gramática

Com base no formalismo escolhido e na arquitectura do léxico, constroem-se as regras da

gramática, definindo a estrutura sintáctica das perguntas a serem reconhecidas pelos sistema.

5.2. Integração da representação semântica na Gramática

Nesta fase elabora-se um estudo sobre métodos de representação semântica e selecciona-se

aquele que melhor se adapta ao problema em questão. Seguidamente procede-se à inclusão da

representação semântica na gramática.

Page 22: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

22 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

6. Avaliação dos parsers

6.1. Pesquisa dos parsers disponíveis.

Neste ponto pesquisa-se e recolhe-se informação sobre os vários tipos de parsers que existem e

sobre os vários métodos de pesquisa que estes podem adoptar.

6.2. Estudo aprofundado de cada parser e comparações entre eles.

Esta fase consiste no levantamento das vantagens e desvantagens de cada parser, assim como dos

métodos de pesquisa mais eficientes para a análise de uma frase.

6.3. Selecção do parser

Nesta fase é escolhido o parser a utilizar na análise das frases, tendo como base as informações

recolhidas no ponto anterior.

6.4. Construção do parser

Este ponto consiste na construção do parser escolhido, com base na gramática e no léxico.

7. Dos termos em linguagem natural aos predicados Prolog

7.1. Determinação dos termos

Neste ponto, e com base nas observações do ponto 1, identificaram-se os termos em linguagem

natural e estabeleceram-se correspondências termos – relações WordNet.PT – predicados Prolog

8. Construção de um algoritmo capaz de converter uma pergunta em Linguagem Natural

uma forma lógica

8.1. Implementação de um algoritmo de conversão

Nesta fase constrói-se um algoritmo que converta uma pergunta em linguagem natural, dada pelo

utilizador, numa forma lógica que represente a semântica, utilizando os mecanismos

anteriormente referidos.

9. Integração do Módulo I no projecto INQUER

9.1. Integração do Módulo I

Este ponto consiste na junção deste módulo aos restantes módulos do projecto INQUER, de

forma a obter-se uma aplicação coerente e funcional.

10. Elaboração do Relatório Final

10.1. Elaboração do Relatório

Nesta fase procede-se à elaboração de um relatório final contendo uma descrição pormenorizada

de todas as fases do trabalho desenvolvido, bem como dos resultados obtidos.

Page 23: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Metodologia e calendarização do trabalho

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 23

3. Metodologia e calendarização do trabalho

3.1 METODOLOGIA

Tratando-se de um estágio na área da investigação, a metodologia adoptada consistiu no estudo de

trabalhos já realizados na área, levantamento dos problemas encontrados e pesquisa de soluções possíveis.

No entanto, como este projecto envolve também uma fase de implementação de uma ferramenta

computacional, foi necessário utilizar metodologias adequadas ao desenvolvimento de software. Essas

metodologias passaram pela escolha da linguagem de programação mais adequada, pela especificação do

programa, pela implementação e pela fase de testes.

3.2 CALENDARIZAÇÃO DO TRABALHO

FASE DATA INÍCIO DATA FIM

1. Definição do plano 1 de Setembro 2002 20 de Setembro de 2002

2. Definição do formato das perguntas 21 de Setembro de 2002 31 de Outubro de 2002

3. Avaliação dos formalismos gramaticais 26 de Setembro de 2002 8 de Outubro de 2002

4. Tratamento do léxico 9 de Outubro de 2002 20 de Novembro de 2002

5. Implementação de algumas estruturas

sintácticas 16 de Novembro de 2002 10 de Dezembro de 2002

6. Avaliação dos parsers 11 de Dezembro de 2002 5 de Janeiro de 2003

7. Implementação das restantes estruturas

sintácticas e das estruturas semânticas 6 de Janeiro de 2003 10 de Fevereiro de 2003

8. Construção de um algoritmo capaz de

converter uma pergunta em Linguagem

Natural para uma forma lógica11 de Fevereiro de 2003 15 de Fevereiro de 2003

9. Elaboração do Relatório Final 16 de Fevereiro de 2003 28 de Fevereiro de 2003

Quadro 1– Calendarização do plano

Page 24: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

24 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

1. Definição do plano

1.1 Integração da estagiária no CLG

1.2 Estudo da arquitectura geral do projecto WordNet.PT

1.3 Concepção do projecto INQUER

Esta fase do desenvolvimento do projecto decorreu entre o dia 1 e o dia 20 de Setembro de 2002. Teve

como principal objectivo a integração da estagiária no CLG, onde lhe foi apresentada a equipa de trabalho

assim como os recursos informáticos e linguísticos disponíveis. Desses recursos, destacam-se aqueles que

foram utilizados pela estagiária no desenvolvimento do projecto:

1. Pentium MMX 350 MHz 64 RAM

1. Windows NT WorkStation version 4.0

2. SWI Prolog 5.0.9 (freeware version)

3. NoteTabLigth 4.91 (freeware version)

4. Polaris 1.5.0

5. Detonador de Perspectiva Export WordNet

Ainda durante esta fase procedeu-se a um estudo da arquitectura geral do projecto WordNet.PT que serve

de base a todo o sistema INQUER. Este estudo incluiu a leitura de vários documentos e publicações,

assim como um primeiro contacto com a base de conhecimento lexical. Este estudo foi fundamental para

a concepção e planificação do projecto INQUER feita nesta fase. Procedeu-se ainda à divisão do projecto

em módulos e à distribuição de tarefas pelos elementos da equipa. Fez também parte desta fase o

tratamento de toda a parte burocrática do estágio assim como uma primeira planificação do

desenvolvimento do módulo atribuído à estagiária.

2. Definição do formato das perguntas

2.1 Elaboração de um questionário em formato HTML

2.2 Selecção do tipo de perguntas a implementar numa primeira fase do projecto

Esta fase do projecto iniciou-se a 21 de Setembro prolongando-se até ao fim de Outubro. Procedeu-se à

elaboração de um pequeno questionário, que permitisse a recolha de um pequeno corpus de interrogativas

que eventuais utilizadores pudessem colocar ao sistema (Capítulo 9). A recolha desses dados prolongou-

se até à última semana de Outubro, altura em que se procedeu à análise desses mesmos dados. Em

seguida fez-se a caracterização informal dos vários tipos de perguntas recebidas, relativamente à sua

estrutura sintáctica e/ou ao tipo de resposta pretendida. Destas perguntas seleccionaram-se algumas que

seriam objecto de implementação.

Page 25: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Metodologia e calendarização do trabalho

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 25

3. Avaliação dos formalismos gramaticais

3.1 Pesquisa dos formalismos disponíveis.

3.2 Estudo e análise de cada formalismo.

3.3 Selecção do formalismo gramatical

De 26 de Setembro a 8 de Outubro fez-se alguma investigação sobre trabalhos já realizados e em curso na

área de sistemas de pergunta-resposta. Esta pesquisa teve como principal objectivo o estudo das várias

estratégias de implementação utilizadas assim como dos resultados obtidos. Ainda neste período

procedeu-se ao levantamento dos vários formalismos gramaticais disponíveis para o desenvolvimento do

submódulo da sintaxe na gramática do sistema. Esse levantamento foi essencial para a escolha do

formalismo a adoptar.

4. Tratamento do léxico

4.1 Selecção dos domínios do léxico a tratar

4.1 Extracção do léxico da base de dados

4.2 Escolha da informação lexical relevante e enriquecimento da base de dados lexical

4.3 Enriquecimento da base de dados lexical com palavras não extraídas da WordNet.PT

Esta fase iniciou-se a 9 de Outubro e prolongou-se até 20 de Novembro de 2002. Inicialmente estava

previsto durar apenas até 7 de Novembro, mas a quantidade de informação que teve de ser introduzida

manualmente (ver Capítulo 10) obrigou à sua extensão. Por outro lado, os resultados obtidos através do

questionário revelaram a necessidade de acrescentar algumas entradas lexicais que não constavam dos

domínios inicialmente extraídos da WordNet.PT.

5. Implementação de algumas estruturas sintácticas

5.1 Estudo e selecção da linguagem de programação

5.2 Especificação do programa

5.3 Implementação de algumas construções sintácticas

De 16 de Novembro a 10 de Dezembro foram implementadas as primeiras estruturas sintácticas. Para isso

foi necessário proceder a um estudo prévio para a escolha adequada da linguagem de programação a

utilizar. Foi também necessário fazer uma primeira especificação do programa para depois se proceder à

sua implementação.

Page 26: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

26 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

6. Avaliação dos parsers

6.1 Pesquisa dos parsers disponíveis.

6.2 Estudo de cada um dos parsers

6.3 Implementação dos vários parsers

6.4 Avaliação e selecção dos parsers

Esta fase do desenvolvimento do sistema decorreu de 11 de Dezembro de 2002 a 5 de Janeiro de 2003. O

objectivo desta fase era o de escolher e implementar o parser mais adequado à gramática desenvolvida na

fase anterior. Para isso foi necessário fazer uma pesquisa sobre os vários tipos de parsers disponíveis,

implementá-los e avaliá-los na gramática.

7. Implementação das restantes estruturas sintácticas e das estruturas semânticas

7.1 Implementação de mais algumas estruturas sintácticas

7.2 Estudo de formalismos semânticos disponíveis

7.3 Implementação do formalismo semântico escolhido

7.4 Integração das regras semânticas e sintácticas

7.5 Avaliação do sistema

Uma vez que as estruturas sintácticas introduzidas no sistema foram apenas para escolher o parser,

procede-se agora à implementação das restantes. Foram também estudados alguns formalismos

semânticos, assim como a sua implementação, para uma escolha informada sobre o formalismo mais

adequado para este sistema. Ainda nesta fase foram implementadas as regras semânticas e incorporadas

nas regras sintácticas já referidas. Por último, foi feita uma avaliação do sistema e procedeu-se à

correcção de pequenos erros não detectados nas fases de desenvolvimento. Esta fase decorreu de 6 de

Janeiro a 10 de Fevereiro de 2003.

8. Construção de um algoritmo capaz de converter uma pergunta em Linguagem

Natural para uma forma lógica

8.1 Implementação de um algoritmo de conversão

8.2 Integração do módulo I com o módulo II do projecto INQUER

De 10 a 15 de Fevereiro foi implementado um pequeno algoritmo capaz de receber uma pergunta em

língua natural, pesquisar todas as ambiguidades lexicais, analisar a frase sintacticamente e construir uma

representação semântica para cada uma das interpretações sintácticas. Este algoritmo foi posteriormente

utilizado para a integração do módulo I com o módulo II que ocorreu ainda nesta fase.

Page 27: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Metodologia e calendarização do trabalho

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 27

9. Elaboração do Relatório Final

9.1 Elaboração do Relatório

Nesta última fase, que decorreu de 16 a 28 de Fevereiro, foi elaborado o relatório final de estágio.

O plano de desenvolvimento inicial teve algumas alterações relativamente ao plano de trabalho efectuado.

Uma das principais alterações passou pela eliminação de uma das fases descritas no plano inicial (fase 7)

que se referia à análise de termos em língua natural e a sua correspondência com predicados Prolog. Esta

alteração foi devida à necessidade de esta correspondência ser feita numa fase inicial do desenvolvimento

do módulo II para se proceder à implementação do processo de inferência. Assim, esta fase passou a fazer

parte do desenvolvimento do módulo II. Outra alteração ao plano inicial foi o tempo de execução da fase

de tratamento do léxico que compõe a base de dados lexical. Esta alteração deveu-se ao facto de muita

informação ter de ser inserida manualmente o que requereu mais tempo que o inicialmente previsto.

Page 28: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional
Page 29: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Estudo sobre a WordNet.PT

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 29

4. Estudo sobre a WordNet.PT

Como já se referiu, o projecto INQUER insere-se no âmbito de um projecto desenvolvido no CLG – a

WordNet.PT (WordNet do Português - http://www.clul.ul.pt/WordNet/index.html). A WordNet.PT é

uma das bases de dados de conhecimento linguístico que adopta o seu modelo geral de estrutura da

EuroWordNet (http://www.illc.uva.nl/EuroWordNet/). A EuroWordNet é composta por várias

WordNets de línguas europeias constituindo por isso uma base de dados multilingue. Cada uma das

WordNets que compõe a EuroWordNet tem uma estrutura idêntica à da WordNet de Princeton

(http://www.cogsci.princeton.edu/~wn/w3wn.html). Esta foi a primeira WordNet a ser desenvolvida e

teve como língua base o Inglês-Americano.

Nesta base de dados lexical o significado das categorias lexicais (nomes, adjectivos, verbos e advérbios) é

representado através de um conjunto de relações conceptuais e lexicais – synset – “Set of Synonyms”. As

unidades lexicais são organizadas em conjuntos de sinónimos (expressões atómicas ou não atómicas3) que

denotam um mesmo conceito, sendo cada um desses conjuntos representados por um nó na rede. A

sinonímia desempenha um papel crucial na estrutura interna da rede pois, neste caso, serve para relacionar

conceitos lexicalizados. Há evidências de que esta organização simula a estrutura do léxico mental (Miller

1993).

Cada nó da rede está ligado a outros através de várias relações semânticas, a saber, a generalização

(hiperonímia), especialização (hiponímia) e as relações de todo/parte (holonímia/meronímia). Estas

relações organizam o léxico de forma a estabelecer hierarquias lexicais. Por exemplo, a relação

hiperonímia/hiponímia permite a hierarquização dos conceitos em termos de inclusão dos mais

específicos nos mais gerais, sendo por isso uma relação muito importante na estrutura da rede. Vejamos o

seguinte exemplo:

alimento hiperonímia

{carne, chicha}

hiponímia

carne picada ... carne branca

Figura 1 – Relação hiperonímia/hiponímia

Nesta figura está representada a relação de hiperonímia e hiponímia. Assim, alimento é hiperónimo de

carne e, como esta relação é transitiva, alimento é também hiperónimo de carne picada e de carne

3 Uma entrada lexical pode ser ou não atómica (ex. lacticínio / produto lácteo)

Page 30: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

30 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

branca. Note-se que o nó do meio nesta estrutura é constituído por duas entradas lexicais que representam

o mesmo conceito carne e chicha.

A relação de hiponímia pode ser definida como inversa à da hiperonímia. Assim temos que carne e

chicha são hipónimos de alimento e que carne picada e carne branca são hipónimos de carne, chicha e

alimento. Os conceitos que se encontram ao mesmo nível na hierarquia designam-se por co-hipónimos.

Assim carne picada e carne branca são co-hipónimos.

Na estrutura da WordNet.PT existem ainda outras relações importantes como a merónima/holonímia ou o

ILI (Inter-Lingual-Index) que não sendo directamente utilizadas na implementação do módulo I, serão

muito importantes no módulo II.

Page 31: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Métodos de Processamento das Perguntas

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 31

5. Método de Processamento das Perguntas

O sistema propõe-se receber como input uma questão em Português introduzida pelo utilizador, sem

restrições quanto ao seu formato. Para computar este tipo de perguntas, é necessário que o sistema tenha a

capacidade de construir uma representação da informação pedida. Para isso, estudaram-se alguns

trabalhos na área que se debateram com o mesmo problema e verificou-se que eram duas as opções mais

viáveis: a predição do tipo de resposta através da extracção de palavras-chave e a utilização de gramáticas

independentes do contexto.

A predição do tipo de resposta através da extracção de palavras-chave é a opção mais utilizada em

sistemas desta natureza. Este método consiste na caracterização do tipo de resposta à pergunta introduzida

pelo utilizador, limitando o espaço de procura na fase da inferência. Uma caracterização simples pode ser

feita através da análise do pronome interrogativo presente na pergunta. Perguntas do tipo “Quem é a

pessoa mais rica do mundo?”, “Onde fica Lisboa?” ou “Quando foi a tomada da Bastilha?” podem ter

respostas do tipo Pessoa, Localização e Data respectivamente. Estas etiquetas serão associadas à

pergunta introduzida, indicando assim o tipo de informação requerido para a elaboração da resposta.

Uma caracterização mais rigorosa pode ser feita recorrendo a mecanismos estatísticos que extraiam

palavras-chave da pergunta. Estas palavras servirão para que o sistema, na fase de inferência, localize

frases com elevada probabilidade de conterem a resposta. Contextos semânticos podem também ser

utilizados de forma a ajudarem a seleccionar a resposta correcta.

Este método é largamente utilizado em sistemas de pergunta–resposta cuja base de dados é constituída

por documentos de texto (na Internet ou não), o que não acontece no caso deste sistema. Uma vez que a

base de dados utilizada neste sistema é a WordNet.PT, este tipo de método não teria os mesmos

resultados que nos casos em que a base de dados é constituída por documentos de texto. Embora se

pudessem utilizar algumas vantagens deste método para extrair informação da glosa, este método traria

muitas desvantagens quando essa informação não é suficiente e é necessário fazer outros tipos de

pesquisa.

As gramáticas independentes do contexto são um formalismo constituído por regras que permitem definir

as estruturas sintácticas de uma dada língua. Uma propriedade muito importante destas gramáticas é o

facto de poderem ser aplicadas em qualquer contexto. Por exemplo, a regra SN → D N diz-nos que um

SN pode consistir num D seguido de um N independentemente do contexto em que ocorre.

Nestas gramáticas as regras têm apenas um termo (constituinte) no lado esquerdo, podendo ter vários no

lado direito (permitindo a recursividade). Para cada tipo de sintagma podem existir várias regras de

rescrita. Por exemplo, um sintagma nominal (de agora em diante SN) pode ser constituído por um

Page 32: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

32 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

determinante (D) e por um nome (N), mas também pode integrar um determinante, um nome e uma

oração relativa, etc.

Alguns estudos realizados sobre os vários métodos de processamento de perguntas [Cardei te Al., 2000]

verificaram que a introdução de alguma informação linguística em sistemas que utilizam apenas métodos

estatísticos, melhora bastante os resultados. Desta forma, parece que o melhor método para a análise de

perguntas seria um misto de modelização linguística (sintáctica e semântica), e de métodos estatísticos

com análise de grandes quantidades de corpora.

Para a realização deste projecto, não existia qualquer base de corpora anotado de perguntas em Português

que permitisse um tratamento estatístico adequado, e a anotação manual de corpora está fora do âmbito

deste trabalho.

As gramáticas, por sua vez, quando são cuidadosamente construídas, permitem uma boa aproximação

linguística na análise de frases e conseguem cobrir uma grande parte das estruturas sintácticas de uma

língua. Permitem também o processamento sintáctico e semântico da pergunta de forma independente e a

construção de parsers eficientes.

Pelas razões explicitadas acima, a escolha do método para a análise das perguntas recaiu naturalmente

sobre as gramáticas independentes do contexto.

Page 33: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Linguagem de Programação

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 33

6. Linguagem de Programação

O módulo I do projecto INQUER tem como objectivos a análise sintáctica e a construção de uma

representação semântica de uma pergunta introduzida pelo utilizador. Esta representação utiliza o

formalismo da Lógica de Primeira Ordem (como veremos mais adiante), que é implementado seguindo os

propósitos do Paradigma da Programação em Lógica.

A linguagem de programação escolhida surge naturalmente: Prolog. Esta é uma linguagem de

programação baseada na lógica formal, do mesmo modo que linguagens como C, Pascal e outras

similares são baseadas na aritmética e na álgebra.

A diferença entre o Prolog e linguagens como o C é a de que a programação em Prolog permite a

especificação da descrição do problema (o que computar – programação declarativa) em vez da

especificação dos passos de execução necessários à resolução do problema (como computar –

programação procedimental). O Prolog tem esta capacidade porque utiliza um mecanismo de dedução e

derivação de factos e regras armazenados numa base de dados.

A estrutura de um programa escrito em Prolog é construída através de relações entre entidades, enquanto

nas linguagens procedimentais a estrutura é dada em termos de funções. Esta característica, comum nas

linguagens de programação lógicas, advém do facto de a Lógica de Primeira Ordem, que serve de base as

estas linguagens, descrever relações entre entidades. Como consequência, é possível obter mais do que

uma solução possível para cada computação. Assim, o Prolog é considerado uma linguagem não-

determinística, ao passo que as linguagens procedimentais são determinísticas, pois devolvem apenas

uma solução para cada computação.

A gestão da memória no Prolog é feita dinamicamente, isto é, não é preciso atribuir espaço para todas as

constantes e variáveis no início do programa: o espaço é atribuído à medida das necessidades. Isto

permite a criação de objectos grandes, como por exemplo estruturas sintácticas que são essenciais ao

processamento da língua natural. Por outro lado, não é possível saber qual a posição de memória onde se

encontram guardadas as variáveis, nem associar objectos com endereços de memória fixos, ao contrário

do que acontece nas linguagens de programação tradicionais (C, Pascal, etc.). Nestas, o acesso à memória

é feito através de apontadores, que são posições de memória que guardam endereços de outras posições.

O algoritmo de pesquisa build-in no Prolog utiliza uma estratégia descendente e em profundidade e

permite encontrar todas as soluções possíveis para um dado problema através do retrocesso

(backtracking). O retrocesso permitem uma fácil integração com todos os tipos de parsers. Por outro

lado, o mecanismo de unificação possibilita a construção de estruturas de dados passo a passo. Os

programas escritos em forma lógica permitem a utilização de métodos de programação muito abstractos.

Como linguagem de alto nível, o Prolog é uma ferramenta bastante interessante para o desenvolvimento

de aplicações na área da Inteligência Artificial (especialmente processamento de língua natural e áreas

Page 34: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

34 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

similares), uma vez que a programação nesta área requer, por parte de uma linguagem, capacidades de

processamento simbólico, processos de inferência, tipos de dados interactivos e uma flexibilidade geral.

Page 35: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Escolha do Parser

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 35

7. Escolha do Parser

Para analisar e representar a estrutura sintáctica e semântica de uma frase é necessário considerar:

� a gramática, que descreve formalmente as estruturas bem formadas numa língua.

� o algoritmo de parsing, que define a estratégia de análise de acordo com a gramática.

Este capítulo descreve brevemente as estratégias de análise dos dados, justificando a escolha do parser

para a implementação no sistema INQUER.

7.1 ESTRATÉGIAS DE ANÁLISE

Existem três dimensões nas estratégias de análise dos dados. A primeira dessas dimensões diz respeito à

forma como se processa o método de pesquisa relativamente às regras da gramática: se o algoritmo

começa pelos nós folha a estratégia designa-se de ascendente, se começa no símbolo topo da gramática

designa-se de descendente.

A estratégia descendente é considerada um procedimento “ guiado pela expectativa” (“ expectation

driven” ) uma vez que os símbolos deduzidos através das regras da gramática são apenas hipóteses de

símbolos que podem estar presentes na frase de input.

A estratégia ascendente é considerada um processo “ guiado pelos dados” uma vez que, ao contrário da

estratégia descendente, apenas os símbolos que se encontram na frase de input são aplicados a regras da

gramática.

A segunda dimensão das estratégias de parsing diz respeito à forma como se faz a pesquisa no espaço de

procura e divide-se em profundidade e largura. A primeira explora as possibilidades de resolução do

símbolo encontrado mais à esquerda (ou à direita) no passo de resolução, até chegar a um símbolo

terminal (na estratégia descendente) ou ao símbolo da categoria topo (na estratégia ascendente).

A pesquisa em largura processa todos os símbolos à medida que os vai encontrando e deduzindo. Como

consequência, o espaço de pesquisa é percorrido paralelamente, ou seja, em largura.

A última dimensão de estratégias diz respeito à forma como se processa o input: da direita para a

esquerda (da posição n para a 1) ou da esquerda para a direita (da posição 1 para a n).

Page 36: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

36 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

7.2 PARSER ESCOLHIDO

Analisar uma expressão linguística é determinar, através de um processo algorítmico, se esta é gerada por

uma dada gramática. Em caso afirmativo proceder-se-á à representação associada a essa gramática. Este

algoritmo é designado por parser.

As estratégias de análise descritas acima podem ser combinadas para a procura no espaço de soluções

nestes algoritmos. Algumas combinações de estratégias são mais eficientes do que outras dependendo de

vários factores, dos quais se destaca, pela sua importância, a gramática.

Neste sistema descreve-se uma gramática muito complexa, o que significa que o processamento sintáctico

fará muitos retrocessos. Para uma escolha fundamentada do parser, realizaram-se vários testes utilizando

diversos algoritmos.

Como resultado da pesquisa efectuada sobre este tema, seleccionaram-se os parsers que se julgam mais

eficientes tendo em conta a natureza da gramática utilizada no sistema INQUER: left-corner, shift-reduce

e tabular ascendente4.

O parser Earley, embora seja muito eficiente do ponto de vista da rapidez/complexidade (consegue

prestações melhores que um parser tabular simples para um valor de n elevado), para um valor de n

baixo (como é o caso da maioria das frases de uma língua natural), este parser apresenta piores resultados

do que um parser tabular. Por esta razão, não foi testado e avaliado conjuntamente com os parsers

referidos anteriormente.

Os parsers left-corner, shift-reduce e tabular ascendente5 foram implementados e testados sobre uma

gramática de teste (semelhante, do ponto de vista sintáctico, à gramática a utilizar no sistema – Anexo 1).

As implementações dos parsers foram adaptadas de Meurers (2001, pp. 69-70) no caso do Left-Corner e

do Shift-Reduce e de Gazdar & Mellish (1989) no caso do tabular ascendente.

Os testes foram efectuados numa máquina com processador AMD K6 400 MHz, 158 Mb de memória

RAM e utilizando o compilador SWI-Prolog (versão 5.0.9).

4 Para um estudo mais aprofundado sobre parsers consultar, por exemplo, Covington (1993) ou Gazdar & Mellish(1989).

5 A escolha de uma estratégia ascendente para o parser tabular prende-se com o facto de a estratégia descendente tero problema da recursividade à esquerda, o que inviabiliza a sua utilização na gramática de teste.

Page 37: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Escolha do Parser

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 37

As frases-teste foram escolhidas de forma a incluírem ambiguidades lexicais e fenómenos linguísticos

representativos dos vários níveis de complexidade:

1) O gato tem patas ?;

2) A aranha tem patas ?;

3) A pata é um animal ?;

4) O borrego é um mamífero ?;

5) Os animais que são carnívoros comem carne ?;

6) As plantas que têm tronco são árvores ?;

7) As patas do gato são membros ?;

8) Os membros do gato são patas ?;

9) O bolo que tem ovos da galinha é de fruta ?;

10) O bolo que tem ovos que são da galinha é de fruta ?;

Estas frases foram testadas 6 vezes para cada parser, sendo a média dos resultados obtidos apresentados

na tabela seguinte. Estes resultados levam em conta todas as interpretações sintácticas possíveis da frase

segundo a gramática implementada.

Frase-Teste Left-Corner (seg) Shift-Reduce (seg) Tabular ascendente (seg)

1) 0.025 0.02 0.085

2) 0.025 06 0.055

3) 0.275 0.48 0.055

4) 0.25 0.28 0.08

5) 0.525 0.19 0.11

6) 1.02 0.44 0.085

7) 3.76 3.18 0.11

8) 1.07 0.69 0.11

9) 32.48 13.05 0.14

10) 136.52 54.65 0.165

Quadro 2 – Tempo da análise das frases

Observando o quadro 2 podemos verificar que ocorreram variações expressivas no tempo de análise das

frases testadas, dependendo do parser utilizado.

6 O método statisctics/2 build-in do Prolog, que foi utilizado para as medições apresentadas, arredonda osvalores muito próximos de 0.

Page 38: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

38 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

O parser Left-Corner apresenta resultados bastante satisfatórios para as primeiras quatro frases, sendo os

resultados seguintes francamente maus e, no caso das últimas frases, proibitivos. O tempo de análise

aumenta bastante em relação à complexidade da frase.

O parser Shift-Reduce apresentou tempos razoáveis na análise das primeiras cinco frases mas, embora o

tempo de análise das restantes frases tenha melhorado significativamente em relação ao Left-Corner,

apresenta ainda tempos bastante insatisfatórios. No caso das últimas duas frases o tempo de análise é

ainda inaceitável. Este parser, tal como o anterior, revela um aumento considerável no tempo de

processamento de uma frase em relação à sua complexidade.

O parser tabular ascendente, tal como prevíamos, foi o que apresentou melhores resultados. Isto deve-se

ao facto de este parser utilizar uma estratégia de pesquisa em largura em vez de em profundidade,

contrariamente aos outros dois. Uma vez que a gramática a implementar obriga a muitos retrocessos, este

parser apresenta-se como a melhor solução. Note-se que, ao contrário dos dois parsers anteriores, este

parser apresenta um aumento ligeiro do tempo de análise em relação à complexidade da frase. Assim

sendo, apresenta valores um pouco mais elevados no processamento das primeiras duas frases, mas

melhora significativamente o tempo de análise das frases mais complexas.

Por estas razões, o parser escolhido para este sistema foi o parser tabular ascendente.

Page 39: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Formalismos Sintáctico e Semântico

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 39

8. Formalismos Sintáctico e Semântico

Para a construção de uma gramática capaz de descrever fenómenos linguísticos, é necessária a utilização

de formalismos de modelização. Neste capítulo descrevem-se os formalismos sintáctico e semântico

adoptados neste sistema, assim como a motivação para a opção tomada.

8.1 FORMALISMO SINTÁCTICO

Existem vários formalismos gramaticais utilizados na definição de gramáticas em sistemas de

processamento de língua natural. Para este sistema, consideraram-se dois (seleccionados pela sua ampla

utilização em sistemas do género), que foram objecto de estudo mais aprofundado: a gramática de

cláusulas definidas (DCG – Definitive Clause Grammar) e a gramática de estruturas sintagmáticas

determinadas pelos núcleos7 (HPSG – Head-Driven Phrase Structure Grammar).

8.1.1 GRAMÁTICA DE CLÁUSULAS DEFINIDAS

As gramáticas de cláusulas definidas são gramáticas que tradicionalmente se enquadram no grupo de

gramáticas baseadas em regras (Rule-Based Grammars), contrastando com as gramáticas baseadas em

princípios (Principle-Based Grammars)como a HPSG.

Nas gramáticas baseadas em regras, como o nome indica, são as regras que descrevem os constituintes

gramaticais. Para cada constituinte tem de existir pelo menos uma regra na gramática.

As DCGs foram construídas para descrever as linguagens aceites pelas gramáticas independentes do

contexto (Chomsky). No entanto, são um formalismo mais poderoso do que as gramáticas independentes

do contexto na medida em que permitem a expressão de algumas características sensíveis ao contexto,

como por exemplo os atributos.

As DCGs permitem a descrição de um relativamente grande número de gramáticas complexas (como é o

caso das línguas naturais) de forma simples. Para além disso, constituem um formalismo altamente

restritivo e bem delimitado, que possibilita um alto nível de computabilidade. Este formalismo é

directamente implementável na linguagem de programação escolhida (Prolog), beneficiando de todas as

suas vantagens, como por exemplo a unificação de variáveis.

7 Tradução proposta para o português em BRANCO (2000) pp 12.

Page 40: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

40 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Contudo, como utilizam o algoritmo de parsing build-in do Prolog (Capitulo 5), entram muito facilmente

em ciclos infinitos quando as cláusulas apresentam recursividade à esquerda.

Este formalismo possui um baixo nível de abstracção na medida em que todo o seu funcionamento é

explicitado detalhadamente através de regras, sendo as estruturas linguísticas resolvidas de maneira

determinística. Torna-se cada vez mais complexo, à medida que se adicionam argumentos às regras. O

nível de complexidade é directamente proporcional ao tamanho e ao nível de dependência contextual

entre os constituintes da gramática.

O formalismo das DCGs foi desenvolvido com vista a facilitar a implementação de aplicações na área da

linguística computacional Não se trata, contudo, de um modelo de representação do conhecimento

linguístico.

8.1.2 GRAMÁTICAS DE ESTRUTURAS SINTAGMÁTICAS DETERMINADAS

PELOS NÚCLEOS

As gramáticas de estruturas sintagmáticas determinadas pelos núcleos (HPSG), foram desenvolvidas a

partir de meados dos anos 80 por Carl Pollard e Ivan Sag. Este formalismo foi influenciado pela

Gramática de Estrutura Sintagmática Generalizada (GPSG – Generalized Phrase Grammar), pela

Gramática Léxico-Funcional (LFG – Lexical Funcional Grammar) e pela Teoria da Regência e da

Ligação (GB – Government and Binding). É, neste momento, um dos formalismos mais utilizados no

âmbito da Linguística Computacional.

A HPSG utiliza um formalismo matemático baseado em atributos lógicos de tipo recursivo e em

restrições relacionais, que pretende descrever generalizações particulares e universais das línguas. Para

além disso, pode ser formalizada do ponto de vista computacional o que lhe confere a possibilidade de ser

utilizada em processamento de língua natural.

Contém entradas lexicais muito ricas em informação sintáctica e semântica, e meta-regras sintagmáticas

que, juntamente com alguns princípios, regem a formação das estruturas linguísticas. Estas meta-regras,

baseadas nas regras ID e LP da GPSG, são altamente abstractas, o que confere à HPSG um elevado poder

de abstracção.

Por outro lado, essa abstracção faz com que as suas entradas lexicais sejam muito estruturadas.

Page 41: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Formalismos Sintáctico e Semântico

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 41

8.1.3 FORMALISMO SINTÁCTICO ADOPTADO

No sistema INQUER utiliza-se um formalismo sintáctico baseado na HPSG – utilizando as suas

vantagens face a formalismos baseados em regras – mas muito simplificado.

Procurou-se manter um equilíbrio entre a simplicidade e o alto nível de abstracção, para que a gramática

não se tornasse demasiado complexa. Para isso utiliza-se a ideia de considerar listas de subcategorização

da HPSG (ver Capítulo 11).

As entradas lexicais são muito simples pelo que contêm apenas parte da informação necessária ao

processamento sintáctico e semântico (ver Capítulo 10). A informação complementar é posteriormente

acrescentada através de meta-regras que sobre elas operam. Desta forma é possível simplificar as entradas

lexicais e automatizar o processo de complementação da informação.

As regras sintagmáticas utilizadas são baseadas nas regras sintagmáticas da HPSG de modo a captarem

generalizações importantes, mantendo um alto nível de abstracção. Por consequência, o formalismo

escolhido permite o tratamento de vários fenómenos linguísticos numa mesma regra. Para além de regras

sintagmáticas e meta-entradas lexicais, este formalismo contempla regras lexicais que auxiliam a

generalização de certos fenómenos linguísticos. Estas regras lexicais permitem a redução de meta-

entradas lexicais melhorando a eficiência do sistema.

8.2 FORMALISMO SEMÂNTICO

No módulo I do sistema INQUER são analisadas frases interrogativas em língua natural, dada pelo

utilizador, e construída uma representação semântica com um formato que facilita o seu processamento

posterior. Para isso é necessário implementar um formalismo semântico que, a partir da estrutura

sintáctica, construa essa representação. Este capítulo descreve brevemente o formalismo semântico

escolhido para a implementação neste sistema.

8.2.1 LÓGICA DE PRIMEIRA ORDEM

Para a implementação de um formalismo semântico é necessário utilizar uma linguagem artificial para

facilitar a computação e a desambiguação de interpretações eventualmente ambíguas. Esta linguagem terá

então de ter, por um lado, uma sintaxe própria, bem definida e coerente, que não dê lugar a ambiguidades,

Page 42: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

42 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

e por outro, ser suficientemente expressiva para poder representar todos os tipos de frases e fenómenos

linguísticos.

Para a representação do significado, neste projecto, foi escolhido um formalismo lógico. Uma Forma

Lógica consiste numa fórmula escrita numa metalinguagem que expressa, de forma económica, o

significado de uma frase.

A Lógica de Primeira Ordem (LPO) utiliza alguns símbolos para construir uma Forma Lógica. Esses

símbolos, juntamente com um conjunto ilimitado de variáveis (x, y, z,...), constituem o vocabulário

reservado da LPO. Na tabela abaixo estão representados os símbolos lógicos utilizados neste sistema e a

representação utilizada na sua implementação (operadores definidos para a representação em Prolog).

Símbolos

Lógicos

Operadores

PrologDescrição

¬ ~ Negação

∧ & Conjunção

→ > Implicação

∃ exi Quantificador existencial

∀ univ Quantificador universal

Quadro 3 – Correspondência entre símbolos LPO e operadores definidos para a representação em Prolog

8.2.2 IMPLEMENTAÇÃO DO FORMALISMO ESCOLHIDO

Existem vários métodos para automatizar o processo de associação da representação semântica à

expressão em linguagem natural, de entre os quais se escolheu o que utiliza as vantagens da associação do

Cálculo Lambda à LPO.

No desenvolvimento deste sistema adaptaram-se e utilizaram-se algumas das funcionalidades do Cálculo

Lambda, tais como Abstracções-λ, Aplicações Funcionais e Reduções-β. Utilizam-se termos lambda

para ligar variáveis abstraídas usando um operador lambda -λ. Este operador marca o sítio onde se devem

substituir variáveis ao longo da construção semântica. A operação que realiza essas substituições

denomina-se redução-β.

Page 43: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Formalismos Sintáctico e Semântico

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 43

A codificação da semântica na linguagem de programação escolhida (Prolog) passa pela:

(i) codificação das formas lógicas em Prolog;

(ii) associação de uma expressão lambda a cada constituinte e implementação do processo de

redução-β.

(i) codificar as formas lógicas em Prolog:

Utilizando o formalismo sintáctico escolhido, as expressões em LPO corresponderão aos termos do

Prolog.

A representação semântica dos quantificadores tem um papel fulcral na representação semântica da frase:

estabelecem relações entre constituintes. A representação dos quantificadores pode ser feita da seguinte

maneira:

Quantificador Existencial:

Forma em LPO: ∃x (P∧Q)

Representação em Prolog: d(Exi, X, P & Q)

Tipicamente, P é entendido como a representação semântica do SN e Q como a do SV. X representa a

variável quantificada e Exi um quantificador existencial: “ um” , “ algum” e “ exi” 8 neste sistema.

Quantificador Universal:

Forma em LPO: ∀x (R → A)

Representação em Prolog: d(Uni, X, R → A)

Neste caso, o quantificador estabelece uma relação de antecedente-consequente entre R (tipicamente o

SN) e A (tipicamente o SV). Por esta razão dá-se o nome de Restrictor a R e Âmbito a A. O X representa

a variável quantificada universalmente e Uni o quantificador universal: “ todo” e “ o” 9 neste sistema.

8 Como será explicítado no capítulo 6 – Meta-entrada para expressões nominais com complemento e semespecificador –, este quantificador existencial serve, no sistema INQUER, para tratar casos onde não é explícita apresença de um quantificador. Por exemplo:

1) Um pastor alemão é hipónimo de “ cão” ?

Neste caso, nome “ hipónimo” não tem qualquer quantificador explícito o que impediria a utilização de umformalismo semântico deste género.

9 Note-se que no sistema INQUER o determinante “ o” só pode ter uma interpretação de espécie e não de espécime(interpretação deíctica). Por exemplo:

Page 44: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

44 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

(ii) implementação do processo de redução-β

Neste sistema, a implementação do processo de redução-β faz-se utilizando a unificação de variáveis do

Prolog e é baseada em Pereira e Shieber (1987). Desta forma, beneficia-se do método de unificação da

linguagem de programação tornando o processo eficiente e rápido.

É usado também o operador/infixo ‘^’ (definido como um operador Prolog reservado) para simular a

função do ‘λ.’ no cálculo lambda. Assim uma função do tipo λX.φ – onde X é a variável que marca o

argumento da função e φ é a expressão que define o valor da função – é representada em Prolog por X^φ.

O operador/infixo ‘^’ é associativo à direita, o que significa que X^Y^formula é equivalente a

X^(Y^formula).

Por exemplo, a representação semântica dos determinantes “ todos” e “ um” terá o formato seguinte, onde

P e Q representam o SN e SV e R e A o restrictor e âmbito:

Formula em Cálculo Lamba Representação semântica no sistema

λr. λa.(∀x) r(x) →a(x) (X^R)^(X^A)^d(todos,Num,X,R>A)

λr.λa.(∃x) r(x) ∧ a(x) (X^R)^(X^A)^d(um,Num,X,P&Q)

Quadro 4 – Representação semântica de quantificadores

Neste sistema o quantificador tem um papel de predicador nuclear, ou seja, recebe toda a representação

semântica da frase ficando a representação semântica do SN em P e R respectivamente e a do SV em Q e

A da representação semântica do quantificador. Considere-se um exemplo da construção da representação

semântica da frase “ alguns felinos miam” utilizando esta implementação:

alguns –(X^P)^(X^Q)^d(algum,plu,X,P & Q)

felinos – Y^felino(Y)

miam – Z^miar(Z)

alguns felinos – (X^A)^d(algum,plu,X,felino(X) & A)

2) O gato é um felino?3) O gato da vizinha é branco?

No primeiro exemplo, está a ser questionada uma propriedade sobre a espécie “ gato” e não sobre um gato emparticular. Neste caso a interpretação semântica da frase é idêntica à da frase “ Todos os gatos miam?” . No segundocaso, o determinante “ o” tem valor existencial estando a ser questionada uma propriedade de um espécime de “ gato” .No sistema INQUER, esta interpretação não é passível de ser respondida e, por essa razão, não é considerada.

Para simplificar, optou-se, neste sistema, por considerar o determinante “ o” como quantificador universal.

Page 45: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Formalismos Sintáctico e Semântico

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 45

alguns felinos miam - d(algum,plu,X,felino(X) & miar(X))

Esta implementação do processo de redução-β tem alguns problemas no que toca à construção de

representações semânticas de sintagmas coordenados. Nestes casos, a representação semântica do SN do

determinante tem de instanciar com várias variáveis simultaneamente. Tomemos como exemplo a frase

“ um gato e um cão são animais ” .

um gato – (X^Q)^d(um,sing,X,gato(X) & Q)

um cão – (Y^Q1)^d(um,sing,Y,cão(Y) & Q1)

animais – (Z^Q2)^d(exi,plu,Z,animal(Z) & Q2)

são – W^T^ser(T,W)

um gato e um cão – (X^Q)^(Y^Q1)^d(um,sing,X,gato(X)&Q) &

d(um,sing,Y,cão(Y)&Q1)

são animais – T^d(exi,plu,Z,animal(Z) & ser(T,Z))

um gato e um cão são animais - (Y^Q1)^d(um,sing,X,gato(X)&

d(exi,plu,Z,animal(Z) & ser(X,Z))) &

d(um,sing,Y,cão(Y)&Q1)

Esta representação semântica contém variáveis por instanciar (Y^Q1). Estas variáveis deviam instanciar

com a representação semântica do SV “ são animais” . Contudo, utilizando apenas a instanciação de

variáveis, não é possível resolver este problema. A solução passa pela implementação de um predicado

auxiliar (substitute/4) de Sterling e Shapiro (1986) que recebe um termo, uma variável e uma

fórmula devolvendo o resultado da substituição da variável pelo termo na fórmula.

substitute(+Term,+Var,+Formula,-Result).

Desta forma é resolvido o problema acima descrito. Todavia não soluciona casos em que se coordenam

múltiplos sintagmas. Para resolver esse problema é adoptada a solução de Blackburn e Bos (1999) que

implementa a redução-β através de predicados auxiliares (subs/3, coord_sn/3 e coord_sx/3 –

ver Capítulo 11 - Regra Sintagmática 6).

Este mecanismo de redução-β é utilizado apenas nas coordenações sendo, nos outros casos, utilizada a

instanciação de variáveis Prolog. A razão desta escolha prende-se com o facto de a instanciação de

variáveis Prolog ser mais rápida e eficiente.

Page 46: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional
Page 47: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Tipo de Perguntas

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 47

9. Tipos de Perguntas

9.1 QUESTIONÁRIO

Com o objectivo de fazer um levantamento das questões que um potencial utilizador colocaria ao sistema,

foi construído um pequeno questionário em formato de página HTML (Anexo 2) e enviado por e-mail a

diversas pessoas para que respondessem colocando questões.

Nesse questionário era explicado brevemente o objectivo do sistema INQUER e do questionário, pedindo

ao utilizador que imaginasse um sistema capaz de responder a todo o tipo de perguntas dentro de certos

domínios. Esses domínios (comida, alimentação e seres vivos), sobre os quais deveriam incidir as

perguntas, assim como alguns exemplos de perguntas típicas que se poderiam colocar ao sistema, foram

introduzidos no conteúdo da página.

De seguida era apresentada uma caixa de texto onde o utilizador deveria colocar as perguntas a efectuar

ao sistema, carregando em seguida no botão submit que reencaminhava as respostas para o endereço da

estagiária.

As pessoas que responderam a este questionário têm idades compreendidas entre os 13 e os 55 anos, ou

seja, são potenciais utilizadores deste sistema.

9.2 RESULTADOS OBTIDOS

Foram recebidas 124 frases interrogativas – transcritas no Anexo 3 – que foram repartidas por seis

grupos10: frases interrogativas que solicitam uma definição (21), totais (polares e de alternativa) (31),

parciais sobre argumentos (54), parciais sobre especificadores (14), sobre adjuntos causais (3) e que

envolvem comparação (1). São exemplos de frases destes tipos:

- que solicitam uma definição – “ O que é uma batata?”

- totais (polares e de alternativa) – “ O gato é um mamífero?”

- parciais sobre argumentos – “ Quais são os animais que têm barbatanas?”

- parciais sobre especificadores – “ Quantas patas tem um pato?”

- sobre adjuntos causais – “ Por que é que os caranguejos andam de lado?”

- que envolvem comparação – “ O que têm em comum o gato e o cão?”

10 Não se utilizam as classificações canónicas, dado que em alguns casos é necessário explicitar a natureza doconteúdo ou dos processos envolvidos na construção da resposta.

Page 48: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

48 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Estas frases apresentam os seguintes formatos:

• no grupo que solicitam uma definição, surgem expressões que se iniciam por: “ O que é o...”

(2/21); “ O que é um...” (16/21); “ O que é...” (3/21).

• No grupo totais (polares e de alternativa), as estruturas que surgem são: Totais simples: “ SN é

SN?” (15/31); “ Há / Existe N Adj ?” (3/31); “ SN V ?” (6/31); “ SN tem SN?” (3/31); “ SN V

SN?” (1/31); “ É verdade que...” (1/31);

Alternativa: “ SN é SN ou SN” (2/31);

• No grupo parciais sobre argumentos, as expressões que surgem são: “ Que...?” (15/54);

“ Como...?” (1/54); “ Qual é... / Quais são...?” (6/54); “ Qual o...?” (14/54); “ Qual das...?” (1/54);

“ Em que...?” (4/54); “ De onde...?” (1/54); “ De que...?” (5/54); “ O que...?” (6/54); Outras (1/54);

• No grupo parciais sobre especificadores, as expressões que surgem são: “ Quantos ...

há/existem?” (7/14); “ Quantos SN tem SN?” (4/14); “ Quantos SN V SN?” (2/14); Outras (1/54);

• No grupo sobre adjuntos causais, as expressões que surgem são: “ Porque...?” (1/3); “ Como...?”

(2/3);

• No grupo que envolvem comparação, a expressão que surge é: “ ...ter em comum SN e SN?”

(1/1);

A partir destas respostas obteve-se um pequeno corpus de perguntas (Anexo 3), objecto de referência no

desenvolvimento de diversas fases do trabalho.

9.3 TRATAMENTO DOS RESULTADOS

Tratando-se de um estágio de 6 meses e de uma primeira fase de um projecto de grande dimensão, não é

possível tratar todos os tipos de perguntas colocados pelos potenciais utilizadores. Foi, por esta razão,

necessária alguma selecção das perguntas recebidas assim como uma análise e escolha dos tipos de

perguntas a implementar numa primeira fase do desenvolvimento do projecto.

Das perguntas recebidas, 35 foram eliminadas do grupo de estruturas interrogativas que seriam

implementadas por contemplarem adjectivos. Como a WordNet.PT (que está a ser utilizada como fonte

para a nossa base de dados lexical) ainda não possui informação suficiente sobre adjectivos e a sua

Page 49: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Tipo de Perguntas

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 49

inserção estava fora do âmbito deste trabalho, todas as estruturas interrogativas deste tipo foram

ignoradas. Um exemplo deste tipo de perguntas é:

1) Qual é a ave de rapina mais pesada do mundo?

Das restantes questões, 33 não foram consideradas para a implementação por solicitarem informação

sobre a qual a WordNet.PT ainda não tem conhecimento suficiente. Estas estruturas foram ignoradas nesta

fase do desenvolvimento do sistema porque ainda que fossem analisadas correctamente no módulo I, no II

(inferência) não poderiam obter qualquer tipo de resposta, tornando-se inúteis do ponto de vista global do

sistema. Um exemplo deste tipo de perguntas é:

2) Em que época do ano devem ser plantadas as camélias?

Das 56 frases restantes do corpus, uma não tem uma resposta objectiva (“ Quantos cães tem uma

matilha?” ), tendo, por esta razão, sido ignorada.

Das restantes perguntas três contêm inversões de sujeito. Embora este tipo de estruturas seja muito

produtivo no Português, nos dados recolhidos foram estruturas muito pouco utilizadas. Por esta razão a

sua implementação será feita numa fase posterior. Um exemplo deste tipo de estruturas é: “De que é

composto o chucrute?”.

Procede-se assim à implementação de um sistema capaz de analisar e representar semanticamente 52 das

124 perguntas recolhidas. Estas perguntas incluem estruturas muito variadas, tais como interrogativas

totais e interrogativas parciais com pronomes interrogativos e constituintes deslocados na frase.

Para além das estruturas encontradas nestas perguntas são implementadas mais algumas consideradas

importantes. Entre estas destaca-se a implementação de estruturas de adjunção (orações relativas e

sintagmas preposicionais). Note-se que a inclusão de regras sintagmáticas capazes de analisar estruturas

de adjunção facilitará o trabalho de fases posteriores relativamente aos sintagmas adjectivais.

Outro tipo de estruturas implementadas nesta fase são as coordenações. Embora não se tivessem registado

ocorrências de perguntas deste tipo no corpus recolhido, considera-se que este tipo de estruturas é muito

produtivo em sistemas deste género. As disjunções, que não serão alvo de implementação nesta fase do

projecto, poderão ser facilmente implementadas utilizando a mesma estratégia das coordenações.

Verificou-se também, ao analisar as respostas ao questionário, a necessidade de introduzir algumas

palavras no léxico que não constam na WordNet.PT. É o caso de todas as palavras funcionais, de

pronomes interrogativos e de alguns verbos e expressões nominais não incluídos nos domínios escolhidos

como “ ser” ou “ ter” e “ raça” . Este assunto será abordado em pormenor no capítulo seguinte.

Page 50: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional
Page 51: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Base de Dados Lexical

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 51

10. Base de Dados Lexical

Para que o sistema analise frases em língua natural é necessária uma Base de Dados Lexical que permita o

reconhecimento das palavras que compõem a frase.

Essa base de dados é constituída por entradas lexicais retiradas da WordNet.PT (expressões nominais e

algumas expressões verbais)11 e por entradas lexicais que não constam da WordNet.PT. São exemplos:

verbos como “ ser” ou “ ter” , nomes que seleccionam complemento como “ hipónimo” , determinantes,

conjunções, preposições e pronomes relativos e interrogativos. No anexo 4 apresenta-se um excerto da

base de dados lexical.

Cada entrada lexical corresponde a uma regra que integra a categoria a que a expressão pertence, a sua

forma semântica e os traços semânticos e morfológicos que a caracterizam, quando pertinentes. Por

exemplo:

n(’fruta’,[num:sing,gen:fem,cont:s,abst:n,anim:n,ser_vivo:n,hum:n,mass:s])--->

[fruta].

A obtenção das expressões da WordNet.PT iniciou-se com a extracção de toda informação desejada

(limitada aos domínios “ seres vivos” , “ alimentos” e “ comida” ) para ficheiros de texto (.txt). A informação

contida nesses ficheiros não facilitava a consulta directa pela linguagem de programação escolhida

(Prolog). Embora fosse possível formatar a informação com o Prolog, a pesquisa não seria tão eficiente

como se esta estivesse modelada em factos. O programa Detonador, desenvolvido por Rui Chaves,

permite a transformação destes ficheiros em ficheiros de factos Prolog. Estes factos evidenciam todas as

relações entre os conceitos dos diversos domínios considerados, podendo ser utilizados como uma Base

de Dados Relacional.

Os ficheiros obtidos pelo Detonador foram ainda alvo de tratamento com vista a agrupar e ordenar

relações e retirar informação duplicada. Os ficheiros resultantes deste tratamento constituem a Base de

Dados Relacional que representa a estrutura da WordNet.PT. Por exemplo, a informação de que “ gato” é

“ hipónimo de felino” e que os “ felinos” têm “ patas” é representada na Base de Dados Relacional através

dos seguintes factos Prolog:

has_hyponym(felino,gato).

has_mero_part(felino,pata).

11 Utiliza-se a designação expressão nominal/verbal em lugar de nome/verbo para referir elementos lexicais, uma vezque estes podem não ser lexicalizações atómicas. São exemplos de lexicalizações não atómicas “ queijo fresco” /“ serfeito de” e de lexicalizações atómicas “ queijo” /“ ser” .

Page 52: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

52 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Posteriormente, através de comandos Prolog e das relações pos(n,Nome) e pos(v,Verbo) presentes

na Base de Dados Relacional, foram extraídas as expressões (Nome e Verbo) que compõem grande parte

da Base de Dados Lexical.

As expressões retiradas desta forma foram posteriormente alvo de tratamento, nomeadamente na inserção

manual das categorias nominais, da forma semântica, dos traços específicos de cada entrada e das formas

plurais e femininas correspondentes. Por exemplo, para a expressão “ gato” retirada da WordNet.PT

através dos processos já descritos, toda a informação a negrito foi introduzida manualmente:

n(gato, [num:sing,gen:mas]) ---> [gato].

n(gato, [num:plu,gen:mas]) ---> [gatos].

n(gato, [num:sing,gen:fem]) ---> [gata].

n(gato, [num:plu,gen:fem]) ---> [gatas].

Embora existissem no CLUL alguns recursos linguísticos que permitiam a extracção automática de

alguma desta informação (nomeadamente dos traços), outra havia que tinha de ser introduzida

manualmente. Para uma uniformidade na estruturação da informação optou-se por introduzir tudo

manualmente e criar um mecanismo de herança de traços que facilitasse esta inserção (ver secções

seguintes).

Optou-se também por uma listagem de todas as formas flexionadas dos nomes e de algumas dos verbos

(nomeadamente a 3ª Pessoa do Presente do Indicativo), pois o desenvolvimento de um módulo

morfológico estava fora do âmbito deste projecto.

No anexo 4 encontram-se alguns exemplos de entradas lexicais extraídas da base de dados lexical.

10.1 EXPRESSÕES NOMINAIS SIMPLES

Estas expressões são identificadas no léxico por n — categoria nominal. As expressões lexicais deste tipo

foram, na sua maioria, extraídas da WordNet.PT.

Seguindo a estrutura interna da WordNet.PT, optimiza-se o funcionamento do sistema utilizando um

mecanismo de herança de traços, de forma a reduzir a lista de traços por entrada. Cada entrada possui o

traço relativo ao seu número, uma vez que a cada expressão correspondem duas entradas lexicais: plural e

singular. Os restantes traços são herdados através de um mecanismo de herança em que cada entrada

lexical herda os traços dos seus hiperónimos. São herdados apenas os traços não contraditórios da lista de

traços da entrada tratando-se por isso de um mecanismo de herança por defeito.

Page 53: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Base de Dados Lexical

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 53

Este mecanismo é implementado através do predicado heranca_de_tracos/3 que devolve a lista de

traços completa de uma dada entrada lexical (Anexo 5). Este predicado utiliza a Base de Dados

Relacional para encontrar os hiperónimos ou variantes principais de um dado conceito. Em seguida extrai

a lista de traços associada ao hiperónimo do conceito em questão e “ herda” todos os traços sobre os quais

não tem qualquer informação. Este predicado é recursivo. Desta forma todos os traços são herdados e se o

conceito não tiver hiperónimos é devolvida a própria lista de traços.

Por exemplo:

Seja “ alimento” o hiperónimo directo de “ fruta” e L1 e L2 as respectivas listas de traços:

alimento – L1 : [num:plu, gen:mas, cont:n, abst:n, anim:n, ser_vivo:n, hum:n]

fruta – L2: [num:sing, gen:fem, cont:s]

Após aplicado o mecanismo de herança, a lista de traços de “ fruta” seria:

[num:sing, gen:fem, cont:s, abst:n, anim:n, ser_vivo:n, hum:n]

Os pares atributo:valor considerados para as expressões nominais simples são:

Atributo Valor Descrição

numsing (singular)

plu (plural)

número: traço morfológico que indica o número

gramatical

genfem (feminino)

mas (masculino)

género: traço morfológico que indica o género

gramatical

conts (sim)

n (não)

contável: traço booleano semântico que indica se o

conceito refere algo que se pode enumerar

absts (sim)

n (não)

abstracto: traço booleano semântico que indica se

o conceito refere algo material

anims (sim)

n (não)

animado: traço booleano semântico que indica se o

conceito refere algo dotado de vida ou movimento

ser_vivos (sim)

n (não)

ser vivo: traço booleano semântico que indica se o

conceito refere um organismo

hums (sim)

n (não)

humano: traço booleano semântico que indica se o

conceito refere algo com características humanas

masss (sim)

n (não)

massivo: traço booleano semântico que indica se o

conceito refere algo que não é enumerável12

Quadro 5 – Traços das expressões nominais simples

12 Este traço é redundante relativamente ao traço cont mas é necessário para dar conta de conceitos que são massivose contáveis como se refere mais à frente no texto

Page 54: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

54 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Os traços apresentados foram escolhidos pela sua capacidade de restringir tipos de conceitos com

propriedades semânticas e sintácticas distintas. Os traços num e gen servem para detectar estruturas

sintácticas com erros de concordância. Os restantes traços serve para restringir a ocorrência de certas

expressões com alguns verbos, como por exemplo a possibilidade de expressões nominais massivas

poderem ocorrer sem determinante a seguir a um verbo.

Dos traços apresentados na tabela vale a pena referir que embora um dado conceito não possa ser

simultaneamente contável e massivo, algumas das entradas lexicais contém informação afirmativa para

ambos os atributos. Isto deve-se ao facto de algumas expressões serem lexicalmente ambíguas entre

conceitos massivos e contáveis. Por exemplo, “ queijo” é ambíguo entre o alimento queijo que se pode

contar (1) e a substância (2):

1) Quantos queijos estão em cima da mesa?

2) Esta sandes é de queijo?

Este problema seria resolvido se o sistema utilizasse todo o conhecimento disponível na WordNet.PT,

uma vez que as expressões ambíguas que denotam conceitos diferentes se encontram identificadas por um

índice. Numa fase posterior do projecto este problema poderá ser facilmente corrigido.

10.3 EXPRESSÕES NOMINAIS QUE SELECCIONAM COMPLEMENTO

As entradas lexicais de expressões nominais que seleccionam complemento, inseridas manualmente,

apresentam a mesma etiqueta que as expressões nominais simples e possuem praticamente os mesmos

traços. As expressões nominais que seleccionam complemento não têm, no entanto, o atributo massivo,

mas necessitam de um novo traço que informa acerca do complemento que seleccionam:

Atributo Valor Descrição

scat

[comp:[marc:M]]

(complemento) M=elemento

marcador

subcategorização: traço sintáctico que indica

que o complemento seleccionado é marcado13

Quadro 6 – Traços das expressões nominais que seleccionam complementos

13 Considera-se como um marcador as preposições que não têm semântica.

Page 55: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Base de Dados Lexical

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 55

10.2 EXPRESSÕES VERBAIS

Estas expressões são identificadas no léxico por v – categoria verbal. Nem todas as expressões verbais

foram extraídas da WordNet.PT dado que, ao analisar o resultado do questionário (Capitulo 9), verificou-

se serem necessárias outras expressões verbais não pertencentes aos domínios considerados. É o caso de

“ ser” e “ ter” .

No que respeita ao tempo, as frases a analisar pelo sistema só incluem o tempo gramatical presente, 3ª

Pessoa. Assim, as entradas lexicais desta categoria possuem os traços:

Atributo Valor Descrição

numsing (singular)

plu (plural)número: traço morfológico que indica o número gramatical

scat [comp:n/p] (complemento)subcategorização: traço sintáctico que indica, numa lista, a

categoria dos complementos seleccionados pelo verbo

tipo_v

pred (verbo predicativo)

igual (identidade)

imp (verbo impessoal)

existe(verbo existir)

tipo: traço sintáctico que identifica o verbo “ ser” quando este

toma o valor predicativo ou identidade, o verbo “ haver” ou o

verbo “ existir”

Quadro 7 – Traços das expressões verbais

10.4 OUTRAS EXPRESSÕES

Para além das expressões nominais e verbais, houve necessidade de introduzir no léxico outras expressões

que não estão presentes na WordNet.PT por pertencerem a classes fechadas. As categorias destas

expressões assim como os traços que as caracterizam são apresentados no quadro seguinte:

Categoria Traços Exemplos Observações

p(preposição) não tem “ de”

conj (conjunção) não tem “ e”

pi (pronome

interrogativo)

num:sing/plu

gen:mas/fem

quant:s

“ qual” /” quais”

“ quanto” /” quanta”

Os pronomes interrogativos precisam de

ser classificados quanto ao número e

alguns também quanto ao género. O

traço quant identifica aqueles que podem

ocorrer como quantificadores de SNs

Page 56: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

56 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Categoria Traços Exemplos Observações

pr (pronome relativo) não tem14 “ que”

det (determinante)

tipo_d:univ/exist

gen:mas/fem

num: sing/plu

“ todo” /“ um”

“ o” /“ a”

“ o” /“ os”

Os determinantes classificam-se, neste

sistema, em género, número e

universais ou existenciais.

neg (part. de negação) não tem “ não”

marc (marcador)marcador: M

M=elem. marcador“ de” , “ com”

Os marcadores são elementos de

marcação de SNs

contrac (contracção) não tem “ do” , “ nos”

As contracções são constituídas por

elementos de categoria prep e det

aglutinados

Quadro 8 – Traços de outras expressões presentes na base de dados lexical

14 Nesta fase de implementação do sistema considera-se apenas o pronome relativo “ que” .

Page 57: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 57

11. A gramática

As várias fases do módulo de análise das perguntas introduzidas pelo utilizador estão representados no

seguinte esquema:

Figura 2 – Esquema geral do módulo I

Escolhido o formalismo adequado à construção da gramática, feito o tratamento e a extracção do léxico, e

analisadas as estruturas linguísticas a contemplar, procedeu-se à construção da gramática propriamente

dita.

Esta gramática contém meta-entradas lexicais, regras lexicais e regras sintagmáticas que permitem a

análise sintáctica e a construção de uma representação semântica de uma pergunta em LN.

No anexo 6 encontra-se todo o código de implementação desta gramática.

Page 58: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

58 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

11.1 META-ENTRADAS LEXICAIS

Como referimos anteriormente, optou-se pela inclusão de meta-entradas lexicais capazes de tratar as

entradas lexicais para que seja adicionada alguma informação necessária à aplicação das regras sintácticas

e semânticas. A informação relativa à subcategorização e à semântica é inserida nestas regras.

O formato de uma meta-entrada lexical é:

[ ][ ]

Semântica) çãoRepresenta,

:gap

LComps:comp

LSpr:spr

,traçoselex(Cat,

Figura 3 – Meta-entrada lexical

O primeiro elemento (Cat) indica a categoria da expressão linguística a que esta meta-entrada

corresponde e o segundo a sua lista de traços. O terceiro argumento desta meta-entrada é a lista de

subcategorização da expressão. Esta lista subdivide-se em três listas:

• spr indica a natureza do especificador: pode ser do tipo “ determinante” no caso dos nomes ou

“ nominal” no caso dos verbos. Note-se que o que é subcategorizado é um sintagma e não uma

entrada lexical.

• comp indica a natureza dos complementos subcategorizados. Os complementos podem ser de

tipo “ nominal” ou do tipo “ preposicional” .

• gap indica o elemento que não foi encontrado na sua posição natural mas que pode ser

encontrado deslocado na frase. Esta lista está sempre vazia nas meta-entradas lexicais, podendo

conter elementos nas regras lexicais que veremos mais adiante.

O último argumento da meta-entrada corresponde à sua representação semântica.

É apresentado em seguida um exemplo da instanciação da meta-entrada lexical que subsume a entrada

lexical de “ gato” que ocorre no sintagma nominal “ o gato” :

elex(n,[hum:n,ser_vivo:s,anim:s,abst:n,gen:mas,cont:s,mass:s,num:sing]

[spr:[r(det,Ltracos,[],Scat,Sem)], comp:[], gap:[]], X^gato(X))

As meta-entradas são objecto de descrição pormenorizada em seguida.

Page 59: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 59

11.1.1 META-ENTRADAS GRAMATICAIS

Estas meta-entradas tratam todas as entradas de palavras gramaticais necessárias à construção de frases

em Português.

Todas estas entradas, que não pertencem ainda à WordNet.PT, foram inseridas manualmente. A selecção

das palavras que dão origem às entradas lexicais presentes na base de dados lexical foi feita através da

avaliação dos resultados do questionário efectuado (Capítulo 9).

Meta-entrada para preposições

elex(p,[],[spr : [],

comp: [r(n,_,[],[spr:[]|_],_)],

gap : []],X^Y^P) ==> p(Palavra,[]) ^[P =..[Palavra,X,Y]].

Esta primeira meta-entrada aplica-se a preposições. Procura as entradas lexicais a que se aplica, através da

forma que estas apresentam no léxico [p(Palavra, Traços)]. Neste caso a lista de traços aparece vazia

porque as preposições não impõem qualquer tipo de restrições aos seus complementos quanto à

concordância.

A forma semântica da palavra é também retirada da entrada lexical, através da variável Palavra. Esta

variável serve como argumento ao predicado built-in do Prolog “=..” , de modo a formar um novo

predicado. Esse predicado recebe a forma semântica da entrada lexical e duas variáveis formando o

predicado palavra(X,Y)15. Desta forma é construída a representação semântica da preposição, que se

encontra no último argumento da meta-entrada: X^Y^palavra(X,Y). Esta representação indica que X

será instanciada com a variável abstraída mais externa do SN que antecede a preposição e Y com a

variável abstraída mais externa do complemento (neste caso um SN). A representação semântica da

preposição “ de” seria X^Y^de(X,Y). Por exemplo:

1) O alimento do gato é o peixe?

Nesta frase, a variável abstraída mais externa do SN “ o alimento” seria instanciada com a variável Y da

representação semântica da preposição, enquanto a variável abstraída mais externa do SN “ o gato” seria

instanciada com a variável X.

15 Daqui em diante, palavra (em letra minúscula) constituirá o símbolo do predicado Palavra (com letra maiúscula)correspondente à forma semântica de uma entrada lexical. Exemplo: a forma lógica X^Y^Palavra(X,Y) representa-seem Prolog por X^Y^palavra(X,Y).

Page 60: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

60 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

As restrições sobre as entradas lexicais que podem entrar nas meta-entradas estão especificadas dentro da

lista ^[] do lado direito da regra. Esta lista, presente em todas as meta-entradas lexicais, contém

predicados Prolog que são executados quando a meta-entrada é chamada. Desta forma é possível

restringir a classe de palavras que entram em cada meta-entrada, tornando o sistema mais eficiente.

Neste caso, a lista encontra-se vazia pois todas as preposições podem ser tratadas por esta regra. No

entanto, outras meta-entradas lexicais necessitam dessa lista para restringir o tratamento de algumas

expressões (como no caso das expressões nominais que seleccionam complemento e as que não o

seleccionam).

Meta-entrada para marcadores

elex(marc,[],[spr : [], comp: [], gap : []],_) ==> marc(_,_) ^[].

A meta-entrada lexical acima trata os marcadores. Estes elementos servem apenas para marcar SNs para

que estes sirvam de complemento a alguns nomes ou verbos que seleccionam complemento. Por esta

razão, não exigem complemento nem especificador. Exemplos deste tipo de elementos podem ser

encontrados em construções do tipo:

2) O gato é hipónimo de mamífero?

3) Um bolo é feito com ovos?

Por simplificação, considerou-se que os marcadores não têm qualquer representação semântica nem

exigem qualquer tipo de concordância com os elementos que o antecedem ou precedem. Por esta razão as

variáveis relativas aos traços e à forma semântica da entrada são representados por “_” . A lista de traços

da meta entrada lexical é vazia, de forma a unificar com qualquer lista de traços à qual se junte.

Meta-entrada para conjunções

elex(conj,Ltracos,[spr : [],comp: [], gap : []],_) ==> conj(_,Ltracos) ^[].

Os únicos operadores de conjunção considerados por esta gramática são o “ e” e a “,”, e são ambos

tratadas por esta meta entrada. Como se viu anteriormente (Capítulo 10), a lista de traços das preposições

contém informação relativa ao tipo de preposição a que correspondem. Esta informação é necessária,

numa fase mais avançada do processamento sintáctico, para restringir o tipo de construções coordenadas.

Assume-se que às conjunções não se atribui qualquer tipo de representação semântica e que não exigem

especificador nem complementos, associando apenas SXs da mesma categoria. Esta assumpção não é

Page 61: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 61

naturalmente pacífica. Contudo, o que está em causa não é a adequação da descrição linguística, mas sim

a eficiência do sistema.

Meta-entrada para a negação

elex(neg,[],[spr : [],comp: [],gap : []],X^P) ==> neg(_,_) ^[P =..[~,X]].

Nesta meta-entrada é representada a negação (que nesta base de dados lexical é apenas a palavra “ não” ).

Uma vez que a negação é um símbolo funcional em lógica de primeira ordem, a representação semântica

da entrada lexical “ não” corresponde ao símbolo “~” , seguido de uma variável correspondente ao

constituinte a negar. Assim, a representação semântica de “ não” será da forma X ^~(X), em que X

corresponde à semântica do evento negado.

Esta meta-entrada não exige qualquer tipo de especificador ou complemento, nem envolve restrições de

concordância com o SV a que se associa.

Meta-entrada para determinantes indefinidos

elex(det,Ltracos,[spr : [],comp: [],gap : []],

(X^P)^(X^Q)^d(Palavra,Num,X,P & Q)) ==> det(Palavra,Ltracos)

^[retira_elemento(Ltracos,tipo:exist,_),

extrai(Ltracos,num,Num)].

Na lista de restrições desta regra encontra-se o predicado retira_elemento/3 que recebe uma lista de

traços, um par atributo:valor e devolve uma nova lista sem esse par:

retira_elemento(+Ltracos, + Atributo:Valor, -LtracosRes )

Neste caso, o predicado retira da lista de traços encontrada no léxico, o atributo tipo que contém

informação sobre a subcategoria do determinante em questão (exist indica que é existencial). A lista

resultado vai ser utilizada para o processamento sintáctico posterior. Desta forma, todos os determinantes

que não possuem o par traço tipo:exist, não são tratados por esta regra restringindo assim a formação de

meta-entradas.

Para além do predicado retira_elemento/3, a lista ^[] contém o predicado extrai/3, que recebe

uma lista de traços e um atributo devolvendo o seu valor nessa lista:

extrai(+Lista, +Atributo, -Valor)

Page 62: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

62 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Nesta regra, este predicado serve para retirar o valor do atributo num de forma a preencher o segundo

campo da representação semântica do determinante. Esta informação, não sendo necessária ao

processamento sintáctico ou semântico posterior (porque a informação quanto ao número é mantida na

lista de traços da meta entrada lexical), é necessária para outros módulos do sistema.

A representação semântica do determinante, como já foi referido anteriormente (Capítulo 8), recebe as

representações semânticas do SV e do N’ que, por composição, resulta na formação da representação

semântica da frase. A etiqueta d indica que esta representação está associada a um determinante. O seu

subtipo é indicado através da expressão Palavra (que corresponde à forma semântica da entrada

lexical). A variável P indica a representação semântica que corresponde, tipicamente, à representação

semântica do SV da interrogativa, enquanto a variável Q é instanciada, tipicamente, com a representação

semântica do N’ . A variável X é instanciada com a variável abstraída mais externa do SV e do N’

evidenciando que se trata da mesma.

O determinante indefinido “ um” terá uma representação semântica do tipo:

(X^P)^(X^Q)^ d(um,sing,X,P & Q).

Meta-entrada para quantificadores universais

elex(det,Ltracos1,[spr : [], comp: [], gap : []],

(X^Res)^(X^Amb)^d(Palavra,Num,X,Res>Amb)) ==> det(Palavra,Ltracos)

^[extrai(Ltracos,tipo,univ),

extrai(Ltracos,num,Num)].

Os quantificadores universais como “ todos” são tratados nesta meta-entrada. Esta restrição é aplicada

através do predicado extrai/3, que limita a aplicação desta regra aos determinantes que contêm na sua

lista de traços o par tipo:univ.

A representação semântica destes quantificadores é muito semelhante à dos determinantes existenciais.

No entanto o operador “&” é substituído pelo operador “>” que indica tratar-se de uma implicação.

Note-se que, como foi referido no capítulo 8, o determinante “ o” é considerado como um quantificador

universal neste sistema.

Meta-entrada para pronomes interrogativos

elex(n,Ltracos,[spr : [],comp: [],gap : []],

(X^Q)^(P *> Q)) ==> pi(Palavra,Ltracos) ^[P =..[Palavra,X]].

Page 63: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 63

Os pronomes interrogativos apresentam a mesma função sintáctica dos SN. Por esta razão, a sua meta-

entrada é etiquetada com a categoria n. Desta forma, todo o processamento sintáctico das expressões

nominais é também aplicado a estes elementos. Como os exemplos seguintes demonstram, os pronomes

interrogativos aparecem como pronomes sem referência nas frases interrogativas:

4) Qual é o hipónimo de “ gato” ?

5) Quantos são os hipónimos de “ gato” ?

6) O que é um gato?

Estes pronomes encontram correspondência na resposta da frase interrogativa, sendo este facto reflectido

na sua representação semântica. Para facilitar o processamento posterior (nomeadamente na fase de

inferência e geração), a representação semântica do pronome interrogativo terá o seguinte formato:

palavra(X) *> Semântica_do_SV

Nesta representação semântica, a variável X unificará com a resposta à interrogativa introduzida pelo

utilizador. Na meta-entrada podemos verificar que essa variável X está co-indexada com a variável

abstraída mais externa da representação semântica do SV (Q).

Meta-entrada para pronomes interrogativos que podem ocorrer como especificadores

elex(det,Ltracos,[spr : [],comp: [],gap : []],

(X^Q)^(X^W)^(P *> (Q & W))) ==> pi(Palavra,Ltracos)

^[extrai(Ltracos,quant,s)),

P =..[Palavra,X]].

A palavra “ quantos” pode ocorrer em dois tipos de estruturas distintas, como pode ser observado pelos

exemplos seguintes:

7) Quantos hipónimos de “ gato” existem?

8) Quantos são os hipónimos de “ gato” ?

Estas estruturas parecem indicar que “ quantos” pode ocorrer como quantificador de um N’ ou como

pronome. Esta meta-entrada lexical trata do primeiro caso.

Embora este elemento ocorra em dois tipos de estruturas sintácticas muito diferentes, a esta base de dados

lexical tem apenas uma entrada correspondente ao pronome interrogativo, pois os traços e a forma

semântica são idênticos para as duas formas.

A restrição da aplicação da meta-entrada a todos os tipos de pronomes interrogativos é feita através do

predicado extrai/3 que procura o atributo quant na lista de traços da entrada lexical. Este atributo,

Page 64: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

64 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

como vimos no capítulo 10, indica quais os pronomes interrogativos que podem ser especificadores.

Nesta fase do projecto apenas os interrogativos “ quantos” , “ quantas” e “ que” são tratados por esta regra.

A meta-entrada gerada apresenta a categoria det (como todos os quantificadores vistos anteriormente),

uma vez que pode ocorrer exactamente nos mesmos contextos que os determinantes indefinidos.

Como este elemento tem propriedades quantificadoras e pronominais, a sua representação semântica

apresenta semelhanças com a representação semântica de um determinante indefinido e com a dos

pronomes interrogativos.

Meta-entrada para o pronome relativo

elex(pr,[],[spr : [],comp: [], gap : []],_) ==> pr(_,[]) ^[].

Nesta meta entrada lexical são tratados os pronomes relativos. Considera-se que estes não possuem

qualquer tipo de representação semântica servindo apenas para preencher um gap (lacuna) numa

interrogativa. Esse gap pode ter características de especificador (sujeito) ou de complemento, como se

ilustra nos exemplos seguintes:

9) Quais são os animaisi que i têm patas?

10) Quais os alimentosi que os gatos comem i?

No primeiro exemplo, o pronome relativo satisfaz o especificador do SV “ têm patas” e tem como

antecedente o N’ “ animais” . No segundo caso, o pronome satisfaz o complemento do verbo “ comer” e

tem como antecedente o N’ “ alimentos” .

11.1.2 META-ENTRADAS LEXICAIS NOMINAIS

As meta-entradas lexicais que em seguida se descrevem aplicam-se a todas as entradas lexicais de

categoria N. Estas expressões podem seleccionar complemento, como por exemplo “ hipónimo” e “ tipo” ,

por um lado, e “ gato” e “ queijo fresco” , por outro.

Page 65: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 65

Meta-entrada para expressões nominais com especificador e complemento

elex(n, [nom:pred| Ltracos],

[spr : [r(det,_,[],[spr:[]|_],_)],

comp:[r(n,[marcado:s|_],[],[spr:[],comp:[],gap:[]],_)],

gap : []], Y^X^P) ==> n(Palavra, Ltracos)

^[retira_elemento(Ltracos,scat:[comp:[marc:_]],_),

P=..[Palavra,Y,X]].

Esta meta-entrada lexical representa os nomes que seleccionam um complemento nominal e um

especificador do tipo “ determinante” . Permitindo a construção de estruturas como “ o hipónimo de gato “ .

Neste caso, a lista de restrições contém o predicado retira_elemento/3, já referido anteriormente, que

restringe a aplicação da regra a entradas lexicais que contenham o traço scat: [comp:[marc:_]]. A

razão desta restrição prende-se com o facto de o complemento seleccionado por estas expressões

nominais ser marcado, ou seja, conter um elemento do tipo marcador. Esse elemento, como vimos

anteriormente, não tem semântica, serve apenas para marcar um SN como complemento de uma

expressão nominal. Um exemplo de um complemento de “ hipónimo” é “ de gato” em que o elemento “ de”

serve de marcador ao SN “ gato” .

Note-se que na lista de traços do complemento pedido pela entrada lexical, é incluído o traço marcado

que indica que o complemento tem de ser marcado e que na lista de traços da meta-entrada lexical

continua a haver informação sobre qual o elemento que é pedido para o marcar. Como veremos, esta

informação impede a construção de estruturas mal formadas.

Note-se que à lista de traços da entrada lexical é acrescentado o par nom:compl que indica que se trata de

uma expressão nominal que selecciona complementos.

A representação semântica deste tipo de expressões é X^Y^palavra(X,Y). Esta representação indica

que X será instanciada com a variável abstraída mais externa do especificador (neste caso o sintagma

determinante) e Y com a variável abstraída mais externa do complemento (neste caso um sintagma

nominal). A representação semântica da palavra “ hipónimo” será X^Y^hipónimo(X,Y).

Meta-entrada para expressões nominais com complemento e sem especificador

elex(n,[nom:pred|Ltracos],

[spr : [], comp: [r(n,[marcado:s|_],[],[spr:[]|_],_)],

gap : []], (X^Q)^Y^(d(exi,Num,X,P & Q))) ==> n(Palavra, Ltracos)

^[retira_elemento(Ltracos,scat:[comp:[marc:_]],_),

extrai(Ltracos,num,Num),

P =..[Palavra,X,Y]].

Page 66: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

66 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

A meta-entrada lexical apresentada acima é muito semelhante à descrita anteriormente. No entanto, esta

meta-entrada lexical serve para representar expressões nominais que seleccionam complemento e ocorrem

sem especificador (por esta razão a lista de spr encontra-se vazia). Um exemplo de expressões

representadas por esta regra é “ hipónimo” na pergunta “ “ Mamífero” ” é hipónimo de “gato” ?” .

Como consequência de estas entradas lexicais não incluírem um especificador, a sua representação

semântica é também diferente da meta entrada anterior. A semântica de uma expressão nominal (N’ ), de

acordo com o formalismo semântico escolhido, unifica com o restritor da representação semântica do

determinante que selecciona formando a representação semântica do SN. Como estas expressões não

exigem especificador a representação semântica não pode ser construída desta forma. Para resolver este

problema assumiu-se que existe um determinante existencial omitido neste tipo de estruturas. Esta

omissão pode ser justificada em frases do tipo:

11) “ Gato” é hipónimo de “ felino” ?

12) “ Gato” é um hipónimo de “ felino” ?

Estas frases parecem demonstrar que, dependendo do pronome interrogativo, a expressão nominal pode

exigir ou não a presença de um determinante existencial, não sendo a representação semântica da frase

alterada. Por estas razões, foi necessário incluir na representação semântica deste tipo de entradas, a

representação semântica de um determinante existencial cujo restritor corresponde à representação

semântica da expressão nominal com as respectivas variáveis. Esta representação possui duas variáveis

por instanciar: uma para instanciar com a variável abstraída mais externa da representação semântica do

SV e com a própria representação do SV (X^Q), e outra para instanciar com a variável abstraída mais

externa da representação semântica do SN e com a própria representação semântica do SN (complemento

subcategorizado). A entrada lexical de “ hipónimo” , segundo esta regra, terá a seguinte representação

semântica:

(X^Q)^Y^d(exi,sing,X,hipónimo(X,Y) & Q).

Note-se que a representação semântica deste “ quantificador” possui a etiqueta exi, que serve para

identificar um determinante omisso. Esta designação vai ser particularmente útil na fase da geração.

A entrada lexical de “ hipónimo” tem duas representações semânticas dadas por cada uma das meta-

entradas referidas anteriormente. Ao ser feito o parsing da frase onde esta palavra se encontra, será

escolhida uma das duas representações, dependendo da ocorrência ou não de um determinante que a

quantifique.

Page 67: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 67

Meta-entrada para nomes sem complementos

elex(n,Ltracos1,[spr : [r(det,_,[],[spr:[]|_],_)],

comp: [],gap : []], X^P) ==> n(Palavra,Ltracos)

^[heranca_de_tracos(Palavra,Ltracos,Ltracos1),

\+(extrai(Ltracos,scat,[comp:[_]])),

(extrai(Ltracos1,mass,s), extrai(Ltracos1,cont,s));

(\+(extrai(Ltracos1,mass,s))),

P =..[Palavra,X]].

Esta meta entrada lexical aplica-se a expressões nominais que não integram complemento mas integram

determinante. Um exemplo de uma expressão nominal tratada por esta regra é “ gato” na frase “ O gato é

um mamífero?” .

Como já foi referido anteriormente (Capítulo 10), todas as expressões nominais simples foram retiradas

directamente da WordNet.PT e, por esta razão, é necessário aplicar o mecanismo de herança de traços.

Esse mecanismo é aplicado através do predicado heranca_de_tracos/3:

heranca_de_tracos(+FSem,+Ltracos,-LRes).

Este predicado recebe uma representação semântica da expressão, a lista de traços da entrada lexical e

devolve uma lista com todos os seus traços herdados da sua cadeia de hiperónimos.

O predicado extrai/3 restringe a aplicação desta regra a expressões nominais que seleccionam

complemento, exigindo que a entrada lexical não contenha o traço respeitante à sua subcategorização.

Para além desta restrição, o predicado extrai/3 obriga a que as expressões nominais sejam massivas e

contáveis ou que não sejam massivas. Esta restrição serve para restringir certas interpretações semânticas.

Por exemplo:

13) Uma vaca é um animal?

O lexema “ vaca” , na base de dados lexical, é ambíguo entre “ animal” e “ carne de vaca” . No entanto, no

exemplo 13), “ vaca” só pode ter a interpretação de animal pois a presença de um quantificador obriga a

que a expressão nominal não seja massiva. Assim, esta meta-entrada lexical trata estes casos impedindo a

construção de representações semânticas incorrectas.

A semântica desta entrada lexical é dada pela representação semântica da palavra e a sua associação a

uma variável. A semântica destas expressões nominais é X^vaca(X).

Page 68: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

68 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Meta-entrada para nomes sem complementos e sem especificador

elex(n,Ltracos1,[spr : [],comp: [],gap : []],

(X^Amb)^(d(exi,Num,X,P & Q))) ==> n(Palavra, Ltracos)

^[extrai(Ltracos,num,Num),

\+(extrai(Ltracos,scat,[comp:_])),

heranca_de_tracos(Palavra,Num,Ltracos1),

P =..[Palavra,X]].

Esta meta-entrada lexical trata de expressões nominais simples que não possuem qualquer tipo de

especificador como por exemplo:

14) Os hipónimos de gato são animais ?

O predicado extrai/3 obriga a que não conste da lista de traços da entrada lexical o atributo scat

relativo a complementos, impedindo as expressões nominais que seleccionam complemento de entrarem

nesta regra.

Como esta regra trata expressões nominais extraídas da WordNet.PT é necessário utilizar o predicado

heranca_de_tracos/3 que, como vimos, implementa o mecanismo de herança de traços.

Tal como acontece com as expressões nominais com complemento e sem especificador, é necessário

acrescentar à representação semântica destas expressões variáveis que sejam instanciadas pela

representação semântica do SV, ao longo do processamento semântico. Note-se no entanto, que o restritor

do determinante é simplesmente a própria expressão nominal sendo a variável do SV a única por

instanciar.

Meta-entrada para nomes que representam conceitos da WordNet.PT

elex(n,[num:sing],[spr : [],comp: [], gap : []],

(X^Q)^d(exi,sing,X,P & Q)) ==> r(ListaASCII)

^[name(Palavra2,ListaASCII),

(n(Palavra1,_) ---> [Palavra2];

v(Palavra1,[tempo:inf]) ---> [Palavra2]),

P =..[Palavra1,X]].

Para além de todas as expressões nominais e verbais já tratadas pelas meta-entradas lexicais, existem

algumas expressões verbais e nominais que parecem corresponder a conceitos da WordNet.PT e não a

conceitos per si. Vejamos os seguintes exemplos:

Page 69: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 69

15) Qual é o hipónimo de “gato” ?

16) “ cear” é “ comer” ?

Neste exemplo “ gato” não se refere ao animal de quatro patas mas sim ao conceito de gato que está

representado na WordNet.PT e que se subdivide em vários subtipos (“ gato persa” , “ gato siamês” ). Do

mesmo modo, “ cear” e “ comer” referem-se aos conceitos da WordNet.PT e não ao acto em si, sendo por

isso utilizados como expressões nominais.

Estas expressões nominais não pedem complementos nem especificadores e, por esta razão, necessitam

de uma representação semântica semelhante à da meta entrada anterior.

Note-se que para as expressões nominais as aspas não são obrigatórias podendo ser tratadas pela meta-

entrada anterior. Desta forma, utilizadores mais especializados podem utilizar esta notação não obrigando,

no entanto, outros tipos de utilizadores a utilizá-la.

11.1.3 META-ENTRADAS LEXICAIS VERBAIS

Meta-entrada para o verbo "ser" predicativo

elex(v,Ltracos,[spr : [r(n,_,[],[spr:[]|_],_)],

comp: [r(C,_,[],_,_)], gap : []], X^X) ==> v(ser,Ltracos)

^[ extrai(Ltracos,tipo_v,pred),

extrai(Ltracos,scat,[comp:C])].

O verbo “ ser” , como se pode verificar a partir dos exemplos abaixo, pode ocorrer com diferentes tipos de

complementos:

17) O peixe é do gato.

18) O gato é um animal.

19) O gato é mamífero.

Na frase 17), o verbo “ ser” ocorre com um sintagma preposicional enquanto nas frases 28) e 19) ocorre

com um sintagma nominal. O verbo “ ser” não tem a mesma semântica nas três frases. Em 17), “ ser” não

tem qualquer representação semântica, assumindo-se que a preposição é o elemento que exprime a

relação entre os dois SNs. Nas frases 18) e 19) é o verbo “ ser” que desempenha essa função.

Page 70: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

70 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

A meta-entrada aqui apresentada trata do primeiro caso, em que ao verbo “ ser” não se associa qualquer

tipo de representação semântica. Note-se, no entanto, que no último argumento da meta-entrada surge a

representação semântica X^X que se anula e resulta em X.

Os verbos que não têm qualquer representação semântica possuem o par tipo_v:pred na sua lista de

traços. Assim, é esse traço que restringe a entrada nesta meta-entrada lexical. O tipo de complemento

desses verbos é também retirado da sua lista de traços permitindo a reutilização desta regra para outros

verbos.

Meta-entrada para verbos intransitivos

elex(v,Ltracos,[spr : [r(n,_,[],[spr:[]|_],_)],

comp: [],gap : []], Y^P) ==> v(Palavra, Ltracos)

^[\+retira_elemento(Ltracos,scat:[comp:_],_),

P =..[Palavra,Y]].

Esta meta-entrada lexical aplica-se a verbos intransitivos como por exemplo “ existir” em frases como

“ Quantos hipónimos de “gato” existem?” . Nestas estruturas, verbo tem como especificador um SN e não

tem qualquer tipo de complemento.

A lista de restrições desta meta-entrada lexical obriga a que na lista de traços destes verbos não conste

qualquer informação sobre complementos, o que indica tratar-se de um verbo intransitivo.

A representação semântica deste tipo de verbos é semelhante à representação semântica das expressões

nominais simples, uma vez que contém apenas uma variável abstraída que será instanciada com a variável

do seu especificador.

Meta-entrada para verbos com um argumento interno

elex(v,Ltracos1,[spr : [r(n,_,[],[spr:[]|_],_)],

comp: [r(C1,_,[],[spr:[],comp:[],_],_)],

gap : []],X^Y^P) ==> v(Palavra, Ltracos)

^[\+(extrai(Ltracos,tipo_v,pred)),

\+(extrai(Ltracos,tipo_v,imp)),

retira_elemento(Ltracos,scat:[comp:C1],Ltracos1),

P =.. [Palavra,X,Y]].

Os verbos transitivos com apenas um argumento interno são tratados pela meta-entrada lexical descrita

acima. Esta meta-entrada indica que o verbo necessita de um SN como especificador e de um

complemento cuja informação categorial está presente na lista de traços associada à sua entrada lexical. O

Page 71: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 71

predicado retira_elemento/3, através do traço scat:[compl:Categoria_complemento]], retira essa

informação da lista de traços e simultaneamente impõe restrições na aplicação desta meta-entrada (só os

verbos que contêm apenas um elemento na sua lista de complemento são tratados por esta regra).

O predicado extrai/3 restringe a entrada nesta regra a verbos predicativos (sem representação

semântica) e a verbos impessoais. Este predicado exige que os traços tipo:pred e tipo_v: imp não estejam

na lista de traços da entrada lexical.

A representação semântica deste tipo de verbos é muito semelhante à representação semântica das

preposições e dos nomes que seleccionam complemento. Esta semelhança é justificada pelo facto de todas

estas expressões representarem relações entre constituintes. A representação semântica destas expressões

é, portanto, da forma X^Y^palavra(X,Y), sendo X a variável abstraída mais externa do SN

complemento e Y a variável abstraída mais externa do SN especificador.

Meta-entrada para verbos impessoais (há)

elex(v,Ltracos,[spr : [], comp: [r(C,_,[],[spr:[],comp:[],_],_)],

gap : []],Y^P) ==> v(Palavra, Ltracos)

^[extrai(Ltracos,tipo_v,imp),

extrai(Ltracos,scat,[comp:C]),

P =.. [Palavra,Y]].

Esta meta-entrada serve para tratar os verbos impessoais, ou seja, que seleccionam apenas um argumento,

que se realiza como objecto directo16. Por esta razão, estes verbos não flexionam em número existindo

apenas uma entrada lexical para cada um deles. Neste sistema o único verbo impessoal que é tratado é o

verbo “ haver” no sentido de “ existir” .

Esta regra tem como restrições à sua aplicação a existência do par atributo-valor tipo:imp, presente

apenas na lista de traços dos verbos impessoais. Esta regra extrai também da lista de traços a categoria do

complemento do verbo.

A representação semântica deste tipo de verbos é semelhante à dos verbos intransitivos com a diferença

de que a única variável abstraída corresponde à representação do complemento e não à do sujeito.

16 Como o sujeito é expletivo, a sua realização é marcada. Ex: Ele há cada uma!

Page 72: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

72 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

11.2 REGRAS LEXICAIS

Para além das meta-entradas lexicais descritas anteriormente, a gramática contém regras lexicais que

recebem meta-entradas lexicais verbais e devolvem outras meta-entradas lexicais verbais. Estas regras

evitam o desdobramento de meta-entradas lexicais (nomeadamente as das expressões verbais), permitindo

a captação de generalizações importantes e tornando o sistema mais eficiente.

Regra Lexical para o tratamento do gap de complemento

elex(v,Ltracos1,[spr : SPR, comp: [],

gap : [r(_,_,[],_,Y)]],X^P) ==>

elex(v,Ltracos1,[spr : SPR,

comp: [r(_,_,[],_,Y)], gap: []],X^Y^P).

A meta-entrada lexical do lado direito da regra corresponde a uma meta-entrada de um verbo transitivo

com um complemento. Esta regra constrói uma nova meta-entrada lexical em que o especificador, a lista

de traços e a categoria são iguais às da meta-entrada referida.

O elemento da lista de complementos da meta-entrada passa para a lista gap ficando a lista comp vazia. A

representação semântica desta meta-entrada lexical é também alterada, ficando com apenas uma variável

por indexar (a do especificador).

Esta regra constrói uma nova meta-entrada lexical capaz de dar conta de frases relativas de complemento.

O verbo “ comer” da frase seguinte necessita desta nova meta-entrada lexical para que a frase seja

licenciada:

20) O alimento que o gato come é o peixe.

Regra Lexical para o tratamento de verbos impessoais com sujeito nulo

elex(v,Ltracos1,[spr : [],comp: [],

gap:[r(n,_,[],spr:[],comp:[],gap:[]],_)]], Sem) ==>

elex(v,Ltracos1,[spr:[], comp: [r(n,_,[],_,_)],

gap: []],Sem).

Esta regra lexical serve para tratar os casos em que os verbos impessoais não têm o complemento na

posição canónica, ou seja, à sua direita. Por exemplo:

21) Quantos hipónimos de gato há?

Page 73: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 73

Neste exemplo, o complemento do verbo “ haver” encontra-se à esquerda do núcleo.

Esta regra recebe uma meta-entrada lexical de um verbo impessoal e coloca o complemento dessa entrada

lexical na lista gap, retirando-o da lista de complementos. Assim, a nova meta-entrada lexical pode ser

aplicada à regra sintagmática correspondente e aceitar estruturas como as de 21).

Note-se que, embora esta regra lexical seja muito semelhante à anterior do ponto de vista sintáctico, do

ponto de vista semântico é bastante diferente. A regra anterior aplica-se a verbos com dois argumentos e,

assim sendo, contém duas variáveis abstraídas sendo a segunda a correspondente à variável abstraída mais

externa da representação do complemento e a primeira à do sujeito. Neste caso, só temos uma variável

abstraída: a do complemento. A regra acima não conseguiria dar conta destes casos sendo necessário

desdobrá-la.

11.3 REGRAS SINTAGMÁTICAS

Às meta-entradas lexicais são posteriormente aplicadas regras sintagmáticas. Estas regras definem um

formalismo que contém regras sintácticas, regras semânticas e listas de restrições sintáctico-semânticas

que tornam possível o processamento sintáctico. Estas regras sintagmáticas baseiam-se na teoria X-Barra,

sendo que as meta-entradas lexicais correspondem a X, as regras com a lista spr não-vazia a X’ e as regras

cujas listas estão vazias a X’’.

[ ] [ ] Semântica) çãoRepresenta,

LGap:gap

LComps:comp

LSpr:spr

,_atrasadosobjectivos,traços(Cat,

r

Figura 4 – Regra sintagmática

Cat corresponde à categoria X do sintagma e a lista de traços aos seus traços morfológicos e semânticos.

A lista de objectivos atrasados procura resolver o problema de falta de instanciação das regras, retardando

a execução de alguns predicados. Este problema foi referido anteriormente (Capitulo 7).

A lista de subcategorização indica, tal como nas meta-entradas lexicais, quais os elementos que faltam

encontrar para que uma dada estrutura seja licenciada. Esta lista contém as três sublistas utilizadas nas

meta-entradas lexicais: spr, comp e gap. Note-se que, ao contrário do que acontecia nas meta-entradas

lexicais, a lista gap pode não estar vazia.

Page 74: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

74 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Regra Sintagmática 1 – Promoção de X para X'

r(N,T,[],[spr : SPR, comp: [],gap : Gap],Sem) =>

[elex(N,T,[spr : SPR, comp: [], gap : Gap],Sem)].

A primeira regra promove uma meta-entrada lexical de categoria X em X’ . Todos os atributos da meta

entrada lexical são passados para o X’ .

Esta regra sintagmática é aplicada apenas a meta-entradas lexicais cuja lista de complementos esteja

vazia. Isto implica que os verbos e as expressões nominais que seleccionam complemento não entrem

nesta regra, sendo primeiro associados aos seus complementos na regra sintagmática núcleo-

complemento que se apresenta mais adiante. A lista de objectivos atrasados do X’ está vazia pois não

existem quaisquer operações a adiar.

Exemplo da aplicação desta regra sobre uma meta-entrada de uma expressão nominal sem complemento e

com especificador “ gato” :

• Meta-entrada lexical

elex(n,[num:plu,gen:mas,cont:n,abst:n,anim:n,ser_vivo:n,hum:n,mass:n],

[spr : [r(det,_,[],_,_)],comp: [], gap : []], X^gato(X)).

• Resultado da aplicação da regra sintagmática

r(n,[ num:plu,gen:mas,cont:n,abst:n,anim:n,ser_vivo:n,hum:n,mass:n],

[],[spr : [r(det,_,[],_,_)], comp: [], gap : []], X^gato(X)).

Regra Sintagmática 2 – Orações relativas restritivas

r(vr,T,[compoe_sem(SPR,GAP,T1,SEM,SEMCOMP,T)],

[spr : [], comp: [],

gap : []], SEMCOMP) => [r(pr,_,[],_,_),

r(v,T1,[],[spr:SPR,comp:[],gap:GAP],SEM)].

Consideraram-se, neste projecto, dois tipos de orações relativas restritivas:

• de sujeito (em ex. “ o animali que i come peixe é o gato” )

• de complemento directo (em ex. “ o peixei que o gato come i é o carapau” )

Page 75: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 75

Nas oração relativa restritiva de complemento e sujeito marca-se uma posição (com o símbolo ),

sintacticamente vazia, co-indexada com o N antecedente da relativa. Por exemplo, a frase “ o gato come o

peixe” sofre então uma alteração para “ o peixei que o gato come i” . Chamamos a essa posição vazia

“ gap” (lacuna).

A regra sintagmática apresentada acima trata este tipo de estruturas, associando um V’ a um pronome

relativo. O V’ em questão pode ter um elemento por satisfazer na sua lista spr (orações relativas de

sujeito) ou na sua lista gap (orações relativas de complemento).

O predicado compoe_sem/6 recebe a lista spr, a lista gap, a lista de traços e a representação semântica

do V’ , devolvendo a representação semântica e a lista de traços da oração relativa (VR). Relembra-se que

se optou por não atribuir informação semântica ao pronome relativo “ que” , uma vez que não influencia

em nada a representação semântica da oração relativa e, posteriormente, a do SN.

Este predicado trata dois casos distintos:

i) Lista gap com um elemento e spr vazia;

ii) Lista spr com um elemento e gap vazia.

i) Lista gap com um elemento e spr vazia

Quando a lista gap tem um elemento e a spr está vazia, então estamos perante uma oração relativa de

complemento. Considerando o exemplo “ que o gato come ” tem-se:

(i) representação do SN “ o gato” [(X^A)^d(o,sing,X,gato(X) & A)]

(ii) representação do verbo “ comer” [Z^W^comer(Z,W)]

(iii) após aplicação da regra lexical que coloca o complemento na lista gap, representação do

verbo “ comer” [Z^comer(Z,W)]

(iv) pela composição de (i) com (iii), representação da frase “ o gato come ∅“

[d(o,sing,Z,gato(Z) & comer(Z,W))]

Em (iv) verifica-se que a representação semântica da frase não tem qualquer tipo de abstracção. Contudo,

a variável W ocorre livre. Neste caso, o predicado introduz uma nova variável abstraída co-indexada com

W, que instanciará com a representação semântica do SN antecedente. Em (v) apresenta-se a nova

representação semântica da oração relativa.

(v) representação da oração relativa “ que o gato come ” , após aplicação do predicado em

questão: [W^d(o, sing, Z, gato(Z)&comer(Z,W))]

Page 76: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

76 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

A lista de traços que passa para VR encontra-se vazia porque o antecedente da oração relativa não tem

qualquer tipo de relação de concordância com o seu verbo.

ii) Lista spr com um elemento e gap vazia

O segundo caso que o predicado compoe_sem/6 trata é o das relativas de sujeito (sem especificador). A

representação semântica do V’ sem especificador é igual à representação semântica do VR. Neste caso o

V’ já contém uma variável que corresponde ao SN especificador, passando apenas para VR de modo a

encontrar o antecedente da oração relativa na regra seguinte. Tomemos como exemplo “ que come peixe” .

Temos, então, a forma do verbo [Z^W^comer(Z,W)] e a do SN [(M^A)^d(exi,sing,M,peixe(M) &

A)]. Compondo as duas formas, pela maneira acima descrita, obtemos a representação semântica do SV

(“ come peixe” ) [Z^d(exi,sing,W,peixe(W) & comer(Z,W))].

A lista de traços do VR, neste caso, é igual à lista de traços do V’ porque o verbo tem de concordar com o

antecedente da relativa em número e pessoa.

Regra Sintagmática 3 – Adjunção de um modificador (SP/VR) a um N’ e de um quantificador a umN’’

r(n,T1,[adjunto(C1,C), trata_spr(SPR,Sem,T1,T,Sem1,Sem2)],

[spr:SPR, comp:[], gap:[]], Sem2) =>

[r(C1,T1,[],[spr:SPR,comp:[],gap:[]],Sem1),

r(C,T,[],[spr:[],comp:[],gap:[]],Sem)].

As adjunções de orações relativas e de sintagmas preposicionais a N’ e as adjunções de quantificadores a

N’ ’ são tratadas por esta regra. O segundo argumento do lado direito da regra só pode ser um sintagma

uma vez que todas as listas de subcategorização se encontram vazias. A lista de objectivos atrasados da

regra chama o predicado adjunto/2 que obriga a que a categoria deste sintagma seja p (preposição) ou

vr (oração relativa) se C1 for de categoria n ou que a categoria C desse sintagma seja n e a de C1 det

(quantificador).

Esta regra aplica-se a dois casos distintos:

i) Adjunções de SPs e orações relativas a N’ ;

ii) Adjunções de quantificadores a N’ ’

Page 77: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 77

i) Adjunções de SPs e orações relativas a N’

Neste caso, o primeiro argumento da regra corresponde a um N’ uma vez que a lista spr pode não estar

vazia. Note-se que a não obrigatoriedade da existência de um elemento na lista spr permite a construção

dos tipos de frases:

22) Animais que são mamíferos bebem leite

23) Pulgas de gatos são animais

24) Os animais que são mamíferos bebem leite

25) As pulgas dos gatos são animais

A representação sintáctica adoptada para as este tipo de construções foi a da adjunção de orações relativa

e de sintagmas preposicionais a N'. Embora este tipo de representação não seja totalmente aceite para este

tipo de estruturas, foi a escolhida por ser a mais adequada do ponto de vista linguistico e da eficiência do

sistema.

Na figura 5 apresenta a representação sintáctica dos exemplos 24) e 25) apresentados acima.

Figura 5 – Representação em árvore da estrutura sintáctica adoptada para as adjunções a N’

A representação semântica do novo N' é dada através do predicado trata_spr/6, que recebe a lista

spr do N’ , a representação semântica do sintagma adjunto e a sua lista de traços, a lista de traços do N’ e

a sua representação semântica, devolvendo a representação semântica. Esta representação depende da

existência de um elemento na lista spr: se a lista estiver vazia, dá-se o caso representado pelos exemplos

22) e 23) em que o antecedente da oração relativa/sintagma preposicional não tem um sintagma

determinante que o quantifique. Como vimos anteriormente, a representação semântica de uma expressão

nominal sem determinante é (A^B)^d(exi, plu, A, animal(A)&B).

A representação semântica da oração relativa nos exemplos 22) e 24) (“ que são mamíferos” ) é a seguinte:

D^d(exi, plu, C, mamífero(C)&ser(D, C))

Page 78: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

78 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

A representação semântica do novo N’ necessita de ser acrescentada ao último argumento da

representação semântica do determinante de tipo exi do N’ “ animais” /” pulgas” , sendo a variável

abstraída mais externa da representação semântica da oração relativa/sintagma preposicional instanciada

com a variável abstraída mais externa da representação semântica do N’ (A) . Utiliza-se o símbolo “&” , de

conjunção, para compor a semântica de um N' com uma oração encaixada (relativa ou preposicional). Se

isto não acontecesse e a representação semântica da oração relativa fosse instanciada com a segunda

variável do operador “&” do determinante (P & Q), deixar-se-ia de ter variáveis que pudessem receber a

representação semântica do SV a que este N’ se viria a associar.

A representação semântica do exemplo 22) acima seria:

(A^B)^d(exi, plu, A, animal(A) & d(exi, plu, C, mamífero(C)&ser(A, C))&B)

Nos exemplos 24) e 25) a lista spr não se encontra vazia. Contudo a informação de que falta associar um

determinante a todo o novo N’ está presente.

Neste caso, a representação semântica do segundo N’ faz-se através da composição das representações

semânticas do primeiro N’ e do VR. Essa composição é feita, como vimos anteriormente, através do

operador &. A variável abstraída mais externa da representação semântica do N’ é co-indexada com a

variável abstraída mais externa da representação semântica do VR, sendo essa variável a variável

abstraída mais externa da representação semântica do novo N’ . Na figura 6 é ilustrado o processo para o

exemplo 24) .

Figura 6 – Exemplo da aplicação da Regra Sintagmática 3

Esta representação semântica está agora pronta para se juntar a uma representação semântica de um

determinante de modo a formar um SN (regra sintagmática 7). Esta regra sintagmática devolve duas

representações semânticas, sendo uma delas eliminada posteriormente.

Page 79: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 79

A representação semântica de N' adjunto a um sintagma preposicional é, como vimos, idêntica à das

orações relativas. Observemos o processo de construção semântica para o exemplo 25) acima (“ as pulgas

do gato” ):

“ de o gato”

(i) representação da preposição “ de” [Z^W^de(Z,W)]

(ii) representação do SN “ o gato” [(X^A)^d(o,sing,X,gato(X) & A)]

(iii) pela regra sintagmática 8 (núcleo-complemento) (apresentada adiante), representação do SP

“ de o gato” [Z^d(o,sing,W,gato(W) & de(Z,W)]

“ pulga de o gato”

(iv) representação do nome “ pulga” [P^pulga(P)]

(v) representação do SP “ de o gato” [Z^d(o,sing,W,gato(W) & de(Z,W))]

(vi) pela regra sintagmática acima descrita e composição de (iv) com (v), representação do N'

“ pulga de o gato” [P^(pulga(P) & d(o,sing,W,gato(W) & de(P,W)))]

“ a pulga de o gato”

(vii) representação do determinante “ a” [(X^R)^(X^A)^d(o,sing,X,R & A)]

(viii) representação do N’ “ pulga de o gato” [P^(pulga(P) & d(o,sing,W,gato(W)&

de(P,W)))]

(ix) pela regra sintagmática 7 (especificador-núcleo) (apresentada adiante) e composição de (vii)

com (viii), representação do SN final [(P^A)^d(o,sing,P,pulga(P) &

d(o,sing,W,gato(W) & de(P,W))) & A)]

O predicado trata_spr/6 verifica também se as listas de traços do sintagma adjunto e do modificador

não apresentam informação contraditória. Para isso utiliza o predicado unifica/3 de Marrafa (1993),

que recebe duas listas de traços e devolve uma nova lista com todos os traços sem repetições, se não

existirem inconsistências. Isto é, se numa lista aparece o atributo Z com valor W e na segunda lista

aparece o mesmo atributo Z mas com valor R, é captada uma inconsistência e o predicado falha.

ii) Adjunções de quantificadores a N’’

Nesta regra sintagmática é também tratado o caso da adjunção de quantificadores a N’ ’ . O quantificador

“ todos” só pode co-ocorrer com um determinante definido, como é ilustrado pelos seguintes exemplos:

26) Todos os gatos são animais?

27) *Todos uns gatos são animais?

28) *Todos alguns gatos são animais?

Page 80: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

80 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Por esta razão assume-se que o quantifiador “ todos” pode ser adjunto a um N’ ’ , ou seja, a um SN cujo

especificador já foi satisfeito com um determinante definido. A representação sintáctica destas

construções é ilustrada na figura 717.

Figura 7 – Representação da estrutura sintáctica adoptada para a adjunção do quantificador “ todos” a N’ ’

O predicado trata_spr/6 constrói a representação semântica mais adequada a estes casos, ou seja,

modifica a representação semântica do N’ ’ adjunto para que todo este seja quantificado pelo quantificador

“ todos” . Por exemplo, na frase seguinte:

29) Todos os gatos e cães são animais ?

O quantificador “ todos” pode ou não ter âmbito sobre “ os gatos” e sobre “ cães” . No entanto, a

representação semântica do SN “ os gatos e cães são animais” é a seguinte:

d(o, plu, A, gato(A)>d(exi, plu, B, animal(B)&ser_v(A, B)))&

d(exi, plu, C, cão(C)&d(exi, plu, B, animal(B)&ser_v(C, B)))

Como se pode verificar, é necessário modificar a semântica da quantificação deste N’ para que seja

construída a interpretação em que o determinante “ todos” tenha âmbito sobre toda a coordenação. O

predicado trata_spr/6 constrói essa interpretação ficando:

d(todo, plu, A, gato(A)>d(exi, plu, B, animal(B)&ser_v(A, B)))&

d(todo, plu, C, cão(C)>d(exi, plu, B, animal(B)&ser_v(C, B)))

Este predicado restringe também a construção de estruturas de adjunção deste tipo com o quantificador

“ qualquer” . Este não pode ocorrer seguido de um determinante definido como se pode verificar nos

exemplos seguintes:

30) *Qualquer o gato é animal? 30’ ) Qualquer gato é animal?

17 Embora esta não seja a estrutura sintáctica mais aceite actualmente para este tipo de construções, é a estruturalinguisticamente mais adequada e eficiente à implementação no formalismo escolhido. Para um tratamento adequadoda estrutura sintáctica ver, por exemplo, Zamparelli (1995).

Page 81: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 81

O predicado trata_spr/6 devolve também uma nova lista de traços correspondente ao SN resultante da

adjunção.

Regra Sintagmática 4 – Adjunção da negação a SV

r(v,T1,[],[spr:[SPR], comp:[],

gap:GAP], X^Sem1) => [elex(neg,_,_,Sem^Sem1),

r(v,T1,[],[spr:[SPR],comp:[],

gap:GAP], X^Sem)].

Um fenómeno linguístico importante, e que tem de ser considerado, é a negação. Como vimos nas meta-

entradas lexicais, consideramos apenas o operador de negação “ não” . A sua representação semântica é

igual à de um verbo intransitivo (de um lugar) porque a ideia essencial é colocar todo o SV negado como

argumento da partícula de negação.

Nesta regra, a meta-entrada lexical da partícula de negação é associada a um V’ devolvendo um novo V’

com uma nova representação semântica. A restrição que se impõe à aplicação desta regra a um V’ é a da

lista spr ter de conter um elemento e de a lista comp estar obrigatoriamente vazia. A lista gap pode ou

não estar vazia, permitindo a negação dentro das orações relativas (de complemento ou de especificador)

assim como de qualquer V’ numa frase:

31) Os animais que não são mamíferos …

32) Os alimentos que o gato não come …

33) Uma planta não come carne?

A representação sintáctica adoptada para os V’ é uma estrutura de adjunção:

Figura 8 – Representação em árvore da estrutura sintáctica adoptada para a adjunção do operador denegação a SV

A representação semântica destas estruturas é dada pela representação semântica do V’ com negação

sendo a variável abstraída mais externa deste V’ unificada com a variável abstraída mais externa da

representação semântica do novo V’ .

Page 82: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

82 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Estas estruturas podem ser ambíguas dependendo do escopo da negação, que pode ou não incluir o

complemento de V. Neste sistema a estratégia seguida foi a de considerar apenas as interpretações mais

próximas da estrutura sintáctica da frase. As representações semânticas dos exemplos descritos acima são:

31) Os animais que não são mamíferos …

(A^B)^d(o,plu,A,animal(A)&~(d(exi,plu,C,mamífero(C)&ser(A,C)))& B)

32) Os alimentos que o gato não come …

(A^B)^d(o,plu,A,alimento(A)&d(o,sing,C,gato(C)&~(comer(A,C)))& B)

33) Uma planta não come carne?

d(o,plu,A,planta(A)&~(d(exi,sing,B,carne(B)&comer(A,B))))

No exemplo 32), é negado apenas o verbo porque se trata da negação de uma oração relativa de

complemento. A adjunção da negação nestes casos dá-se antes da junção da representação semântica do

V’ à do seu complemento. Este problema só seria correctamente resolvido se existisse um mecanismo que

gerasse todas as interpretações semânticas possíveis e as respectivas representações. Contudo, esse

mecanismo geraria muitas interpretações equivalentes e interpretações não usuais, o que dificultaria o

trabalho de inferência numa fase posterior.

Vejamos agora o processo de construção da representação semântica da frase “ o gato não comeu o

peixe” :

“ comeu o peixe”

(i) representação do SN “ o peixe” [(Z^B)^d(o,sing,Z,peixe(Z) & B)]

(ii) representação do verbo “ comer” [Y^W^comer(Y,W)]

(iii) pela regra sintagmática 8 (núcleo-complemento) (ver adiante) e composição de (i) com (ii),

representação do SV [Y^d(o,sing,Z,peixe(Z) & comer(Y,Z))]

“ não comeu o peixe”

(iv) representação da partícula de negação “ não” [X^~(X)]

(v) representação do SV “ comeu o peixe” [Y^d(o,sing,Z,peixe(Z) & comer(Y,Z))]

(vi) pela regra sintagmática acima descrita e composição de (iv) com (v), representação do SV

[Y^~(d(o,sing,Z,peixe(Z) & comer(Y,Z))]

“ o gato não comeu o peixe”

(vii) representação do SN “ o gato” [(X^A)^d(o,sing,X,gato(X) & A)]

(viii) representação do SV “ não comeu o peixe” [Y^~(d(o,sing,Z,peixe(Z) &

comer(Y,Z))]

Page 83: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 83

(ix) pela regra sintagmática 7 (especificador-núcleo) (ver adiante) e composição de (vii) com

(viii), representação da frase final “ o gato não comeu o peixe” [d(o,sing,X,gato(X) &

~(d(o,sing,Z,peixe(Z) & comer(Y,Z))]

Regra Sintagmática 5 – SNs marcados

r(n,[marcado:s|T1],[\+(extrai(T1,marcado,s)),

verifica_relacional(Sem,T1,Sem1)],

[spr:[], comp:[], gap:[]],Sem1) =>[r(marc,_,[],[spr:[],comp:[],gap:[]],_),

r(n,T1,[],[spr:[],comp:[],gap:[]],Sem)].

Esta regra sintagmática possibilita a construção de SNs marcados que possam ser complementos de

nomes. Esta regra associa um SN a um elemento do tipo “ marcador” e constrói um novo SN marcado cuja

semântica é idêntica à do SN inicial.

O predicado verifica_relacional/3 permite a análise correcta das seguintes estruturas:

37) O hipónimo do hipónimo de “ gato” é “ animal” ?

38) O hipónimo de “ gato” é “ felino” ?

39) * O hipónimo do “ gato” é “ felino” ?

Este predicado recebe a representação semântica do SN à direita do elemento “ marcador” , a sua lista de

traços e devolve a nova semântica (igual à que recebe). Desta forma é exigido que ou o SN não tem

determinante (38) (impondo que o segundo argumento de d seja do tipo exi que, como vimos, indica a

ausência de determinante) ou o SN é composto por um nome que selecciona complementos (37).

O SN resultante da aplicação desta regra apresenta uma lista de traços semelhante à do SN do lado direito

da regra, acrescentando no entanto o par marcado:s. A inclusão deste traço na lista do novo SN, assim

como a chamada ao predicado extrai/3 na lista de objectivos atrasados restringe a entrada do novo SN

nesta regra. Desta forma, frases como a seguinte são rejeitadas:

40) *O hipónimo de de “ gato” é “ mamífero” ?

Page 84: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

84 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Regra Sintagmática 6 – Coordenações

r(V,Ltracos5,[ \+(extrai(Ltracos,coord,_)),

testa_conjuncao(C, Ltracos2, Ltracos3),

coordena(V,Sem1,Sem3,Ltracos3,Ltracos4,Sem4),

insere_cabeca(Ltracos4,marcado:s,Ltracos5),

verifica_sv(V,Ltracos,Ltracos2)],

[spr : SPR, comp: [],gap : Gap], Sem4) =>

[r(V,Ltracos,[],[spr:SPR,comp:[],gap:Gap],Sem1),

r(conj,conj:C],[],[spr:[],comp:[],gap: []],_),

r(V,Ltracos2,[],[spr: SPR, comp:[],gap: Gap],Sem3)].

Esta regra sintagmática18 trata as coordenações de SNs (marcados ou não), SVs, SPs e orações relativas

(VRs). O lado direito da regra contém dois SX do mesmo tipo, coordenados por uma conjunção.

Os operadores de conjunção tratados neste trabalho são “ e” e “ ,” . Estes operadores apresentam na sua

lista de traços o atributo conj que tem o valor f (final) — no caso do “ e” — ou nf (não final) — no caso

da “ ,” . Este atributo é fundamental para restringir a aceitação de estruturas como:

41) *O gato e o cão, a aranha são animais?

42) *O gato, o cão, a aranha são animais?

Sabemos que imediatamente depois de uma vírgula terá de figurar uma coordenação de SNs (SNc);

sabemos também que imediatamente depois de um “ e” terá de surgir um SN simples (SNs). Assim, um

SN coordenado terá a estrutura representada na figura 9.

Figura 9 – Representação em árvore da estrutura sintáctica adoptada para as conjunções

O predicado testa_conjuncao/3 conjuntamente com o predicado extrai/3, tratam esta restrição. O

primeiro predicado recebe o valor do atributo tipo da conjunção em questão, e a lista de traços do

sintagma à direita desta, devolvendo a lista de traços do novo sintagma. Esta nova lista contém todos os

18 Esta regra sintagmática foi baseada na regra da disjunção de Kamp & Reyle (1993).

Page 85: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 85

traços da lista recebida mais o que indica que o sintagma já está coordenado coord:s. Este predicado

impõe as seguintes restrições:

• Se a conjunção for do tipo f (um “ e” ), a lista de traços do sintagma à direita dessa conjunção não

pode ter o traço coord:s, ou seja, não pode haver coordenação

• Se a conjunção for do tipo nf (uma “ ,” ) a lista de traços do sintagma à direita da coordenação tem de

ter o traço coord:s, obrigando assim a que seja um sintagma coordenado.

O sintagma mais à esquerda da conjunção é, nos dois casos acima, não coordenado (simples). Por essa

razão, é chamado o predicado extrai/3 sobre a lista de traços desse sintagma, verificando a ausência do

atributo coord.

A representação semântica de coordenações é dada através do operador “ &” que junta a representação

semântica do primeiro sintagma ao segundo deixando as respectivas variáveis abstraídas de fora. A

representação semântica teria a seguinte forma: X^Y^(S1 & S3), onde X^S1 corresponde a Sem1 e Y^S3

a Sem3, na regra acima descrita. Esta representação semântica não pode ser feita directamente na regra

sintagmática porque podemos ter coordenações de mais de dois sintagmas. Veja-se o exemplo do SN “ o

gato, o cão e a aranha” :

“ o cão e a aranha”

(i) representação do SN1 “ o cão” [(X^A1)^d(o,sing,X,cão(X) & A1)]

(ii) representação do SN2 “ a aranha” [(Y^A2)^d(o,sing,Y,aranha(Y) & A2)]

(iii) pela regra semântica e composição de (i) com (ii), representação do SN “ o cão e a aranha”

[(X^A1)^(Y^A2)^(d(o,sing,X,cão(X)&A1) & d(o,sing,Y,aranha(Y) & A2))]

“ o gato, o cão e a aranha”

(iv) representação do SN3 “ o gato” [(Z^A3)^d(o,sing,Z,gato(Z) & A3)]

(v) representação do SN4 “ o cão e a aranha” [(X^A1)^(Y^A2)^(d(o,sing,X,cão(X) &

A1) & d(o,sing,Y,aranha(Y) & A2))]

(vi) pela regra semântica a estudar e composição de (iv) com (v), representação do SN “ o gato, o

cão e a aranha” [(Z^A3)^(X^A1)^(d(o,sing,Z,gato(Z))&(Y^A2)^d(o,sing,

X,cão(X) & A1) & d(o,sing,Y,aranha(Y) & A2))]

Como se pode observar, esta representação semântica tem alguns problemas quando se trata de coordenar

mais de dois sintagmas. Desta forma, a representação semântica das coordenações é dada pelo predicado

coordena/6 que recebe a categoria dos sintagmas a coordenar, a sua representação semântica e a lista de

traços devolvida pelo predicado testa_conjunção/3 (a lista de traços do sintagma mais à direita com o

traço coord:comp).

Page 86: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

86 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

O predicado coordena/6 chama os predicados coord_sn/3 e coord_sx/3 que realizam todas as

operações necessárias à coordenação de múltiplos SXs:

O coord_sn/3 [coord_sn(+A^SN1,+SN2,-A^SN)]:

- recebe dois SNs,

- guarda numa lista todas as abstracções de SN2 (pode ser um SN coordenado) e em SN2s a

fórmula sem abstracções,

- aplica as abstracções da lista a (SN1 & SN2s), que devolve em SN (note-se que SN1 não tem

abstracções),

- finalmente, aplica a abstracção do SN1 (A) a SN.

Obtém-se, assim, em SN, a representação semântica do SN coordenado final.

Neste caso, o predicado coordena/6 retira da lista de traços que recebe o traço relativo ao número e

introduz-lhe o par num:plu. Isto serve para que a concordância com o verbo seja feita de forma correcta.

O coord_sx/3 [coord_sx(+Sx1,+Sx2,-Sx).]:

- recebe dois SXs com abstracções (Sx1 e Sx2),

- retira essas abstracções e força a igualdade dessas variáveis,

- aplica a variável resultante a (Sx1s & Sx2s) — (Sx1s e Sx2s correspondem às respectivas

fórmulas sem abstracções)

Exemplo do SV coordenado “ tem patas e é mamífero ” :

(i) representação do SV “ tem patas” (SV1) [A^d(exi, plu, B, pata(B) & ter(A, B)]

(ii) representação do SV “ é ‘mamífero’ ” (SV2) [C^d(exi,sing,D,mamífero(D)&ser(C,D))]

(iii) pela regra de SV coordenado e composição de (i) com (ii), representação do SV final “ tem patas

e é ‘mamífero’ ” [E^(d(exi, plu, B, ovo_2(B) & ter(E, B)) & d(exi, sing, D,

mamífero(D) & ser(E, D)))]

O último predicado da lista de objectivos atrasados coloca à cabeça da lista de traços que será associada

ao novo SX o par marcado:s (se este existir na lista). Esta operação serve para facilitar o processamento

posterior, no caso de se tratarem coordenações de SNs marcados, como por exemplo:

43) O hipónimo de “gato” e de “cão” é “ mamífero” ?

Page 87: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 87

Regra Sintagmática 7 – Especificador - núcleo

r(N,Ltracos3,[sem_spr(N,Ltracos,T1,Y^Sem,Sem1,Ltracos3,Sem2)],

[spr:[],comp:[],gap:GAP], Sem2) =>

[ r(C,Ltracos,[],SCAT,Sem1),

r(N,T1,[],[spr:[r(C,Ltracos,[],SCAT,Sem1)],

comp:[],gap:GAP],Y^Sem)].

Esta regra recebe um X’ e um Y’ ’ pedido pela lista de especificadores de X’ , e devolve como resultado um

X’ ’ . O esquema seguinte ilustra o tipo de estruturas tratado por esta regra:

Figura 10 – Representação em árvore da estrutura sintáctica adoptada para o especificador-núcleo

Esta regra pode ser aplicada a V’ , que tem como especificador SN, e a N’ que têm como especificador um

D. A lista spr de X’ é satisfeita com o Y’ ’ e, por essa razão, a lista do X’ ’ resultante encontra-se também

vazia. A lista gap sobe simplesmente na estrutura podendo estar ou não vazia. Se essa lista não estiver

vazia, a regra permite a associação de SNs a V’ em relativas, de modo a aceitar estruturas do tipo:

44) o alimentoi que o gato come ∅i

Esta regra permite associar o SN “ o gato” ao verbo “ comer” que contém um complemento na lista gap

“ o alimento” .

A lista de objectivos por realizar contém uma chamada ao predicado sem_spr/7, que recebe a

categoria do X’ , a lista de traços de Y’ ’ e de X’ e a representação semântica de X’ e de Y’ ’ . Este predicado

devolve a lista de traços e a representação semântica do novo sintagma tratando dois casos distintos:

i) X’ de categoria v e Y’ ’ um SN;

ii) Restantes categorias

i) X’ de categoria v e Y’’ um SN

Quando X’ é de categoria v e Y’ ’ é um SN, as duas listas de traços são unificadas (através do predicado

unifica/3) sendo a lista resultante a lista de traços do SV. A representação semântica do SV é dada

através do predicado subs/3, que recebe duas representações semânticas, co-indexa as variáveis

Page 88: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

88 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

abstraídas mais externas da primeira representação com a variável abstraída da segunda, devolvendo uma

nova representação semântica. Neste caso, co-indexa a(as) variável(eis) abstraída(s) mais externa(s) do

SN (especificador) com a variável abstraída mais externa do V’ . Este predicado tem uma utilidade

particular no caso de o SN ser coordenado. Vejamos o seguinte exemplo:

45) O gato e o cão são animais?

A representação semântica do SN “ o gato e o cão” é a seguinte:

(A^Amb1)^(C^Amb2)^(d(o,sing,A,gato(A)>Amb1)&d(o,sing,C,cão(C)>Amb2))

A representação semântica do V’ “ são animais” é:

X^d(exi, plu, B, animal(B)&ser(X, B))

Como podemos observar pelos exemplos acima, existem dois âmbitos para instanciar com uma mesma

variável. Esta instanciação não pode ser feita apenas com o mecanismo de instanciação do Prolog e, por

esta razão, define-se o predicado subs/3 que realiza, recursivamente, a substituição de todas as variáveis

de uma fórmula. Este predicado é definido da seguinte forma:

subs(X^F,X,F):- var(X).

subs((X^A)^F,V^SV,R) :- substitute(X,V,SV,A), !, subs(F,V^SV,R).

subs(F,_^_,F).

A primeira cláusula serve para tratar os casos do verbo “ ser” sem semântica, que selecciona um SP,

enquanto a última serve para aceitar casos em que o SN final é constituído apenas por N.

O predicado subs/3 chama um outro predicado, substitute/4 (Sterling & Shapiro), que efectua a co-

indexação necessária entre todas as variáveis por abstrair do SN (Amb1 e Amb2) com a variável por

abstrair do V’ (X).

substitute(+Term,+Var,+Formula,-Result).

Este predicado recebe um termo Term, uma variável Var e uma fórmula Formula e devolve em Result

o resultado da substituição de Var por Term em Formula.

Exemplo:

?- substitute(A,B,sorrir(B),Z).

Z = sorrir(A)

Page 89: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 89

A semântica da frase “ o cão e o gato são animais“ , depois de aplicados estes predicados seria:

d(o, sing, A, gato(A) > d(exi, plu, B, animal(B) & ser(A, B)))

& d(o, sing, C, cão(C) > d(exi, plu, B, animal(B) & ser(C, B)))

ii) Restantes categorias

Nos restantes casos, como por exemplo as expressões nominais que têm sintagmas determinantes como

especificador, o predicado sem_spr/7, chama apenas o predicado unifica/3, que unifica as duas

listas de traços de modo a detectar eventuais inconsistências.

Regra Sintagmática 8 – Verbo existir com inversão de sujeito

r(v,Ltracos1,[extrai(T1,tipo,existe), unifica(T1,Ltracos,Ltracos1),

subs(Sem1,Sem2,Sem3)],

[spr:[],comp:[],gap:[]],Sem3) =>

[r(v,T1,[],[spr:[r(n,Ltracos,[],[spr:[],comp:[],gap:[]],Sem1)]

comp:[], gap:[]],Sem2),

r(n,Ltracos,[],[spr:[], comp:[], gap:[]],Sem1)].

Nesta regra sintagmática é tratado o caso específico do verbo existir, com o sujeito à direita, em frases

como:

46) Existem quantos hipónimos de “ gato” ?

Este verbo apresenta algumas características especiais. Embora possa ser considerado um verbo

intransitivo em construções do tipo 47) e, consequentemente, tratado pela regra sintagmática 7, pode

também ocorrer em construções como a de 46), contrariamente aos verbos intransitivos 48).

47) Quantos hipónimos de “ gato” existem?

48) *Miam quantos hipónimos de “ gato” ?

Por esta razão, e por 46) se tratar de uma construção frequentemente utilizada em sistemas deste tipo, foi

necessária a inclusão de uma regra sintagmática específica.

Na lista de objectivos atrasados encontra-se o predicado extrai/3 que restringe a aplicação desta regra

ao verbo existir, exigindo a presença do par tipo:existe na lista de traços do V’ . Para além deste predicado

é chamado o predicado unifica/3 (que obriga a concordância entre o verbo e o seu sujeito) e o

predicado subs/3 (que constrói a representação semântica adequada permitindo um SN coordenado

como sujeito). Desta forma, as construções 49) e 50) são correctamente analisadas:

Page 90: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

90 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

49) *Existe quantos hipónimos de “ gato” ?

50) Existem hipónimos de “ gato” e de “ cão” ?

Regra Sintagmática 9 – Gap à direita de um núcleo verbal

r(v,Ltracos,[subs(Sem1,Sem2,Sem3)],

[spr :[], comp:[], gap :[]], Sem3) =>

[r(C,Ltracos,[],SCAT,Sem1),

r(v,_,[],[spr :[], comp:[],

gap:[r(C,Ltracos,[],SCAT,_)]],Sem2)].

A regra sintagmática apresentada acima trata o caso das construções do tipo:

51) Quantos hipónimos de “ gato” há?

Nestas construções, como já foi referido anteriormente, o complemento do verbo “ haver” não se encontra

na sua posição canónica, tendo sido deslocado para a esquerda do núcleo verbal.

Embora esta regra seja semelhante à regra sintagmática 7 (especificador – núcleo), apresenta uma

diferença fundamental: o SN que se encontra à esquerda do verbo não é o seu argumento externo, mas

sim o argumento interno. Por esta razão, o verbo não tem traços de concordância com o SN que o

antecede. Assim, o único predicado chamado na lista de objectivos atrasados é o predicado subs/3, que

faz a construção semântica correcta quando se trata de um SN coordenado, permitindo construções como:

52) Quantos hipónimos de “ gato” e de “ cão” há?

Regra Sintagmática 10 – Predicados com um complemento in situ

r(N,T1,[faz_sem(Sem2,Sem1,T1,Sem3),verifica_comp(N,T1,L)],

[spr : SPR,comp: [],gap : Gap], Sem3) =>

[elex(N,T1,[spr : SPR, comp:[r(C2,L,[],SCAT2,Sem2)],

gap : Gap],Sem1),

r(C2,L,[],SCAT2,Sem2)].

Nesta regra são tratadas as meta-entradas lexicais de expressões com um complemento in situ como as

expressões verbais transitivas com um argumento, as expressões nominais que seleccionam complemento

e as preposições. O elemento da lista comp da meta-entrada lexical tem de ser igual aquele que é

encontrado à sua direita, sendo o resultado da aplicação da regra um X’ , em que X é da mesma categoria

da meta entrada.

Page 91: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

A Gramática

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 91

A representação semântica deste X’ é dada através do predicado faz_sem/4 que recebe as representações

semânticas do complemento e do X’ e a lista de traços do predicado (núcleo). Este predicado trata o caso

em que X’ é o verbo “ haver” (impessoal) que apresenta a lista de spr vazia e, consequentemente, a sua

representação semântica contém apenas uma variável por abstrair que deve instanciar com a

representação semântica do complemento. Neste caso, o predicado faz_sem/4 certifica-se de que se trata

do verbo “ haver” através do predicado extrai/3, chamando em seguida o predicado subst/3, já visto

anteriormente, sobre as representações semânticas recebidas. Nos restantes casos, este predicado chama o

predicado subst/3 sobre a representação semântica do complemento e sobre a representação semântica

de X’ sem a variável mais externa abstraída. (a correspondente ao sujeito).

Esta regra sintagmática chama também o predicado verifica_comp/3. que recebe a categoria e a lista

de traços de X’ (núcleo) e a lista de traços do complemento. Este predicado booleano impede que nomes

que seleccionam complementos sejam complemento de verbos diferentes do verbo “ ser” identidade.

Assim, este predicado impede a construção de estruturas como a seguinte:

53) *O gato tem hipónimo de “ cão” ?

Para efeitos de ilustração da aplicação da gramática, no anexo 7 são apresentados alguns exemplos do

processamento sintáctico e semântico de interrogativas simples do português.

Page 92: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional
Page 93: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Algoritmo de Conversão

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 93

12. Algoritmo de Conversão

Uma vez implementados a gramática e o parser, é necessário implementar um algoritmo capaz de ler uma

frase interrogativa em linguagem natural no ecrã, tratá-la de forma a poder ser aplicada à gramática e

devolver uma representação semântica legível pelo utilizador. Neste capítulo é descrito esse algoritmo,

cujo código se encontra em (anexo 8).

Pode aceder-se ao algoritmo através da execução do predicado go/0 no compilador Prolog. Este

algoritmo começa por ler o input do ecrã, através do predicado read_line/1 que lê, um a um, os

caracteres introduzidos pelo utilizador. Em seguida, é verificado se o input corresponde a uma frase

interrogativa (pela presença do símbolo “ ?” ) e tratada a posição da vírgula de forma a que esta esteja

sempre entre dois espaços em branco (mesmo que não tenha sido introduzida desta forma pelo utilizador).

Ainda durante a execução deste predicado, todas as sequências que se encontram entre espaços em branco

na string introduzida são colocadas numa lista. Esta lista é, em seguida, objecto de tratamento

relativamente às contracções. Todas as contracções presentes na lista são substituídas pela sequência

preposição-artigo19 correspondente através, do predicado subst_contract/2.

A lista resultante deste processo é posteriormente tratada pelo predicado analisador/1 que chama os

predicados verifica_lexico/2 e reconhecedor/1.

O primeiro verifica a presença de cada elemento da lista na base de dados lexical, devolvendo uma lista

com a interpretação ou as interpretações (resultantes da ambiguidade lexical) ligadas à frase, utilizando o

predicado build-in do Prolog findall/3. Por exemplo:

1) As fatias douradas são comida?

Neste caso, a execução do predicado findall(L,verifica_léxico(Frase,L),L1) devolveria uma

lista com duas sublistas correspondentes às duas leituras possíveis de “ fatia dourada” ou “ fatia” e

“ dourada” 20:

[[as,‘fatias douradas’,são,comida],[as,fatias,douradas,são,comida]]

Esta lista de listas é, seguidamente, tratada pelo predicado reconhecedor/1 que aplica as regras da

gramática a cada uma das sublistas através do predicado semf/2. O predicado semf/2 recebe uma das

sublistas e devolve uma lista com todas as interpretações semânticas possíveis para a análise da frase na

19 As preposições consideradas nesta fase do projecto são apenas as compostas por preposição e artigo.

20 Como é do conhecimento do leitor, “ dourada” pode ser um adjectivo. No entanto, a interpretação em que estetermo assume essa categoria não é levado em conta, uma vez que a WordNet.PT não contempla ainda lexicalizaçõesdeste tipo. Assim, as únicas interpretações possíveis são as de “ fatia dourada” , “ fatia” e “ dourada” como nomes.

Page 94: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

94 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

gramática. Note-se que, para o exemplo 1) acima, o predicado semf/2 devolveria apenas uma

representação semântica pois não possui, na sua gramática, regras que permitam a ocorrência de dois

nomes seguidos. Assim, a interpretação em que “ fatia” e “ dourada” são expressões nominais atómicas é

rejeitada.

O predicado semf/2 chama o predicado parse/2 que corresponde ao parser propriamente dito. Este

predicado trata ainda da omissão do verbo ser em estruturas do tipo:

2) Qual o hipónimo de “ cão” ?

Este tratamento passa pela inserção do verbo ser, na lista de palavras, na posição de onde foi elidido. Esta

inserção é necessária para a aplicação das regras da gramática e licenciamento da estrutura.

O predicado parse/2 utiliza ainda o predicado statistics/2 build-in do Prolog para cronometrar o

tempo que o sistema demora a fazer o reconhecimento, a análise e a(as) representação(ões) semântica(s)

para uma dada frase.

O predicado semf/2 imprime ainda, no ecrã, as representações semânticas que encontra, de forma legível

pelo utilizador, através do predicado pprint/2.

No anexo 9, onde estão apresentados alguns exemplos de frases analisadas pelo sistema, foi utilizado este

algoritmo.

Page 95: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Conclusões Finais e Trabalho Futuro

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 95

13. Conclusões e Trabalho Futuro

Neste relatório são apresentadas as principais fases de desenvolvimento do Módulo I – Análise

Sintáctico-Semântica – do Projecto INQUER – Interacção Pessoa-Máquina em linguagem natural.

Este projecto tem como principal objectivo o desenvolvimento de um recurso tecnológico capaz de

potencializar as possibilidades de exploração da WordNet.PT, facilitando a sua utilização por utilizadores

não especializados. Por outro lado, este sistema é também uma ferramenta linguística uma vez que analisa

e gera linguagem natural.

O desenvolvimento deste sistema passa pelo desenvolvimento de três módulos distintos, a saber: Análise

Sintáctico-Semântica, Inferência e Geração em Linguagem Natural. O primeiro destes módulos, da

responsabilidade da estagiária, e objecto deste relatório, consiste na análise sintáctica das frases

interrogativas introduzidas pelo utilizador, gerando uma ou mais representações semânticas de acordo

com a(s) interpretação(ões) da frase. Estas representações são posteriormente processadas no módulo

Inferência que procura e extrai a informação necessária para a resposta à pergunta. No módulo Geração

em Linguagem Natural é gerada a resposta à pergunta através da análise da representação semântica e da

informação extraída. Este último módulo não está ainda a ser desenvolvido.

Embora este projecto envolva uma forte componente de investigação não deixa de ser um projecto de

desenvolvimento de uma ferramenta de software. Por esta razão foi necessário combinar metodologias

adequadas ao desenvolvimento de cada uma das tarefas, o que se revelou uma experiência muito

enriquecedora do ponto de vista profissional.

Por outro lado, uma vez que o seu desenvolvimento é feito de forma modular, é necessária uma interacção

constante entre os responsáveis de cada módulo para que todo o sistema fosse eficiente. O trabalho de

equipa foi fundamental no desenvolvimento de todo o sistema.

13.1 TRABALHO FUTURO

O desenvolvimento do projecto INQUER não termina com este estágio, estando já planeadas outras fases

de desenvolvimento como é o caso do Módulo III – Geração em Linguagem Natural.

No que respeita ao módulo I, o desenvolvimento inicial foi assegurado no decorrer deste estágio. No

entanto, como este projecto está directamente relacionado com o projecto WordNet.PT, serão necessárias

extensões à base de dados lexical e relacional do sistema INQUER à medida que novos domínios

semânticos são revistos e desenvolvidos no projecto WordNet.PT.

Page 96: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

96 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Por outro lado, nesta primeira fase de desenvolvimento do módulo I foram implementadas apenas

algumas das estruturas sintácticas presentes nas interrogativas do Português, motivadas pelas respostas

obtidas através de um questionário elaborado para o efeito.

A estagiária propõe o desenvolvimento de regras capazes de lidar com mais algumas estruturas

sintácticas presentes nas respostas do questionário nomeadamente:

• estruturas de disjunção

• inversões de sujeito

• adjunções de sintagmas adjectivais a N’

• estruturas com complementos causais

Para além destas estruturas, para um tratamento mais alargado da quantificação, é sugerida a adaptação do

formalismo usado à estrutura de quantificadores generalizados.

Numa fase posterior do projecto, é também sugerido que o site na internet tenha a capacidade de registar

as perguntas e respostas resultantes da interacção utilizador-sistema. Os resultados permitirão definir as

áreas de desenvolvimento do sistema INQUER de forma a ir de encontro às expectativas dos utilizadores.

Page 97: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Referências

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 97

Referências

Aldana, Emilio (2000), “ An application for translation of Spanish sentences into First Order Logic

implemented in Prolog” , Proceedings of First International Congress on Tools for Teaching Logic,

University of Salamanca, Spain.

http://aracne.usal.es/congress/PDF/EmilioRodriguez.pdf

Allen, James (1995), Natural Language Understanding, University of Rochester, The

Benjamin/Cummings Publishing Company, Inc.

Blackburn, Patrick & Johan Bos & Kristina Striegnitz (2001), Learn Prolog Now!.

http://www.coli.uni-sb.de/~kris/prolog-course/

Blackburn, Patrick & Johan Bos (1999), Representation and Inference for Natural Language, a First

Course in Computational Semantics, Volume I, working with first-order logic, Computerlinguistik,

Universitat des Saarlandes.

http://www.iccs.informatics.ed.ac.uk/~jbos/comsem/book1.html

Branco, António (2000), Reference Processing and its Universal Constraints, Lisboa, Edições Colibri..

Cardie, Claire et al (2000), “ Examining the role of Statistical and Linguistic Knowledge Sources in a

General- Knowledge Question-Answering System” , Proceedings of the Sixth Applied Natural

Language Processing Conference, New York.

http://acl.ldc.upenn.edu/A/A00/A00-1025.pdf

Carnie, Andrew (2000), “ Head Driven Phrase Structure Grammar I (HPSG)” , HandOuts.

http://www.linguistlist.org/~carnie/classes/LING505/HPSG.pdf

Chaves, Rui (2002), Fundamentos para uma Gramática Computacional do Português – Uma Abordagem

Lexicalista, Tese de mestrado apresentada à Faculdade de Letras da Universidade de Lisboa,

Lisboa.

Covington, Michael (1993), Natural Language Processing for Prolog Programmers, Artificial Intelligence

Programs, The University of Georgia, Athens, Prentice Hall.

Covington, Michael (2001), “ Some Coding Guidelines for Prolog” , Artificial Intelligence Center, The

University of Georgia, Athens.

Fellbaum, Christiane (1998), “ A Semantic Network of English Verbs” , in Christiane Fellbaum (ed),

WordNet – An Electronic Lexical Database, Cambridge, Massachusetts, London, England, The

Mitt Press

Gazdar, Gerald & Chris Mellish (1989), Natural Language Processing in Prolog, Workingham, Addison

Wesley.

http://www.cogs.susx.ac.uk/lab/nlp/gazdar/nlp-in-prolog/index.html

Gawron, Jean et al (1982), “ Processing English with a Generalized phrase structure grammar” ,

Proceedings of the 20th annual meeting association for computational linguistics, Computer

Research Center, Palo Alto.

http://acl.ldc.upenn.edu/P/P82/P82-1014.pdf

Ginzburg, Jonathan & Ivan Sag (2000), “ Interrogative Investigations: The form, meaning and use of

English interrogative constructions” , CSLI Publications.

Page 98: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

98 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Hellwig, Peter (2002), “ Natural Language Parsers – A “ Course in Cooking” ” , Heidelberg.

Hermjakob, Ulf & Eduard Hovy & Chin-Yew Lin (2002), “ Knowledge-Based Question Answering” ,

Proceedings of the 6th World Multiconference on Systems, Cybernetics and Informatics (SCI-

2002), Orlando, U.S.A.

http://www.isi.edu/natural-language/projects/ webclopedia/pubs/02sci.pdf

Jurafsky, Daniel &James Martin (2000), Speech and Language Processing, Prentice Hall.

Kamp, Hans & Uwe Reyle (1993), From Discourse to Logic: An Introduction to Model-Theoretic

Semantics of Natural Language, Formal Logic and Discourse Representation Theory, Dordrecht,

Holland, Kluwer Academic Publishers.

Kordoni, Valia (2001), “ Grammatiktheorie Head Driven Phrase Structure Grammar” .

www.coli.uni-sb.de/~kordoni/courses/ ws01-02/lecture2.pdf

Marrafa, Palmira (2001), WordNet do Português – uma base de dados de conhecimento linguístico,

Lisboa, Instituto Camões.

Marrafa, Palmira (1993), Predicação Secundária e Predicados complexos em Português – Análise e

Modelização, Tese de Doutoramento, Lisboa.

Mccawley, James (1993), Everything that Linguists have always wanted to know about Logic but were

ashamed to ask, Chicago and London, The University of Chicago Press.

Meurers, Detmar (2001), “ Lectures Notes for the Introduction to Symbolic Computacional Linguistics” ,

Department of Linguistics, The Ohio State University.

http://www.ling.ohio-state.edu/~dm/2001/winter/684.01/

Miller, George (1998), “ Nouns in WordNet” , in Christiane Fellbaum (ed), WordNet – An Electronic

Lexical Database, Cambridge, Massachusetts, London, England, The Mitt Press.

Moldovan, Don & Sandra Harabagin (2001), Open-Domain Textual Question Answering, Pittsburgh,

Cornegie Mellon

Moldovan, Don & Vasile Rus (2001), “ Logic Form Transformation of WordNet and its Applicability to

Question Answering” , Proceedings of the ACL 2001 Conference, Toulouse, France.

http://acl.ldc.upenn.edu/P/P01/P01-1052.pdf

Pardo, Thiago & Lucia Rino (1999), “ O Formalismo GPSG e sua Comparação com DCG e LFG” .

www.nilc.icmc.usp.br/~thiago/RTDC00299-PardoRino.pdf

Pereira, Fernando & Stuart Shieber (2002 1978), Prolog and Natural-Language Analysis, Microtome

Publishing, digital edition.

http://www.mtome.com/prolog-digital.pdf

Park, Jong (1992), “ A unification-based semantic interpretation for coordinate constructs” , Proceedings

of the 30th annual meeting association for computational linguistics.

http://acl.ldc.upenn.edu/P/P92/P92-1027.pdf

Poesio, Massimo (1998), “ Lectures – Computational Linguistics 2” , Division of Informatics, University

of Edinburgh.

http://www.cogsci.ed.ac.uk/~poesio/CL2

Page 99: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Referências

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 99

Prager, John & Jennifer Chu-Carroll & Krysztof Czuba (2001), “ Use of WordNet for Answering

What-is Questions” , The Tenth Text REtrieval Conference, Gaithersburg MD.

http://trec.nist.gov/pubs/trec10/index_track.html#qa

Ristad, Eric (1986), “ Defining Natural Language Grammars in GPSG” , Proceedings of the 24th Annual

Meeting of the ACL, New York.

http://acl.ldc.upenn.edu/P/P86/P86-1007.pdf

Ristad, Eric (1986), “ Computational Complexity of current GPSG theory” , Proceedings of the 24th

Annual Meeting of the ACL, New York.

http://acl.ldc.upenn.edu/P/P86/P86-1006.pdf

Russel, Stuart & Peter Norvig (1995), Artificial Intelligence – A Modern Approach, Prentice Hall

Sag, Ivan & Thomas Wasow (1999), Syntactic Theory: A Formal Introduction.

Shiber, Stuart et al (1989), “ A Semantic Head-Driven Generation Algorithm for Unification-Based

Formalisms” , Proceedings of the 27th ACL, Menlo Park, USA and Utrecht, Netherlands.

http://acl.ldc.upenn.edu/P/P89/P89-1002.pdf

Srihari, Rohini & Wei Li (1999), “ Information Extraction Supported Question Answering” , Eighth Text

REtrieval Conference (TREC-8), Gaithersburg, MD.

http://trec.nist.gov/pubs/trec8/papers/cymfony.pdf

Sterling, Leon & Ehud Shapiro (1997), “ The Art of Prolog” , second edition, Cambridge, Massachusetts,

The MIT Press.

Thompson, Cynthia & Raymond Mooney & Lappoon Tang (1997), “ Learning to parse natural language

database queries into logical form” , Proceedings of ML-97 Workshop on Automata Induction,

Grammatical Inference and language acquisition.

http://www.cs.utah.edu/~cindi/papers/chill/nlw-97.pdf

Vellino, André (1990), “ Programming in Logic” , Perspectives in Computing, Bell-Northern Research

http://www.iit.nrc.ca/~andre/publications/PIC-Prolog.PDF

Vicedo, Jose & António Ferrández (2002), “ A semantic approach to Question Answering systems” ,

Dpto. Lenguajes y Sistemas Informáticos, Universidad de Alicante, Alicante, Espanha

http://trec.nist.gov/pubs/trec9/papers/alicante_trec9_paper.pdf

Volk, Martin (1988), “ Parsing german with GPSG: the problem of separable-prefix verbs” , A Thesis

Submitted to the Graduate Faculty of The University of Georgia in Partial Fulfilment of the

Requirements for the Degree MASTER OF SCIENCE, Atenas, Georgia

http://www.ifi.unizh.ch/CL/volk/SyntaxVorl/GPSG.thesis.html

Vossen, Piek (1999), EuroWordNet – General Document, (version 3), University of Amesterdam.

http://www.illc.uva.nl/EuroWordNet/docs/GeneralDocPS.zip

Zamparelli, Roberto (1995), Layers in the Determiner Phrase, Ph. D. Thesis, University of Rochester.

Rochester, N.Y.

http://www.cogsci.ed.ac.uk/~roberto/layres/dp-hyp.html

Wielmaker, Jan (2002), SWI – Prolog 5.0 – Reference Manual, University of Amsterdam.

http://www.swi.psy.uva.nl/cgi-bin/nph-download/SWI-Prolog/refman/refman.pdf

Page 100: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional
Page 101: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 101

ANEXOS

Page 102: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional
Page 103: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 103

ANEXO 1 – AVALIAÇÃO DOS PARSERS

:-consult(’lexicofinal.txt’).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Operadores %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

:-op(950,xfx,’=>’).:-op(960,xfx,’:’).:-op(950,xfx,’==>’).:-op(940,xfx,’--->’).:-op(900,yfx,’>’).:-op(800,yfx,’&’).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Frases de Teste %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

f(1,[o,gato,tem,patas]).f(2,[a,aranha,tem,patas]).f(3,[a,pata,é,um,animal]).f(4,[o,borrego,é,um,mamífero]).f(5,[as,patas,de,o,gato,são,membros]).f(6,[os,membros,de,o,gato,são,patas]).f(7,[os,animais,que,são,carnívoros,comem,carne]).f(8,[as,plantas,que,têm,tronco,são,árvores]).f(9,[o,bolo,que,tem,ovos,de,a,galinha,é,de,fruta]).f(10,[o,bolo,que,tem,ovos,que,são,de,a,galinha,é,de,fruta]).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Procedimento Principal %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

teste(11).teste(N):- f(N,F), printList(F),!, findall(Y,parse_shift_lcorner(Y,F),R),nl, descarrega(R), N2 is N+1, teste(N2).

Page 104: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

104 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% META REGRAS LEXICAIS %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%____________________________________________________________________%%Meta-entrada Lexical para preposições%____________________________________________________________________

elex(p,Ltracos,[spr : [], comp: [r(n,_,[],_)], gap : []]) ==>p(_, Ltracos)^[].

%____________________________________________________________________%%Meta-entrada Lexical para marcadores%____________________________________________________________________

elex(marc,[],[spr : [], comp: [], gap : []]) ==> marc(_,_)^[].

%____________________________________________________________________%%Meta-entrada Lexical para determinantes indefinidos%____________________________________________________________________

elex(det,Ltracos,[spr : [],comp: [],gap : []]) ==>det(_, Ltracos)

^[\+(retira_elemento(Ltracos,tipo:uni,_))].

%____________________________________________________________________%%Meta-entrada Lexical para determinantes universais%____________________________________________________________________

elex(det,Ltracos,[spr : [],comp: [],gap : []]) ==>det(_, Ltracos)

^[retira_elemento(Ltracos,tipo:uni,_)].

%____________________________________________________________________%%Meta-entrada Lexical para pronomes relativos%____________________________________________________________________

elex(pr,[],[spr : [], comp: [], gap : []]) ==> pr(_,[]) ^[].

Page 105: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 105

%____________________________________________________________________%%Meta-entrada Lexical para nomes com especificador e complemento%singular%____________________________________________________________________

elex(n,Ltracos1,[spr : [r(det,_,[],_)], comp: [r(n,Ltracos2,[],[spr:[],comp:[]|_])], gap : []]) ==>

n(_, Ltracos) ^[retira_elemento(Ltracos,marcador:s,Ltracos1), member(num:sing,Ltracos2)].

%_____________________________________________________________________%%Meta-entrada Lexical para nomes com especificador e complemento%plural%_____________________________________________________________________

elex(n,Ltracos1,[spr : [r(det,_,_)], comp: [r(n,Ltracos2,[],[_,comp:[]|_])], gap : []]) ==>

n(_, Ltracos) ^[retira_elemento(Ltracos,marcador:s,Ltracos1), member(num:plu,Ltracos2)].

%____________________________________________________________________%%Meta-entrada Lexical para nomes sem complementos%____________________________________________________________________

elex(n,Ltracos,[spr : [r(det,_,[],_)],comp: [],gap : []]) ==> n(_, Ltracos) ^[].

%____________________________________________________________________%%Meta-entrada Lexical para verbos com um argumento interno%____________________________________________________________________

elex(v,Ltracos1,[spr : [r(n,_,[],_)], comp: [r(C,_,[],_)],gap : []]) ==> v(_,Ltracos)^[retira_elemento(Ltracos,scat:[comp:C],Ltracos1)].

Page 106: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

106 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% REGRAS SINTAGMÁTICAS %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%____________________________________________________________________%% Promove X0 para X'% ___________________________________________________________________

r(N,T,[],[spr : SCAT, comp: [],gap : Gap]) => [elex(N,T,[spr : SCAT, comp: [], gap : Gap])].

%____________________________________________________________________%% Orações relativas restrictivas%____________________________________________________________________

r(vr,T,[],[spr : [], comp: [], gap : []]) =>[ r(pr,_,[],_),

r(v,T,[],[spr : _,comp: [],gap : _])]^[].

% ___________________________________________________________________%% Adjunção de um modificador (SP/VR) a um N’% ___________________________________________________________________

r(n,T1,[adjunto(C)],[spr:SPR,comp:[], gap:[]]) => [ r(n,T1,[],[spr:SPR,comp:[],gap:[]]),

r(C,_,[],[spr:[],comp:[],gap:[]])]^[adjunto(C)].

% ___________________________________________________________________%% SNs marcados% ___________________________________________________________________

r(n,[marcado:s|T1], [\+(extrai(T1,marcado,s))],[spr:[],comp:[],gap:[]]) =>

[r(marc,_,[],[spr:[],comp:[],gap:[]]), r(n,T1,[],[spr:[],comp:[],gap:[]])]

^[\+(extrai(T1,marcado,s))].

Page 107: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 107

%____________________________________________________________________%% Especificador - Núcleo% ___________________________________________________________________

r(N,T2,[], [spr : [],comp: [], gap : Gap]) => [ r(C,T1,[],SCAT),

r(N,T2,[],[spr : [r(C,T1,[],SCAT)],comp: [],gap :Gap])]

^[subst(N),unifica(T1,T2,T3)].

%____________________________________________________________________%% Predicados com um complemento in situ%____________________________________________________________________

r(N,T1,[],[spr : SPR, comp: [], gap : Gap]) =>[elex(N,T1,[spr : SPR, comp: [r(C2,_,[],SCAT2)], gap : Gap]), r(C2,_,[],SCAT2)]^[].

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% PARSER LEFT-CORNER %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

parse(L) -->{statistics(runtime,_)},

recognise_t(L), {statistics(runtime,[_,T]), Time is T / 1000,nl,nl, write('Tempo de análise: '), write(Time),write(' segundos.'),nl}.

recognise_t(L) --> recognise(L).

recognise(Phrase) -->[Word], {(EL ---> [Word]),EL =.. [C|_],

(elex(C,Ltracos,S) ==> EL^Prolog), executa(Prolog)},

lc(elex(C,Ltracos,S),Phrase).

lc(r(v,_,[],[spr:[],comp:[],gap:[]]),[],[],[]).

lc(Phrase,Phrase) --> [].

Page 108: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

108 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

lc(Subphrase1, Superphrase) -->{obj_atrasados(Subphrase1,Subphrase2)},{Phrase => [Subphrase2|Right]}, recognise_rest(Right), lc(Phrase, Superphrase).

recognise_rest([]) --> [].

recognise_rest([Phrase|Rest]) --> recognise(Phrase),

recognise_rest(Rest).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% PARSER SHIFT-REDUCE %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

parse(p(L),L) -->{statistics(runtime,_)},

recognise(L), {statistics(runtime,[_,T]), Time is T / 1000,nl,nl, write('Tempo de análise: '),

write(Time),write(' segundos.'),nl}.

recognise([r(v,_,[],[spr:[],comp:[],gap:[]])],[],[]).

recognise([Y,X|Rest]) -->[], {obj_atrasados(X,Z),(LHS => [Z,Y])},

recognise([LHS|Rest]).

recognise([X|Rest]) -->[], {obj_atrasados(X,Y),LHS => [Y]},

recognise([LHS|Rest]).

recognise(Stack) -->[Word],

{(EL ---> [Word]), EL =.. [C|_], (elex(C,Ltracos,S) ==> EL^Prolog), executa(Prolog)}, recognise([elex(C,Ltracos,S)|Stack]).

Page 109: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 109

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% PARSER TABULAR ASCENDENTE %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

:-dynamic edge/4.

parse(R,Expr):- retractall(edge(_,_,_,_)), statistics(runtime,_), start_chart(1,Vn,Expr), statistics(runtime,[_,T]), Time is T / 1000, write('Tempo de análise: '),write(Time), write(' segundos.'),nl, retractall(edge(_,_,_,[_|_])), edge(1,Vn, R ,[]),!.

start_chart(V0,V0,[]).

start_chart(V0,Vn,[Word|Words]):- V1 is V0 + 1, foreach( (lexema(Word,Category)), add_edge(V0,V1,Category,[])), start_chart(V1,Vn,Words).

lexema(Word,elex(C,Ltracos,S)):-(EL ---> [Word]),

(elex(C,Ltracos,S) ==> EL^Prolog), executa(Prolog).

foreach(X,Y):- call(X), do(Y), fail.

foreach(_,_):- true.

do(Y):- Y, !.

add_edge(V0,V1,Category,Categories):- edge(V0,V1,Category,Categories),!.

add_edge(V1,V2,Category0,[]):- obj_atrasados(Category0,Category1), asserta(edge(V1,V2,Category1,[])), foreach( Category2 => [Category1|Categories], add_edge(V1,V1,Category2,[Category1|Categories])), foreach(edge(V0,V1,Category2,[Category1|Categories]), (add_edge(V0,V2,Category2,Categories))).

Page 110: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

110 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

add_edge(V0,V1,Category1,[Category2|Categories]):- asserta(edge(V0,V1,Category1,[Category2|Categories])), foreach(edge(V1,V2,Category1,[]), add_edge(V0,V2,Category1,Categories)).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% PREDICADOS AUXILIARES %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

/*========================================= executa(+ListaChamadasProlog)

Executa todos os predicados de uma lista =========================================*/

executa([]).

executa([P|L]):-call(P),executa(L).

/* ================================================================= retira_elemento(+Lista,?Elemento,?ListaSemElemento)

Retira da primeira lista o elemento X devolvendo uma lista sem esse elemento ===================================================================*/

retira_elemento([X|L],X,L).

retira_elemento([Y|L1],X,[Y|L]):- retira_elemento(L1,X,L).

/* ================================================================= unifica(+ListaAtributos,+ListaAtributos,?NovosAtributos)

Unifica duas listas de traços distintas sem inconsistência dando uma terceira como resultado ===================================================================*/

unifica([],X,X).

unifica([X|R],[],[X|R]).

unifica([Atr1:Val1|Resto],[Atr1:Val1|Resto2],[Atr1:Val1|Result]):- unifica(Resto,Resto2,Result).

Page 111: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 111

unifica([Atr1:Val1|_],[Atr1:Val2|_],_):-\+(Val1=Val2),!, fail.

unifica([Atr1:Val1|Resto],[Atr2:Val2|Resto2],Result):-unifica([Atr1:Val1],Resto2,NResto),unifica(Resto,[Atr2:Val2|NResto],Result),!.

/* ========================================================== objectivos_atrasados(+RegraSintagmática,-RegraSintagmática)

Executa objectivos prolog atrasados ============================================================*/

obj_atrasados(r(C,T,LGOALS,Scat), r(C,T,[],Scat)):-!,executa(LGOALS).

obj_atrasados(C,C).

/* ========================================== print_list(+Lista)

Imprime o conteúdo de uma lista para o ecrã ===========================================*/

printList([X]):-write(X).

printList([X|L]):-write(X),write(' '),printList(L).

/* ========================================== descarrega(+Lista)

Imprime o conteúdo de uma lista para o ecrã ============================================*/

descarrega([]):-write('-------------------------------'),nl,nl.

descarrega([S1|LS]):-write(S1),nl,

descarrega(LS).

Page 112: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

112 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

/* ==================================== categorias que podem estar em adjunção ======================================*/

adjunto(p).adjunto(vr).

/* =========================================== categorias que podem receber especificadores ============================================*/subst(n).subst(v).

Page 113: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 113

ANEXO 2 – QUESTIONÁRIO

INQUER����������� ������� ������������ ���������� !"�#��$��� $�� %&'�(����)

*,+.-�/&0�1325456�798�:<;>=>?A@(BC;ED�?5F.GAHI?IJKBFML�NAOQPA;ER'6�?E8�?�:C7SFTB<?UNA;6IBF.V.FMWINAD";":XF.GIB<?�:YNAL F.:�@Q;"7ZN57\[IR'6�F.G�N5G�;5]<;":7\N3B<;^8�?�:YL'6�GIB<NI_:Y?IJ38�;�JKB<NU?�79`3F.G�L'6�NAL"?�7a-�N3B6�:YN�VIbdc3;":dB6�L'6�eIJKfYg

1QJKB<N�7\;�J&Nh]<NAWI?�:X6�79VM?3HAN�GIB<N�7\?�GIBC;ED�NIJh8�?�:YL'6�GIB<NIJiB<j#8"FM@QNIJ&R'6�?56�76IBF.V.FMWINAD";":�@Q;"Vk;�@QNUN56�7lJ3FkJKB<?�7\NUD�?IJKB<N5G�N3B6�:Y?AW�N�g"cQN�:YN5FkJQJ(;L�;�JKB<N�:Yj.N�75;�J&R'6�?U@Q;"VMN�m�;":YNIJQJ(?U@Q;"G�G�;�J(@Q;"n�?IJ(@A:Y?QHA?�G�D�;^G�NU@QN�FTo�N\D�?B<?3o�B<;Eb�?�79m�N�FTo";�f'N�VML'6"7\NIJh8�?�:YL'6�GIB<NIJ&R'6�?p=q6�VML'6�?58�?�:dBF.G�?�GIBC?IJ3g

r�;"G�J3FMD�?�:Y?56"7lJ3FkJKB<?�7\NU@Q;'7Z@QN�8�NA@AFMD�NAD"?UD�?5:Y?IJ38�;"G�D"?�:�NhB<;�D�NIJ&NIJ8�?�:YL'6�GIB<NIJhG�NIJ&[�:Y?ANIJ&D�?UsYt3?�:Y?IJvuXFwHA;�J(s�?UsYr�;'7EFMD�NAsCg"x�?3]F.G"FMOQy�?IJ&?:Y?�VMNAOQy�?IJ&?�GIB:Y?5F.G�D'FwHAjzD'6�;�J{J(PA;E?3o"?�7S8�VM;�JiB<j�8�FM@Q;�J&D�?h]<;":7\N3B<;�J&D"?8�?�:YL'6�GIB<NIJ3g

EXEMPLOS:

"Quais os animais que têm tromba?""O que é um gato?""Um gato é mamífero?""Que tipo de planta é uma roseira?""Quantos tipos de bolos há?"

Page 114: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

114 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

����������� �����������������������������

����� � !#"

*&m�:CFML�NAD�;�8�?�VMN\J36�NU@Q;"VMN�m�;":YNAOQPA;%$

r�N3B<N�:CF.G�N52�F.m�?�F.:Y;^_52�FM@QN�:YD";Et3N�GIBC;�J

&%')(*',+-&/.1032#465879.:'3;�0=<?>=@BA 2#;DC)E-79EF(*09; GH.14A);D79EI79.-79.:'3;�A)J=59E&%'LKM+-KN4�>9O=5879.-&/5?P8O9>I2EIQ)R3587958&S5?09T=.ICI;�PF.10I25U'�V3WS;DC)5�+IKN46E1P-E32#;DC)E1X

YI.32�.1P8J9465879.FZ9[9[?Z

Page 115: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 115

ANEXO 3 – LISTA DE PERGUNTAS RECEBIDAS

Nº Pergs. O sistemaanalisa

O sist. nãoanalisa

Tipos de Perguntas 124 47 77

que solicitam uma definição 21 16 5X

O que é uma batata? XO que é um rinoceronte? XO que é uma toupeira? XO que é o Kiwi? XO que é um estoma? XO que é um vivíparo? XO que é um ornitorrinco? XO que é um cogumelo? XO que é o musgo? XO que é uma ema? XO que é um waffle? XO que é rizzoto? XO que é file mignon? XO que é um marsupial? XO que é um fungo? XO que é um souffle? XO que é uma morsa? XO que é uma medusa? XO que é uma anémona? XO que é bacalhau à lagareiro? XO que é um cão ? X

O que é o ... ? 2 2 0O que é um ... ? 16 13 3O que é ... ? 3 1 2

Totais (Polares e de alternativa) 31 13 18

A batata pode ser congelada? XO cão é esperto? XTodos os animais que têm tromba são mamíferos? XAs papoilas são venenosas? XO rato é um animal doméstico? XO hamster é um rato? XO homem é um animal? XHá peixes mamíferos? XAs galinhas voam? XA lesma é comestível? XA mosca nada? XO coelho canta? XA bolota é redonda? XO caracol anda? XA galinha tem patas? XO gato fala? XO pardal anda? X

Page 116: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

116 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Os sapos têm sangue frio? XTodos os animais tem um coração? XA coruja é um animal diurno ou nocturno? ALT XO gafanhoto é comestível? XO arroz é uma planta? XO faisão é uma ave comestível? XExistem sardinhas nos rios? XOs ratos são carnívoros? XOs leões comem antílopes? XHá mais elefantes na Índia ou em África? ALT XExistem animais de três patas? XO gato é um mamífero? XÉ verdade que os cães são os melhores amigos dos homens? XO musgo é uma planta? X

SN é SN? 15 6 9Há/Existe SN Adj? 3 0 3SN V? 6 4 2Alternativa 2 0 2SN tem SN? 3 2 1SN V SN? 1 1 0É verdade que ...? 1 0 1

Parciais sobre argumentos 54 13 41

Que ingredientes tem uma omelete? XComo se chama a fêmea da girafa? XQue tipos de couve há? XQuais são os vegetais verdes? XO bife de vaca provem de que animal? XQual o nome da planta de onde deriva a canela? XQual das raças é mais perspicaz? XQuais os animais que têm os membros superiores mais curtos queos inferiores?

X

Quais os tipos de planta que há? XEm que época do ano devem ser plantadas as camélias? XQuais os mamíferos que vivem no mar? XQue tipo de vegetal é a batata? XQue tipo de vegetal é o arroz? XQue tipo de animal é o polvo? XQue tipo de animal é o camarão? XQue tipo de animal é o caracol? XQuais são os animais domésticos? XQuais os animais omnívoros? XDe onde vem a cachupa? XDe que pais vêm a muamba e a mandioca? XEm que pais há mais koalas? XO que comem os pandas gigantes? XDe que maneiras se cozinham as batatas? XQuais os mamíferos que são venenosos? XQual o animal mais venenoso do mundo? XEm que partes do mundo se come cão? XQual a carne mais consumida do mundo? XQual o animal cuja barbatana faz uma bela sopa? X

Page 117: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 117

Qual é o animal que pode viver mais tempo? XQual o animal que vê melhor ao longe? XEm que pais se come tradicionalmente peixe com batatas fritas? XDe que se alimentam as aranhas? XQual o mamífero mais pequeno do mundo? XQuais são os animais que têm barbatanas? XQue tipo de insecto é uma mosca? XQual o animal mais lento do mundo? XO que é que as baleias comem? XPara termos uma alimentação saudável, o que é que devemosincluir nas nossas refeições? X

Que frutas não devem estar numa salada de frutas? XQual o maior animal carnívoro terrestre? XQue tipo de peixe é um bacalhau? XO que come uma anaconda? XQue mamíferos são venenosos? XQue mamíferos vivem na água? XO que come um rinoceronte? XQue mamíferos põem ovos? XQuais os animais que têm tromba? XQual é a ave de rapina mais pesada do mundo? XQue tipo de animal é um gato? XQual é o maior lagarto do mundo? XO que é que os pandas comem? XDe que é composto o chucrute? XDe que é feita a manteiga? XQue comida come uma tartaruga? X

Que ... ? 15 9 6Como... ? 1 0 1Qual/Quais é/são ...? 20 3 17Qual das... ? 1 0 1Em que ... ? 4 0 4De onde ... ? 1 0 1De que ... ? 5 0 5O que ... ? (o que é que...? 3) 6 1 5Outras 1 0 1

Parciais sobre especificadores 14 5 9

Quantas patas tem um pato? XQuantos tipos de laranja existem? XQuantos cães tem uma matilha? XQuantas variedades de pratos de bacalhau existem? XQuantas raças tem o homem? XQuantos tipos de mamíferos há? XQuantos anos, em média, vive um elefante? XQuantos mamíferos marinhos existem? XQuantos tentáculos têm habitualmente os polvos? XQuanto tempo pode uma tartaruga chegar a viver? XQuantas raças de gatos há? XQuantos tipos de feijão existem? XQuantos tipos de aves existem? XUm cavalo vive quanto tempo? X

Page 118: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Liguagem Natural

118 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

Quantos ... há/existem? 7 5 2Quantos X tem Y? 4 0 4Quantos N V N? 2 0 2Outras 1 0 1

Sobre adjuntos causais 3 0 3

Porque é que os caranguejos andam de lado? XComo se reproduzem os macacos? XComo se faz um bacalhau com natas? X

Porque ...? 1 0 1Como ... ? 2 0 2

Que envolvem comparação 1 0 1

O que têm em comum o gato e o cão? X

Ter em comum 1 0 1

Page 119: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 119

ANEXO 4 – EXCERTO DA BASE DE DADOS LEXICAL

/*=================================== nomes que seleccionam complementos ====================================*/

n(tipo,[num:sing,gen:mas,cont:n,abst:s,anim:n,ser_vivo:n,hum:n, scat:[comp:[marc:de]]]) ---> [tipo].

n(tipo,[num:plu,gen:mas,cont:n,abst:s,anim:n,ser_vivo:n,hum:n, scat:[comp:[marc:de]]]) ---> [tipos].

/*===================================== Determinantes universal e existencial ======================================*/

det(o,[tipo_d:univ,num:sing,gen:mas]) ---> [o].det(o,[tipo_d:univ,num:sing,gen:fem]) ---> [a].det(o,[tipo_d:univ,num:plu,gen:mas]) ---> [os].det(o,[tipo_d:univ,num:plu,gen:fem]) ---> [as].det(um,[tipo_d:exist,num:sing,gen:mas]) ---> [um].det(um,[tipo_d:exist,num:sing,gen:fem]) ---> [uma].det(um,[tipo_d:exist,num:plur,gen:mas]) ---> [uns].det(um,[tipo_d:exist,num:plur,gen:fem]) ---> [umas].

/*============ preposições =============*/

p(de,[]) ---> [de].p(com,[]) ---> [com].

/*======================= pronomes interrogativos ========================*/

pi(oque,[num:sing]) ---> ['o que'].pi(qual,[num:sing]) ---> [qual].pi(qual,[num:plu]) ---> [quais].pi(quantos,[num:plu,gen:fem]) ---> [quantas].pi(quantos,[num:plu,gen:mas]) ---> [quantos].

/*=========== conjunções ============*/

conj(e,[conj:f]) ---> [e].conj(e,[conj:nf]) ---> [,].

Page 120: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

120 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

/*======= verbos ========*/

v(ser_v,[num:sing,tipo_v:pred,scat:[comp:p]]) ---> [é].v(ser_v,[num:plu,tipo_v:pred,scat:[comp:p]]) ---> [são].

v(existir,[num:sing,tipo_v:existe]) ---> [existe].v(existir,[num:plu,tipo_v:existe]) ---> [existem].

v(existir,[num:plu,tipo_v:imp,scat:[comp:n]]) ---> [há].

v(ter,[num:sing,scat:[comp:n]]) ---> [tem].v(ter,[num:plu,scat:[comp:n]]) ---> [têm].

v(ladrar,[tempo:inf]) ---> [ladrar].v(ladrar,[num:sing]) ---> [ladra].v(ladrar,[num:plu]) ---> [ladram].

v(piar,[tempo:inf]) ---> [piar].v(piar,[num:sing]) ---> [pia].v(piar,[num:plu]) ---> [piam].

v(preparar_2,[tempo:inf]) ---> [preparar].v(preparar_2,[num:sing,scat:[comp:n]]) ---> [prepara].v(preparar_2,[num:plu,scat:[comp:n]]) ---> [preparam].

/*============================================================ expressões nominais retiradas da WordNet.PT (hierarquizadas) =============================================================*/

n('substância',[num:sing,gen:fem,cont:n,abst:n,anim:n,ser_vivo:n,hum:n ,mass:s]) ---> [substância].

n('substância',[num:plu,gen:fem,cont:n,abst:n,anim:n,ser_vivo:n,hum:n, mass:s]) ---> [substâncias].

n('alimento',[num:sing,gen:mas,cont:n,abst:n,anim:n,ser_vivo:n,hum:n])---> [alimento].

n('alimento',[num:plu,gen:mas,cont:n,abst:n,anim:n,ser_vivo:n,hum:n])---> [alimentos].

n('fruta', [num:sing,gen:fem,cont:s]) ---> [fruta].n('fruta', [num:plu,gen:fem,cont:s]) ---> [frutas].n('lacticínio',[num:sing,gen:mas]) ---> [lacticínio].n('lacticínio',[num:plu,gen:mas]) ---> [lacticínios].n('produto lácteo',[num:sing,gen:mas]) ---> ['produto lácteo'].n('produto lácteo',[num:plu,gen:mas]) ---> ['produtos lácteo'].

n('queijo',[num:sing,cont:s]) ---> [queijo].n('queijo',[num:plu,cont:s]) ---> [queijos].

n('queijo fundido',[num:sing]) ---> [queijo,fundido].n('queijo fundidos',[num:plu]) ---> ['queijos

fundidos'].n('queijo fresco',[num:sing]) ---> ['queijo fresco'].

n('queijo fresco',[num:plu]) ---> ['queijosfrescos'].

n('queijo de ovelha',[num:sing]) ---> ['queijo deovelha'].

n('queijo de ovelha',[num:plu]) ---> ['queijos de ovelha'].

Page 121: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 121

n(’animal’,[num:sing,cont:s]) ---> [animal].n(’animal’,[num:plu,cont:s]) ---> [animais].

n('carnívoro',[num:sing]) ---> [carnívoro].n('carnívoro',[num:plu]) ---> [carnívoros].

n('canídeo',[num:sing]) ---> [canídeo].n('canídeo',[num:plu]) ---> [canídeos].

n('cão',[num:sing]) ---> [cão].n('cão',[num:plu]) ---> [cães].

n('pastor-alemão',[num:sing]) --->[pastor-alemão].

n('pastor-alemão',[num:plu]) --->[pastores-alemães].

n('São Bernardo',[num:sing]) ---> ['sãobernardo'].

n('São Bernardo',[num:plu]) ---> ['são bernardos'].

n('caniche',[num:sing]) ---> [caniche].n('caniche',[num:plu]) ---> [caniches].n('Serra da Estrela',[num:sing]) --->

['serra da estrela'].n('Serra da Estrela',[num:plu]) --->

['serras da estrela'].

n('vegetal',[num:sing,gen:mas]) ---> [vegetal].n('vegetal',[num:plu,gen:mas]) ---> [vegetais].

n('alface',[num:sing,gen:fem]) ---> [alface].n('alface',[num:plu,gen:fem]) ---> [alfaces].n('aipo',[num:sing]) ---> [aipo].n('aipo',[num:plu]) ---> [aipos].n('beldroega',[num:sing,gen:fem]) ---> [beldroega].n('beldroega',[num:plu,gen:fem]) ---> [beldroegas].n('couve',[num:sing,gen:fem,cont:s]) ---> [couve].n('couve',[num:plu,gen:fem,cont:s]) ---> [couves].

n('brócolos',[num:plu,gen:mas]) --->[brócolos].

n('brocos',[num:plu,gen:mas]) ---> [brócos].n('couve-nabiça',[num:sing,gen:fem]) --->

['couve-nabiça'].n('couve-nabiça',[num:plu,gen:fem]) --->

['couves-nabiças'].n('couve-nabo',[num:sing,gen:fem]) --->

['couve-nabo'].n('couve-nabo',[num:plu,gen:fem]) --->

['couves-nabos'].n('colza',[num:sing,gen:fem]) ---> [colza].n('colza',[num:plu,gen:fem]) ---> [colza].n('couve-flor',[num:sing,gen:fem]) --->

['couve-flor'].n('couve-flor',[num:plu,gen:fem]) --->

['couves-flores'].n('couve-galega',[num:sing,gen:fem]) --->

['couve-galega'].n('couve-galega',[num:plu,gen:fem]) --->

['couves-galegas'].n('galega',[num:sing,gen:fem]) ---> [galega].n('galega',[num:plu,gen:fem]) ---> [galegas].n('couve chinesa',[num:sing,gen:fem]) --->

['couve chinesa'].

Page 122: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

122 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

n(’couve chinesa’,[num:plu,gen:fem]) --->[’couves chinesas’].

n(’couve de bruxelas’,[num:sing,gen:fem]) --->[’couve de bruxelas’].

n(’couve de bruxelas’,[num:plu,gen:fem]) --->[’couves de bruxelas’].

n(’repolho’,[num:sing,gen:mas]) ---> [repolho].n(’repolho’,[num:plu,gen:mas]) ---> [repolhos].

n(’couve roxa’,[num:sing,gen:fem]) --->[’couve roxa’].

n(’couve roxa’,[num:plu,gen:fem]) --->[’couves roxas’].

n(’couve-lombarda’,[num:sing,gen:fem])--->[’couve-lombarda’].

n(’couve-lombarda’,[num:plu,gen:fem]) ---> [’couves-lombardas’].

n('sabóia',[num:sing,gen:fem]) --->[sabóia].

n('sabóia',[num:plu,gen:fem]) --->[sabóias].

n('couve branca',[num:sing,gen:fem]) --->['couve branca'].

n('couve branca',[num:plu,gen:fem]) --->['couves brancas'].

n('doce',[num:sing,gen:mas,cont:s]) ---> [doce].n('doce',[num:plu,gen:mas,cont:s]) ---> [doces].

n('bolo',[num:sing]) ---> [bolo].n('bolo',[num:plu]) ---> [bolos].

n('bolo-rei',[num:sing]) ---> ['bolo-rei'].n('bolo-rei',[num:plu]) ---> ['bolos-reis'].n('bolo inglês',[num:sing]) ---> ['bolo inglês'].n('bolo inglês',[num:plu]) ---> ['bolos ingleses'].n('bolo-marmore',[num:sing]) ---> ['bolo-mármore'].n('bolo-mármore',[num:plu]) ---> ['bolos-mármore'].n('bolo seco',[num:sing]) ---> ['bolo seco'].n('bolo seco',[num:plu]) ---> ['bolos secos'].

n('biscoito',[num:sing]) ---> [biscoito].n('biscoito',[num:plu]) ---> [biscoitos]. n('língua-de-gato',[num:sing,gen:fem]) --->

['língua-de-gato']. n('língua-de-gato',[num:plu,gen:fem]) --->

['línguas-de-gato'].

Page 123: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 123

ANEXO 5 – MECANISMO DE HERANÇA DE TRAÇOS

/* ========================================================== heranca_de_tracos(+Nome,+LtracosEspecíficos,-LTracos)

Devolve, em Ltracos, os traços completos (herdados) do nome Nome (um conceito pode ter várias listas atributos se tiver várias cadeias de hiperónimos) ============================================================*/

heranca_de_tracos(Nome,Ltracos,Lista1):-findall(TracosHyper,tracos(Nome,Ltracos,TracosHyper,_),Lista),junta_lista(Lista,Lista1).

/* ================================================================ tracos(+Nome,+LtracosEspecíficos,-LtracosTotal,-Lhiperónimos)

Devolve uma lista com os traços completos de um dado conceito (LtracosTotal) e uma lista de todos os hiperónimos desse conceito =================================================================*/

tracos(Nome,Ltracos1,Ltracos,[Hyper|Hs]):-has_hyperonym(Nome,Hyper),(n(Hyper,LtHyper)---> [_]),!,herda(LtHyper,Ltracos1,Ltracos2),tracos(Hyper,Ltracos2,Ltracos,Hs).

tracos(Var,Ltracos1,Ltracos,[Hyper|Hs]):-variant(Nome,Var),(n(_,LtVar)--->[Nome]),has_hyperonym(Nome,Hyper),herda(LtVar,Ltracos1,Ltracos2),tracos(Hyper,Ltracos2,Ltracos,Hs).

tracos(Nome,LtNome,LtNome,[]):-\+ has_hyperonym(Nome,_),\+ variant(_,Nome).

/* =========================================== herda(+Lista1,+Lista2,-ListaR)

Insere na Lista2 os elementos da Lista1 que não contém. Resulta na ListaR. ===========================================*/

herda([],L,L).

herda([X:Y],[],[X:Y]).

Page 124: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

124 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

herda([X:Y|Rest],Rest2,Result):-\+ member(X:_,Rest2) ->insere_lista(X:Y,Rest2,Nova),herda(Rest,Nova,Result);herda(Rest,Rest2,Result).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% PREDICADOS AUXILIARES %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

/* ===================================== insere_lista(+Traço,+ListaTraços,-LtraçosResultado

insere um traço à cabeça de uma lista =======================================*/

insere_lista(X,[],[X]).

insere_lista(X,[X|R],[X|R]).

insere_lista(X,[Y|R],[X,Y|R]).

/* ========================================================== extrai(+ListaTraços,+Atributo,+Valor)

verifica se um dado atributo valor está presente numa lista ============================================================*/

extrai([],_,_):- fail.

extrai([Atr:Val|_],Atr,Val):- true.

extrai([_:_|L],Atr1,Val1):- extrai(L,Atr1,Val1).

/* =========================================================== junta_lista(+ListaListasAtributos, -ListaAtributos)

junta todas as listas de uma lista de lista se não tiverem inconsistências relativamente aos seus elementos (traços) =============================================================*/

junta_lista([X],X):-!.

junta_lista([X,Y|L],L3):-unifica(X,Y,L2),junta_lista([L2|L],L3).

Page 125: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 125

ANEXO 6 – IMPLEMENTAÇÃO DA GRAMÁTICA

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% META-ENTRADAS LEXICAIS %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%_____________________________________________________________________%% Meta Entrada Lexical para preposições%_____________________________________________________________________

elex(p,[],[spr : [], comp: [r(n,_,[],[spr:[]|_],_)], gap : []],X^Y^P) ==> p(Palavra,[]) ^[P =..[Palavra,X,Y]].

%_____________________________________________________________________%% Meta Entrada Lexical para marcadores%_____________________________________________________________________

elex(marc,[],[spr : [], comp: [], gap : []],_) ==> marc(_,_) ^[].

%_____________________________________________________________________%%Meta Entrada Lexical das conjunções%_____________________________________________________________________

elex(conj,Ltracos,[spr : [], comp: [], gap : []],_) ==> conj(_,Ltracos) ^[].

%_____________________________________________________________________%%Meta Entrada Lexical para a negação%_____________________________________________________________________

elex(neg,[],[spr : [], comp: [], gap : []],X^P) ==> neg(_,_) ^[P =..[~,X]].

Page 126: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

126 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

%_____________________________________________________________________%% Meta Entrada Lexical para determinantes indefinidos%_____________________________________________________________________

elex(det,Ltracos,[spr : [], comp: [], gap : []],

(X^P)^(X^Q)^d(Palavra,Num,X,P & Q)) ==> det(Palavra,Ltracos)

^[retira_elemento(Ltracos,tipo_d:exist,_), extrai(Ltracos,num,Num)].

%_____________________________________________________________________%% Meta Entrada Lexical para determinantes universais%_____________________________________________________________________

elex(det,Ltracos,[spr : [], comp: [],

gap : []],(X^Res)^(X^Amb)^d(Palavra,Num,X,Res>Amb)) ==>

det(Palavra,Ltracos) ^[extrai(Ltracos,tipo_d,univ),

extrai(Ltracos,num,Num)].

%_____________________________________________________________________%% Meta Entrada Lexical para pronomes interrogativos%_____________________________________________________________________

elex(n,Ltracos,[spr : [], comp: [], gap : []],(X^Q)^(P *> Q)) ==> pi(Palavra,Ltracos) ^[P =..[Palavra,X]].

%_____________________________________________________________________%% Meta Entrada Lexical para pronomes interrogativos que podem ocorrer% como especificadores%_____________________________________________________________________

elex(det,Ltracos,[spr : [], comp: [], gap : []],(X^Q)^(X^W)^(P *> (Q & W)) ) ==>

pi(Palavra,Ltracos) ^[(extrai(Ltracos,quant,s)), P=..[Palavra,X]].

Page 127: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 127

%_____________________________________________________________________%% Meta Entrada Lexical para o pronome relativo%_____________________________________________________________________

elex(pr,[],[spr : [], comp: [], gap : []],_) ==> pr(_,[])^[].

%_____________________________________________________________________%% Meta Entrada Lexical para expressões nominais que seleccionam% especificador e complemento%_____________________________________________________________________

elex(n,[nom:comp|Ltracos], [spr : [r(det,_,[],[spr:[]|_],_)],

comp:[r(n,[marcado:s|_],[],[spr:[],comp:[],gap:[]],_)], gap : []], Y^X^P) ==> n(Palavra, Ltracos) ^[retira_elemento(Ltracos,scat:[comp:[marc:_]],_), P=..[Palavra,Y,X]].

%_____________________________________________________________________%% Meta Entrada Lexical para expressões nominais com complemento e sem% especificador%____________________________________________________________________

elex(n,[nom:comp|Ltracos], [spr : [],

comp: [r(n,[marcado:s|_],[],[spr:[]|_],_)], gap : []],(X^Q)^Y^(d(exi,Num,X,P & Q))) ==>

n(Palavra, Ltracos) ^[retira_elemento(Ltracos,scat:[comp:[marc:_]],_), extrai(Ltracos,num,Num), P =..[Palavra,X,Y]].

%_____________________________________________________________________%%Meta Entrada Lexical para nomes sem complementos%_____________________________________________________________________

elex(n,Ltracos1,[spr : [r(det,_,[],[spr:[]|_],_)], comp: [], gap : []], X^P) ==> n(Palavra,Ltracos)

^[heranca_de_tracos(Palavra,Ltracos,Ltracos1), \+(extrai(Ltracos,scat,[comp:[_]])),

(extrai(Ltracos1,mass,s), extrai(Ltracos1,cont,s));

(\+(extrai(Ltracos1,mass,s))), P =..[Palavra,X]].

Page 128: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

128 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

%_____________________________________________________________________%% Meta Entrada Lexical para nomes sem complementos e sem especificador%_____________________________________________________________________

elex(n,Ltracos1,[spr : [], comp: [], gap : []],(X^W)^(d(exi,Num,X,P & W))) ==>

n(Palavra, Ltracos) [extrai(Ltracos,num,Num), \+(extrai(Ltracos,scat,[comp:_])), heranca_de_tracos(Palavra,Ltracos,Ltracos1), P =..[Palavra,X]].

%_____________________________________________________________________%% Meta Entrada Lexical para nomes que representam conceitos da% WordNet.PT%_____________________________________________________________________

elex(n,[num:sing],[spr : [], comp: [], gap : []],(X^Q)^d(exi,sing,X,P & W)) ==>

r(ListaASCII) ^[name(Palavra2,ListaASCII), (n(Palavra1,_) ---> [Palavra2];

v(Palavra1,[tempo:inf]) ---> [Palavra2]), P =..[Palavra1,X]].

%_____________________________________________________________________%% Meta Entrada Lexical para o verbo "ser" predicativo%_____________________________________________________________________

elex(v,Ltracos,[spr : [r(n,_,[],[spr:[]|_],_)], comp: [r(C,_,[],_,_)], gap : []], X^X) ==> v(ser_v,Ltracos)

^[ extrai(Ltracos,tipo_v,pred), extrai(Ltracos,scat,[comp:C])].

%_____________________________________________________________________%%Meta Entrada Lexical para verbos intransitivos%_____________________________________________________________________

elex(v,Ltracos,[spr : [r(n,_,[],[spr:[]|_],_)], comp: [], gap : []], Y^P) ==> v(Palavra, Ltracos) ^[\+ retira_elemento(Ltracos,scat:_,_), P =..[Palavra,Y]].

Page 129: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 129

%_____________________________________________________________________%% Meta Entrada Lexical para verbos com um argumento interno%_____________________________________________________________________

elex(v,Ltracos1,[spr : [r(n,_,[],[spr:[]|_],_)], comp: [r(C1,_,[],[spr:[],comp:[],_],_)], gap : []],X^Y^P) ==> v(Palavra, Ltracos) ^[\+(extrai(Ltracos,tipo_v,pred)), \+(extrai(Ltracos,tipo_v,imp)), retira_elemento(Ltracos,scat:[comp:C1],Ltracos1), P =.. [Palavra,X,Y]].

%_____________________________________________________________________%% Meta Entrada Lexical para verbos impessoais (há)%_____________________________________________________________________

elex(v,Ltracos,[spr : [], comp: [r(C,_,[],[spr:[],comp:[],_],_)], gap : []],Y^P) ==> v(Palavra, Ltracos)

^[extrai(Ltracos,tipo_v,imp), extrai(Ltracos,scat,[comp:C]), P =.. [Palavra,Y]].

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% REGRAS LEXICAIS %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%_____________________________________________________________________%% Regra Lexical para o tratamento do gap de complemento% (relativas de complemento)%_____________________________________________________________________

elex(v,Ltracos1,[spr : SPR, comp: [], gap : [r(_,_,[],_,Y)]],X^P) ==>

elex(v,Ltracos1,[spr : SPR, comp: [r(_,_,[],_,Y)], gap : []],X^Y^P).

Page 130: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

130 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

%_____________________________________________________________________%% Regra Lexical para o tratamento de verbos impessoais com sujeito% nulo%_____________________________________________________________________

elex(v,Ltracos1,[spr : [], comp: [], gap : [r(n,_,[],[spr:[],comp:[],gap:[]],_)]],Sem) ==>

elex(v,Ltracos1,[ spr : [], comp: [r(n,_,[],_,_)], gap : []],Sem).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% REGRAS SINTAGMÁTICAS %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% ____________________________________________________________________%% Regra sintagmática 1%% Promove X0 para X'% ____________________________________________________________________

r(N,T,[],[spr : SPR, comp: [], gap : Gap],Sem) => [elex(N,T,[spr : SPR, comp: [], gap : Gap],Sem)].

%_____________________________________________________________________%% Regra sintagmática 2%% Orações relativas restrictivas%_____________________________________________________________________

r(vr,T,[compoe_sem(SPR,GAP,T1,SEM,SEMCOMP,T)], [spr : [], comp: [], gap : []], SEMCOMP) => [ r(pr,_,[],_,_), r(v,T1,[],[spr : SPR, comp: [], gap : GAP], SEM)].

Page 131: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 131

% ____________________________________________________________________%% Regra sintagmática 3%% Adjunção de um modificador (SP/VR) a um N’ e um quantificador% a um N’’% ____________________________________________________________________

r(n,T1,[adjunto(C1,C), trata_spr(SPR,Sem,T1,T,Sem1,Sem2)], [spr:SPR, comp:[], gap:[]], Sem2) =>

[ r(C1,T1,[],[spr:SPR, comp:[], gap:[]],Sem1),

r(C,T,[],[spr:[],comp:[],gap:[]],Sem)].

% ___________________________________________________________________%% Regra sintagmática 4%% Adjunção com negação a SV% ___________________________________________________________________

r(v,T1,[],[ spr:[SPR],comp:[],gap:GAP], X^Sem1) =>

[ elex(neg,_,_,Sem^Sem1), r(v,T1,[],[spr:[SPR],

comp:[],gap:GAP],X^Sem)].

% ___________________________________________________________________%% Regra sintagmática 5%% SNs marcados% ___________________________________________________________________

r(n,[marcado:s|T1],[\+(extrai(T1,marcado,s)), verifica_relacional(Sem,T1,Sem1)],

[spr:[], comp:[], gap:[]], Sem1) =>

[r(marc,_,[],[spr:[], comp:[], gap:[]],_),

r(n,T1,[],[spr:[], comp:[],

gap:[]],Sem)].

Page 132: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

132 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

%_____________________________________________________________________%% Regra sintagmática 6%% Coordenações%_____________________________________________________________________

r(V,Ltracos5,[\+(extrai(Ltracos,coord,_)), testa_conjuncao(C, Ltracos2, Ltracos3), coordena(V,Sem1,Sem3,Ltracos3,Ltracos4,Sem4),

insere_cabeca(Ltracos4,marcado:s,Ltracos5), verifica_sv(V,Ltracos,Ltracos2)],

[spr : SPR, comp: [], gap : Gap], Sem4) =>

[ r(V,Ltracos,[],[spr: SPR, comp:[], gap: Gap],Sem1), r(conj,[conj:C],[],[spr : [],

comp: [], gap : []],_),

r(V,Ltracos2,[],[spr: SPR, comp:[], gap: Gap],Sem3)].

% ___________________________________________________________________%% Regra sintagmática 7%% Especificador - núcleo% ___________________________________________________________________

r(N,Ltracos3,[sem_spr(N,Ltracos,T1,Y^Sem,Sem1,Ltracos3,Sem2)], [spr:[], comp:[], gap:GAP], Sem2) =>

[ r(C,Ltracos,[],SCAT,Sem1), r(N,T1,[],[spr:[r(C,Ltracos,[],SCAT,Sem1)], comp:[], gap:GAP],Y^Sem)].

Page 133: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 133

% __________________________________________________________________%% Regra sintagmática 8%% Verbo existir com inversão de sujeito% ___________________________________________________________________

r(v,Ltracos1,[extrai(T1,tipo_v,existe), unifica(T1,Ltracos,Ltracos1),subs(Sem1,Sem2,Sem3)],

[spr:[], comp:[], gap:[]], Sem3) =>

[r(v,T1,[],[spr:[r(n,Ltracos,[],[spr:[], comp:[], gap:[]],Sem1)],

comp:[], gap:[]],Sem2), r(n,Ltracos,[],[ spr:[],

comp:[],gap:[]],Sem1)].

% ___________________________________________________________________%% Regra sintagmática 9%% Gap à direita de um núcleo verbal% ___________________________________________________________________

r(v,Ltracos,[subs(Sem1,Sem2,Sem3)], [spr :[], comp:[], gap :[]], Sem3) =>

[ r(C,Ltracos,[],SCAT,Sem1), r(v,_,[],[spr :[], comp:[], gap:[r(C,Ltracos,[],SCAT,_)]],Sem2)].

%________________________________________________________________%% Regra sintagmática 10% Predicados com um complemento in situ%________________________________________________________________

r(N,T1,[faz_sem(Sem2,Sem1,T1,Sem3), verifica_comp(N,T1,L)],[spr : SPR,

comp: [], gap : Gap], Sem3) =>

[elex(N,T1,[spr : SPR, comp:[r(C2,L,[],SCAT2,Sem2)], gap : Gap],Sem1),

r(C2,L,[],SCAT2,Sem2)].

Page 134: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

134 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% PARSER TABULAR ASCENDENTE %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

:-dynamic edge/4.

parse(R,Expr1):- retractall(edge(_,_,_,_)), subst_contrac(Expr1,Expr2), testa_qual(Expr2,Expr), statistics(runtime,_), start_chart(1,Vn,Expr), statistics(runtime,[_,T]), Time is T / 1000, write('Tempo de análise: '),write(Time), write(' segundos.'),nl, retractall(edge(_,_,_,[_|_])), edge(1,Vn, R ,[]).

start_chart(V0,Vn,[Word|Words]):- V1 is V0 + 1, foreach( (lexema(Word,Category)), add_edge(V0,V1,Category,[])), start_chart(V1,Vn,Words).

foreach(X,Y):- call(X), do(Y), fail.

foreach(_,_):- true.

do(Y):- Y, !.

add_edge(V0,V1,Category,Categories):- edge(V0,V1,Category,Categories),!.

add_edge(V1,V2,Category0,[]):- obj_atrasados(Category0,Category1), asserta(edge(V1,V2,Category1,[])), foreach( Category2 => [Category1|Categories], add_edge(V1,V1,Category2,[Category1|Categories])), foreach(edge(V0,V1,Category2,[Category1|Categories]), (add_edge(V0,V2,Category2,Categories))).

add_edge(V0,V1,Category1,[Category2|Categories]):- asserta(edge(V0,V1,Category1,[Category2|Categories])), foreach(edge(V1,V2,Category1,[]), add_edge(V0,V2,Category1,Categories)).

Page 135: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 135

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% PREDICADOS AUXILIARES %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%--------------------------------------------------------------------%% %% Parser %%--------------------------------------------------------------------%

/* ================================================================== testa_qual(+LPalavrasintoduzidas,-LPalavrasaAnalisar)

Predicado que trata a elisão do verbo “ser” em interrogatives pronominais com “qual”

====================================================================*/

testa_qual([Word,Word1|L],[Word,é,Word1|L]):-Word = qual,\+(Word1 = é).

testa_qual([Word,Word1|L],[Word,são,Word1|L]):-Word = quais,\+(Word1 = são).

testa_qual(L,L).

/* ==================================================================

lexema(+Palavra, -Meta-entradaLexical)

Predicado que aplica as meta entradas lexicais e as regras lexicais aos lexemas presentes na interrogativa

===================================================================*/

lexema(Word,elex(C,Ltracos,S,Sem)):-(EL ---> [Word]),

(elex(C,Ltracos,S,Sem) ==> EL^Prolog), executa(Prolog).

lexema(Word,elex(C,Ltracos1,S1,Sem1)):-(EL ---> [Word]),

(elex(C,Ltracos,S,Sem) ==> EL^Prolog), executa(Prolog), (elex(C,Ltracos1,S1,Sem1) ==> elex(C,Ltracos,S,Sem)).

Page 136: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

136 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

%--------------------------------------------------------------------%% %% Semântica %%--------------------------------------------------------------------%

/* ==================================================================

compoe_sem(+ListaSPR,+ListaGap,+LtracosInicial,+RepSemInicial,-RepSemFinal,-LtracosFinal)

Predicado que faz a semântica das relativas com gap de complemento ou de sujeito

===================================================================*/

compoe_sem([],[r(n,_,_,_,X)],T,X^S,X^S,[]):-(extrai(T,tipo_v,existir); extrai(T,tipo_v,imp)),!.

compoe_sem([],[r(_,_,_,_,X)],_,S,X^S,[]).

compoe_sem([r(_,_,_,_,X)],[],T,X^S,X^S,T).

/* =================================================================== trata_spr(+ListaSPR,+RepSem1,+Ltracos1,+Ltracos2,+RepSem2,

-RepSemFinal)

Predicado que que faz a semântica das adjunções de modificadores a N’ e de quantificadores a N’’ ===================================================================*/

trata_spr([],X^Sem,T1,T,(X^Y)^d(exi,N,X,P & Q), (X^Y)^d(exi,N,X,(P & Sem & Q))):-

unifica(T1,T,_).

trata_spr([],Formula,T1,T,(X^Res)^(X^Amb)^d(todo,N1,X,Res>Amb),Sem2):-unifica(T1,T,_),abs_l(Formula,d(o,N,M,R > A)& Det1,L),trata_quant(Det1,(X^Res)^(X^Amb)^d(todo,N1,X,Res>Amb),Detfinal),abs_l(Sem2,d(todo,N,M,R > A)&Detfinal,L).

trata_spr([],(X^Amb)^d(o,_,X,Res>Amb),T1,T, (X^Res)^(X^Amb)^d(todo,N1,X,Res > Amb) ,

(X^Amb)^d(todo,N1,X,Res > Amb)):-unifica(T1,T,_).

trata_spr([_],X^Sem,T1,T,X^Sem1,X^(Sem1 & Sem)):-unifica(T1,T,_)

Page 137: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 137

/* ================================================================== trata_quant(+RepSem,+RepSemQuantificador,-NovaRepSEm)

Predicado que distribui o quantificador “todo” por toda a estrutura Quantificada (escopo do quantificador “todo”)

====================================================================*/

trata_quant(d(exi,N,M,R & A)&Det1,(X^Res)^(X^Amb)^d(Z,_,_,Res > Amb),d(Z,N,M,R > A)&Detfinal):-

trata_quant(Det1,(X^Res)^(X^Amb)^d(Z,_,_,Res > Amb),Detfinal).

trata_quant(d(exi,N,M,R & A),(X^Res)^(X^Amb)^d(Z,_,_,Res > Amb), d(Z,N,M,R > A)).

/*=================================================================== sem_spr(+CatNúcleo,+LtracosEspecificador,LtracosNúcleo,+RepSEmNúcleo,

+RepSemEspecificador,-LtracosFinal,-RepSemFinal)

Predicado que compõe a semântica do núcleo com a do seu especificador

===================================================================*/

sem_spr(v,Ltracos,T1,Y^Sem,Sem1,Ltracos3,Sem2):- unifica(T1,Ltracos,Ltracos3), subs(Sem1,Y^Sem,Sem2).

sem_spr(_,Ltracos,T1,Sem,Sem^Sem1,Ltracos3,Sem1):-unifica(T1,Ltracos,Ltracos3).

/*============================================================== verifica_relacional(+RepSem1,Ltracos1,-RepSemFinal)

Predicado que permite a semântica de hipónimo do hipónimo e excluí a de hipónimo do gato===============================================================*/

verifica_relacional((X^Y)^d(exi,N,X,S&Z),T,(X^Y)^d(exi,N,X,S&Z)):-\+extrai(T,nom,comp).

verifica_relacional(Sem,T,Sem):-extrai(T,nom,comp).

Page 138: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

138 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

/*=============================================================== faz_sem(+RepSem1,+RepSem2,+Ltraços2,-RepSemFinal)

Predicado que faz a semântica do nucleo mais complemento. O primeiro caso serve para tratar o verbo "haver" que não tem sujeito (impessoal) O segundo caso serve para todos os outros verbos

===============================================================*/

faz_sem(Sem2,Sem1,T1,Sem3) :- extrai(T1,tipo_v,imp), subs(Sem2,Sem1,Sem3).

faz_sem(Sem2,X^Sem1,_,X^Sem3) :-subs(Sem2,Sem1,Sem3).

/* ================================================================ verifica_comp(+cat,+Ltracos,+Ltracos2)

Predicado que verifica se um verbo selecciona nomes que seleccionam complementos

==================================================================*/

verifica_comp(v,L1,L2):-member(tipo_v:igual,L1),!,

member(nom:comp,L2).

verifica_comp(v,L1,L2):-\+(member(tipo_v:igual,L1)),!,

\+(member(nom:comp,L2)).

verifica_comp(_,_,_).

/* =============================================================== coordena(+Cat,+RepSem1,+RepSem2,+Ltraços1,+Ltracos2,-RepSEm)

trata a coordenação de sns ou de svs. Distribui o quantificador quantos por todos os SNs coordendados

===============================================================*/

coordena(n,X^Sem1,Y^Sem2,Ltracos,[num:plu|Ltracos2],Sem3):-abs_l(Sem2,Sem4,A),abs_l(Sem1,Sem5,_),

verifica_det(Sem5,Sem4,Sem6),retira_elemento(Ltracos,num:_,Ltracos2),

(A==[] -> coord_sn(X^Sem1,Y^Sem6,Sem3);parte_lista(A,C),coord_sn(X^Sem1,Y^C^Sem6,Sem3)).

coordena(C,Sem1,Sem2,Ltracos,Ltracos,Sem3):-\+C==n,coord_sx(Sem1,Sem2,Sem3).

Page 139: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 139

/*================================================================== verifica_det(+RepSemsemVariáveisAbstraídas1,

+RepSemsemVariáveisAbstraídas2, -RepSemsemVariáveisAbstraídasFinal)

Predicado que distribui a a quantificação do determinante quantos sobre todas as estruturas quantificadas (coordenações)

===================================================================*/

verifica_det(quantos(_)*>_,d(exi,_,X,A&D),quantos(X)*>A&D).

verifica_det(A,Sem1&Sem3,Sem2&Sem4):-verifica_det(A,Sem1,Sem2),verifica_det(A,Sem3,Sem4).

verifica_det(_,d(A,B,C,D),d(A,B,C,D)).

verifica_det(_,quantos(A)*>B,quantos(A)*>B).

/* ================================================================== insere_cabeca(+Listatracos,+Traço,-Listacomtracoàcabeça)

Predicado que insere um determinando traço, presente na lista, na cabeça da lista. Se esse traço não estiver presente devolve a própria lista

===================================================================*/

insere_cabeca(L,E,[E|L2]):-retira_elemento(L,E,L2),!.

insere_cabeca(L,_,L).

/* ================================================================== verifica_sv(+Categoria,+Listatraços,+Listatraços2)

Predicado que verifica se duas listas de traços de constituintesverbais contêm o mesmo valor para o atributo número.

===================================================================*/

verifica_sv(v,Ltracos,Ltracos2):-extrai(Ltracos,num,N),extrai(Ltracos2,num,N).

verifica_sv(C,_,_):- C\==v.

Page 140: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

140 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

/*=================================================================== testa_conjuncao(+TipoConj,+ListaTracos,-ListaTracos)

Predicado que verifica o tipo de coordenação: se o segundo sn é simples e a conjunção for um e; e se o sn for composto e a conjunção uma vírgula

====================================================================*/

testa_conjuncao(f,Ltracos,[coord:s|Ltracos]):-\+(extrai(Ltracos,conj,_)).

testa_conjuncao(nf,Ltracos,[coord:s|Ltracos]):-extrai(Ltracos,coord,s).

/* =============================================================== coord_sn(+RepSem1,+RepSem2,-RepSemFinal)

Predicado que devolve a representação semântica de SNs coordenado

==================================================================*/

coord_sn(A^SN1,SN2,A^Fr) :-abs_l(SN2,SN2s,L),aplica(L,(SN1 & SN2s), Fr).

/* =================================================================== abs_l(+RepSem,-RepSemsemVariáveisAbstraídas,

-ListaVariáveisAbstraídas)

Predicado que, dada uma Fórmula com abstracções, devolve essa Fórmula sem abstracções e uma Lista com todas as abstracções da Fórmula inicial

====================================================================*/

abs_l(A^F,Fr,[A|R]):-abs_l(F,Fr,R),!.

abs_l(F,F,[]).

/*=================================================================== aplica(+ListaVariaveisAbstraidas,+RepSemsemVariaveisAbstraídas, -RepSemcomVariaveisAbstraídas)

Predicado que, dada uma Lista de abstracções e uma Fórmula, devolve a aplicação das abstracções de LA em F

====================================================================*/

aplica([A|L],F,A^Fr) :-aplica(L,F,Fr).

aplica([A],F,A^F).

Page 141: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 141

/*============================================================= coord_sx(+RepSem1,+RepSem2,-RepSEmFinal)

Predicado que faz a construção da representação semântica da coordenação de sintagmas não nominais

==============================================================*/coord_sx(SV1a,SV2a,F):-

retira_abs(SV1a,A,SV1), retira_abs(SV2a,A,SV2),

c(A,SV1,SV2,F).

/*=================================================================== retira_abs(+RepSem,-VariavelmaisExternaAbstraida,

-RepSemsemVariavelmaisExternaAbstraida)

Predicado que dada uma representação semântica, devolve a sua variável mais externa abstraída e a restante representação semântica

===================================================================*/

retira_abs(A^F,A,F).

/*========================================================== c(+Variavel,+RepSemSX1,+RepSemSX2,-RepSemSXFinal)

Predicado que aplica a mesma variável a duas representações semânticas de SXs. (coordenação de SXs)

===========================================================*/

c(A,SX1,SX2,A^(SX1 & SX2)).

/*=================================================================== subs(+RepSem1,+RepSem1,-RepSemFinal)

Predicado que, dadas duas representações semânticas, devolve uma representação semântica resultado da substituição das suas variáveis abstraidas ===================================================================*/

subs(X^F,X,F):- var(X).

subs((X^A)^F,V^SV,R) :-substitute(X,V,SV,A),!,subs(F,V^SV,R).

subs(F,_^_,F).

Page 142: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

142 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

/*============================================================== substitute(+Termo,+Variavel,+RepSem,-RepSemFinal)

Predicado que dado um termo, uma variável e uma representação semântica substitui todas as ocorrências da Variavel pelo Termo

===============================================================*/

substitute(Term,Var,Exp,Result):-Exp==Var, !,Result=Term.

substitute(_Term,_Var,Exp,Result):-\+ compound(Exp), !,Result=Exp.

substitute(Term,Var,Formula,Result):-compose(Formula,Functor,[Exp,F]),memberList(Functor,[todos,o,um,algum,exi]), !,(Exp==Var, !,Result=Formula;substitute(Term,Var,F,R),compose(Result,Functor,[Exp,R])).

substitute(Term,Var,Formula,Result):-compose(Formula,Functor,ArgList),substituteList(Term,Var,ArgList,ResultList),compose(Result,Functor,ResultList).

substituteList(_Term,_Var,[],[]).

substituteList(Term,Var,[Exp|Others],[Result|ResultOthers]):-substitute(Term,Var,Exp,Result),substituteList(Term,Var,Others,ResultOthers).

/* ============================================================== memberList(+Elemento,+Lista)

Predicado que verifica se um dado elemento pertence a uma lista

================================================================*/

memberList(X,[X|_]).

memberList(X,[_|Tail]):- memberList(X,Tail).

Page 143: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 143

/*================================================================= compose(+Predicado,-Simbolo,-ListadeArgumentos)

Predicado que, dado um predicado devolve o seu símbolo e uma lista com os seus argumentos

===================================================================*/

compose(Term,Symbol,ArgList):- Term =.. [Symbol|ArgList].

/*=================================================================== adjunto(+cat,+cat2)

Predicado que indica quais as categorias que podem estar em adjunção

====================================================================*/

adjunto(n,p).adjunto(n,vr).adjunto(det,n).

Page 144: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional
Page 145: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 145

ANEXO 7 – EXEMPLOS DO PROCESSAMENTO SINTÁCTICO E

SEMÂNTICO DE INTERROGATIVAS

• Os gatos são mamíferos?

SV (F)

“ os gatos são mamíferos”

d(o, plu, A, gato(A)&d(exi, plu, B, mamífero(B)&ser(A, B)))

SN SV

“ os gatos” “ são mamíferos”

(A^C)^d(o, plu, A, gato(A)&C) D^d(exi, plu, B, mamífero(B)&ser(D, B))

D N’

N

“ gatos”

E^gato(E)

“ os”

(A^F)^(A^C)^d(o, plu, A, F&C)

V’ SN

V N’

“ são”

H^D^são(H,D) N

(B^G)^d(exi, plu, B, mamífero(B)&G)

1 2

2

1

Page 146: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

146 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

• Quantos animais miam e andam?

SV (F)

“ quantos animais miam?”

quantos(A)*>animal(A)& (miar(A)&andar(A))

SN SV

“ quantos animais” “ miam e andam”

(A^X)^(quantos(A)*>animal(A)&X) Z^(miar(Z)&andar(Z))

D N’

N

“ animais”

A^animal(A)

“ quantos”

(A^Y)^ (A^X)^ (quantos(A)*>Y&X)

V’ V’

V Conj V

“ miam” e “ andam”

B^miar(B) C^andar(C)

1

1

2

2

Page 147: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 147

• Quais são os hipónimos de “felino” que não rugem?

SV (F)

“ quais são os hipónimos de “felino” que não rugem?”

qual(A)*>d(o,plu,B,d(exi,sing,C,felino(C)&hipónimo(B,C))&

~(rugir(B))>igual(A,B))

SN SV

“ quais ” “ são os hipónios de “felino que não rugem”

(A^X)^ (qual(A)*>X) E^d(o,plu,B,d(exi,sing,C,felino(C)&

hipónimo(B,C))&~(rugir(B))>igual(E, B))

V N’

N

“ os hipónimos de “felino” que não rugem”

(B^Y)^d(o,plu,B,d(exi,sing,C,felino(C)&

“ são” hipónimo(B, C))& ~(rugir(B))>Y)

E^T^igual(E, T)

1

1

2

Page 148: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

148 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

N’ VR

N’

“ os hipónimos de “felino” ” “ que não rugem”

(B^R)^d(o,plu,B,d(exi,sing,C, F^~(rugir(F))

felino(C)&hipónimo(B,C))>R)

D N’

“ os” “ hipónimos de “felino” ”

(B^Q)^(B^R)^d(o,plu,B,Q>R) W^d(exi,sing,C,felino(C)&hipónimo(W,C)

N Marc

“ hipónimos” “ de “felino” ”

G^H^hipónimo(G,H) (C^S)^d(exi,sing,C,felino(C)&S)

2

3

4

3

4

Page 149: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 149

ANEXO 8 – IMPLEMENTAÇÃO DO ALGORITMO DE CONVERSÃO

/*=================================================================

Predicado topo do módulo I. Recebe uma string em Língua natural e constrói a respectiva representação semântica

===================================================================*/

go:- read_line(S), analisador(S).

/* =========================================================== read_line(-ListadePalavrasIntoduzidas)

Predicado que lê, um a um, os caracteres introduzidos pelo Utilizador devolvendo uma lista de palavras

=============================================================*/

read_line(Line):-read_chars(Chars),

processa(Chars,Line).

/*=====================================================

Predicado que aplica a gramática à string introduzida

=====================================================*/

analisador(stop).

analisador(S):- nl, write('_________________________________________________'), nl, findall(S1,verifica_lexico(S,S1),F), reconhecedor(F,_),!, nl, write('_________________________________________________'), nl,nl, go.

Page 150: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

150 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

/*===================================================================

reconhecedor(+ListaStrings)

Predicado que aplica as regras da gramática a cada string resultante da ambiguidade lexical

====================================================================*/

reconhecedor([X|L]):-semf(_,X),reconhecedor(L).

reconhecedor([]).

/*================================================================= sem(-RepSem,+ListaPalavras)

Predicado que aplica uma lista de palavras às regras da gramática devolvendo uma interpretação semântica

==================================================================*/

semf(L,F):-findall(A,(parse(r(v,_,[],[spr:[],comp:[],gap:[]],A),F),

output_pprint(A)),L).

/* ======================================================== output(+RepSem)

Predicado que imprime no ecrã uma representação semântica

==========================================================*/

output_pprint(A):-copy_term(A,A1),numbervars(A1,0,_),nl,

pprint(A1,0),nl,nl,!.

/*================================================================== read_Chars(+Caracter)

Predicado que lê um caracter do ecrã e devolve a sua representação ASCII

===================================================================*/

read_chars( Chars ):- get0(C), read_chars_2( C, Chars ).

Page 151: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 151

read_chars_2(Ch, []) :- end_of_input_char(Ch).

read_chars_2(C, [C|T]):- read_chars(T).

/*=================================================================== processa(+ListacaractersAscii,-Listade PalvrasIntroduzidas)

Predicado que recebe uma lista de caracteres ascii e retorna a lista de palavras correspondente

===================================================================*/

processa([102,105,109|_],stop).

processa(Chars,Line):- trata_virgula(Chars,Chars2),

trata_inter(Chars2,Chars3),cicle(Chars3,L_char),char(L_char,Line).

/* =================================================== Facto que indica o fim do input do utilizador (enter)

=====================================================*/

end_of_input_char(10).

/*==================================================================== trata_virgula(+ListaCaracteresAscii,-ListaCaracteresAscii)

Predicdo que coloca um espaço em branco antes e depois de uma vírgula(se ainda não estiver)

====================================================================*/

trata_virgula([X,44,Y|L],[X,32,44,32,Y|L2]):-X \== 32,Y \== 32, !,trata_virgula(L,L2).

trata_virgula([X,44,32|L],[X,32,44,32|L2]):-X \== 32,!,trata_virgula(L,L2).

trata_virgula([32,44,Y|L],[32,44,32,Y|L2]):-Y \== 32,!,trata_virgula(L,L2).

trata_virgula([X|L],[X|L2]):-trata_virgula(L,L2).

trata_virgula([],[]).

Page 152: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

152 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

/*=================================================================== verifica_inter(+ListaCaracteresAscii,-ListaCaracteresAscii)

Predicado que verifica se o último caracter da string de input é um ?

====================================================================*/

trata_inter(L,L2):-last(63,L),delete(L,63,L2).

/*=================================================================== cicle(+ListacracteresAscii,-ListaCaracteresAscciSeparadosemPalavras)

Predicado que recebe uma lista Ascii e devolve outra lista cujos elementos são sequências de caracteres ascii (palavras)

====================================================================*/

cicle([],[]).cicle(F,[Y|L]):-

break(F,Y,T), cicle(T,L),!.

/*=================================================================== break(+ListaCaractersAscii,-ListaTemp,-ListaCaracteresAscii)

Recebe uma lista de ASCII correspondente à string de input, criando uma nova lista cujos elementos são sequências de símbolos ASCII correspondentes a palavras

====================================================================*/

break([],[],[]).break([34|L],[34|L4],L2):-

procura34(L,L4),retira_elems_lista(L,L4,L3),break(L3,_,L2).

break([32|L],[],L):- !.

break([X|L],[X|L2],L3):- break(L,L2,L3).

/*================================================================== procura_34(+ListaCaracteresAscii,-ListaApartirdoElemento34)

Predicado que recebe uma lista ASCII, procura o elemento 34 (correspondente a aspas) e devolve a lista a partir desse elemento

===================================================================*/

procura34([34|_],[34]):-!.

procura34([X|L],[X|L2]):-procura34(L,L2).

Page 153: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 153

/*================================================================= char(+ListaSequênciasAscii,-ListaPalavras)

Predicado que recebe uma lista de sequências ascii e devolve uma lista das palavras correspondentes

==================================================================*/

char([],[]):-!.

char([[34|X]|L],[Y|L2]):-retira_aspas([34|X],34,Y),char(L,L2),!.

char([X|L],[Y|L2]):-name(Y,X),char(L,L2).

/*================================================================== retira_aspas(+ListaCarateresAscii,+elemento,

-ListaSemOcorresnciasdeElemento)

Predicado que recebe uma lista de caracteres Ascii e um elemento e devolve uma lista sem qualquer ocrrência desse elemento

===================================================================*/

retira_aspas([],_,[]).

retira_aspas([X|L],X,L2):-retira_aspas(L,X,L2),!.

retira_aspas([Y|L],X,[Y|L2]):-retira_aspas(L,X,L2).

/*==================================================================== verifica_lexico(+ListaPalavras,-ListaPalavras)

Predicado que verifica se todas as palavras da lista estão presentes na base de dados lexical

====================================================================*/

verifica_lexico([],[]).

verifica_lexico([Word1,Word2|L],L2):-atom(Word1),atom(Word2),concat_atom([Word1,Word2],' ',Word3),verifica_lexico([Word3|L],L2).

verifica_lexico([ASCII|L],[ASCII|L2]):-is_list(ASCII),!,verifica_lexico(L,L2).

Page 154: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

154 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

verifica_lexico([Word|L],[Word|L2]):-(_ ---> [Word]), !,verifica_lexico(L,L2).

/*================================================================== pprint(+RepSem,+Tab)

Predicado que imprime uma representação semântica indentada no ecrã

====================================================================*/

pprint(V,_):- var(V), write(V).

pprint(d(Q,_,X,F),C) :-tab(C),write(Q),write('('),write(X),write(','),nl,!,

Cn is C+9, pprint(F,Cn), write(' )').

pprint(A *> B,C) :-pprint(A,C),!,write('*>'),nl,nl,C1 is C + 10,

pprint(B,C1).

pprint(~(B),C) :-tab(8),write(' ~ ('), nl,tab(5),

pprint(B,C),write(')').

pprint(A & B,C) :-pprint(A,C),!,nl,tab(C),write('&'),nl,

pprint(B,C).

pprint(A > B,C) :-pprint(A,C),!,write(' -> '),nl,

pprint(B,C).

pprint(P,C):-nonvar(P),

P=..[Symb|X],!, tab(C),

write(Symb),write('('), imprime(X), write(')').

Page 155: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 155

/*========================================================= imprime(+Lista)

Predicado que imprime elemento de uma lista entre virgulas

===========================================================*/

imprime([]).imprime([X]):- write(X).imprime([X,Y|Z]):- write(X),write(’,’),imprime([Y|Z]).

/* ================================================================== subst_contract(+ListaPalavras,-ListadePalavrasSemContraccões)

Predicado que substitui as contracções presentes na lista pelos seus elementos básicos

====================================================================*/

subst_contrac([],[]).

subst_contrac([X|L],[Z,Y|L2]):-(contrac(X) ===> [Z,Y]),!,subst_contrac(L,L2).

subst_contrac([X|L],[X|L1]):-subst_contrac(L,L1).

Page 156: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional
Page 157: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 157

ANEXO 9 – EXEMPLOS DA REPRESENTAÇÃO SEMÂNTICA DE

INTERROGATIVAS EM PORTUGUÊS UTILIZANDO O ALGORITMO

DE CONVERSÃO

go.

|: todos os gatos miam?

_________________________________________________

Tempo de análise: 0.07 segundos.

todo(A,

gato(A) ->

miar(A) )

________________________________________________

|: todos os gatos e cães são animais?

_________________________________________________

Tempo de análise: 0.161 segundos.

todo(A,

gato(A) ->

exi(B,

animal(B)

&

ser_v(A,B) ) )

&

todo(C,

cão(C) ->

exi(B,

animal(B)

&

ser_v(C,B) ) )

Page 158: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

158 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

todo(A,

gato(A) ->

exi(B,

animal(B)

&

ser_v(A,B) ) )

&

exi(C,

cão(C)

&

exi(B,

animal(B)

&

ser_v(C,B) ) )

_________________________________________________

|: quantos gatos e cães são animais?

_________________________________________________

Tempo de análise: 0.13 segundos.

quantos(A)*>

gato(A) & exi(B, animal(B) & ser_v(A,B) )

&quantos(C)*>

cão(C) & exi(B, animal(B) & ser_v(C,B) )

_________________________________________________

Page 159: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

Anexos

Grupo de Computação do Conhecimento Léxico-Gramatical – CLG 159

|: o hiperónimo do hiperónimo de cão é animal?

_________________________________________________Tempo de análise: 0.19 segundos.

o(A, o(B, exi(C, cão(C) & hiperónimo(B,C) ) -> hiperónimo(A,B) ) -> exi(D, animal(D) & ser_v(A,D) ) )

_________________________________________________

|: os cães,gatos e aranhas que são animais têm patas?

___________________________________________________________Tempo de análise: 0.3 segundos.

o(A, cão(A) -> exi(B, pata_2(B) & ter(A,B) ) )&exi(C, gato(C) & exi(B, pata_2(B) & ter(C,B) ) )&exi(D, aranha(D) & exi(E, animal(E) & ser_v(D,E) ) & exi(B, pata_2(B) & ter(D,B) ) )

Page 160: RELATÓRIO DE ESTÁGIO - clul.ulisboa.pt · O Centro de Linguística da Universidade de Lisboa – CLUL, homologado oficialmente em Maio de 1976 como adstrito ao Instituto Nacional

INQUER – Interacção Pessoa – Máquina em Linguagem Natural

160 Grupo de Computação do Conhecimento Léxico-Gramatical – CLG

o(A, cão(A) -> exi(B, pato(B) & ter(A,B) ) )&exi(C, gato(C) & exi(B, pato(B) & ter(C,B) ) )&exi(D, aranha(D) & exi(E, animal(E) & ser_v(D,E) ) & exi(B, pato(B) & ter(D,B) ) )

_________________________________________________

|: os elefantes têm membros?

_________________________________________________Tempo de análise: 0.07 segundos.

o(A, elefante(A) -> exi(B, membro(B) & ter(A,B) ) )

_________________________________________________