processamento de linguagem natural - ime-uspslago/pl-12.pdf · linguagens formais são linguagens...

22
Processamento de Linguagem Natural Prof. Dr. Silvio do Lago Pereira Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

Upload: doantruc

Post on 08-Nov-2018

237 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Processamento de

Linguagem Natural

Prof. Dr. Silvio do Lago Pereira

Departamento de Tecnologia da Informação

Faculdade de Tecnologia de São Paulo

Page 2: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Introdução

Processamento de linguagem natural (PLN)Processamento de linguagem natural (PLN)

consiste no desenvolvimento de modelos computacionais para a realização de tarefas

que dependem de informações expressas em uma língua natural.

consiste no desenvolvimento de modelos computacionais para a realização de tarefas

que dependem de informações expressas em uma língua natural.

Alguns exemplos de aplicação:

tradução e interpretação de textos

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 2

tradução e interpretação de textos

busca de informações em documentos

interface homem-máquina (chatterbots)

Aspectos da pesquisa em PLN:

som: fonologia

estrutura: morfologia e sintaxe

significado: semântica e pragmática

Page 3: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Alguns aspectos da pesquisa em PLN

Fonologia: reconhece os sons (fonemas) que formam as palavras de uma língua.

Morfologia: reconhece uma palavra em termos de unidades básicas (morfemas).

Sintaxe: define a estrutura de uma frase com base na forma como as palavras

desta frase se relacionam entre si (categorias gramaticais).

Semântica: associa significado às estruturas sintáticas, em função do significado

das palavras que a compõem.

Pragmática: adequa o significado de uma frase ao contexto em que ela é usada.

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 3

Pragmática: adequa o significado de uma frase ao contexto em que ela é usada.

ConsideraçõesConsiderações

PLN é uma vasta área de pesquisa que envolve diversas áreas do conhecimento.

Para simplificar, abordaremos apenas alguns conceitos básicos de análise sintática.

Mostraremos como usar conceitos básicos de linguagens formais para definir uma

gramática capaz de gerar e reconhecer um conjunto restrito de frases em português.

PLN é uma vasta área de pesquisa que envolve diversas áreas do conhecimento.

Para simplificar, abordaremos apenas alguns conceitos básicos de análise sintática.

Mostraremos como usar conceitos básicos de linguagens formais para definir uma

gramática capaz de gerar e reconhecer um conjunto restrito de frases em português.

Page 4: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Gramáticas

Uma linguagem é um conjunto de sentenças, formadas pela concatenação de símbolos.

Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que

podem ser matematicamente definidas, de forma rigorosa.

Linguagens naturais (tais como português ou inglês) não são matematicamente definidas.

Embora a correspondência não seja perfeita, podemos tratar linguagens naturais como

tratamos linguagens formais.

Uma gramáticaUma gramática

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 4

Uma gramáticaUma gramática

é uma especificação matemática da estrutura das sentenças de uma linguagem.é uma especificação matemática da estrutura das sentenças de uma linguagem.

Formalmente, uma gramática é definida por:

S: o símbolo inicial da gramática (S∈N)

T: um conjunto de símbolos terminais, denotando palavras da linguagem (léxico).

N: um conjunto de símbolos não-terminais, denotando componentes de sentenças.

R: um conjunto de regras de produção, que especificam como símbolos não-terminais

podem ser expandidos em símbolos não-terminais e terminais.

Page 5: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Especificação de gramática usando diferença de listas

Considere a gramática a seguir:

S = {frase}

T = {o, gato, rato, caçou}

N = {frase, sujeito, predicado, artigo, substantivo, verbo}

R = {frase --> sujeito, predicado ;

sujeito --> artigo, substantivo ;

predicado --> verbo, artigo, substantivo ;

artigo --> [o] ;

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 5

artigo --> [o] ;

substantivo --> [gato] | [rato] ;

verbo --> [caçou]}

De acordo com esta gramática:

uma frase é um sujeito seguido de um predicado

um sujeito é um artigo seguido de um substantivo

um predicado é um verbo, seguido de um artigo, seguido de um substantivo

um artigo é o símbolo terminal oooo

um substantivo é o símbolo terminal gatogatogatogato ou ratoratoratorato

um verbo é o símbolo terminal caçoucaçoucaçoucaçou

Page 6: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Especificação de gramática usando diferença de listas

Considere que frases são representadas por listas de palavras. Então, por

exemplo, a frase “o gato caçou o rato” pode ser representada como

[[[[oooo,,,,gatogatogatogato,,,,caçoucaçoucaçoucaçou,,,,oooo,,,,ratoratoratorato]]]]

Reconhecendo o primeiro artigo em [o,gato,caçou,o,rato], obtemos a lista

[gato,caçou,o,rato]. Isto pode ser indicado em Prolog com o fato:

artigo([artigo([artigo([artigo([oooo|A],A).|A],A).|A],A).|A],A).

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 6

Analogamente, reconhecendo o primeiro substantivo em [gato,caçou,o,rato],

obtemos a lista [caçou,o,rato]. Isto pode ser indicado com o fato:

substantivo([substantivo([substantivo([substantivo([gatogatogatogato|A],A).|A],A).|A],A).|A],A).

Neste ponto, é importante notar que, reconhecendo um artigo seguido de um

substantivo, acabamos reconhecendo o sujeito da frase. Em Prolog, isto pode ser

indicado pela regra:

sujeito(A,C) :sujeito(A,C) :sujeito(A,C) :sujeito(A,C) :---- artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).

Page 7: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Especificação de gramática usando diferença de listas

Após o reconhecimento do sujeito em [o,gato,caçou,o,rato], obtemos a lista

[caçou,o,rato]. Reconhecendo o verbo nesta lista, obtemos a lista [o,rato].

Isto pode ser indicado com o fato:

verbo([verbo([verbo([verbo([caçoucaçoucaçoucaçou|A],A).|A],A).|A],A).|A],A).

O artigo em [o,rato] pode ser reconhecido pelo fato já declarado anteriormente

e, para reconhecer este novo substantivo, podemos usar o fato:

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 7

substantivo([substantivo([substantivo([substantivo([ratoratoratorato|A],A).|A],A).|A],A).|A],A).

Aqui também podemos notar que, para reconhecer o predicado da frase, é

necessário reconhecer um verbo, seguido de um artigo e um substantivo. Isto pode

ser indicado pela regra:

predicado(A,D) :predicado(A,D) :predicado(A,D) :predicado(A,D) :---- verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).

Finalmente, para reconhecer uma frase, podemos usar a regra:

frase(A,C) :frase(A,C) :frase(A,C) :frase(A,C) :---- sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).

Page 8: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Reconhecimento de frases

Exemplo 1. Especificação completa da gramáticaExemplo 1. Especificação completa da gramática

frasefrasefrasefrase(A,C) :(A,C) :(A,C) :(A,C) :---- sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeitosujeitosujeitosujeito(A,C) :(A,C) :(A,C) :(A,C) :---- artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).predicadopredicadopredicadopredicado(A,D) :(A,D) :(A,D) :(A,D) :---- verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).artigoartigoartigoartigo([([([([oooo|A],A).|A],A).|A],A).|A],A).substantivosubstantivosubstantivosubstantivo([([([([gatogatogatogato|A],A).|A],A).|A],A).|A],A).substantivosubstantivosubstantivosubstantivo([([([([ratoratoratorato|A],A).|A],A).|A],A).|A],A).verboverboverboverbo([([([([caçoucaçoucaçoucaçou|A],A).|A],A).|A],A).|A],A).

frasefrasefrasefrase(A,C) :(A,C) :(A,C) :(A,C) :---- sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeitosujeitosujeitosujeito(A,C) :(A,C) :(A,C) :(A,C) :---- artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).predicadopredicadopredicadopredicado(A,D) :(A,D) :(A,D) :(A,D) :---- verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).artigoartigoartigoartigo([([([([oooo|A],A).|A],A).|A],A).|A],A).substantivosubstantivosubstantivosubstantivo([([([([gatogatogatogato|A],A).|A],A).|A],A).|A],A).substantivosubstantivosubstantivosubstantivo([([([([ratoratoratorato|A],A).|A],A).|A],A).|A],A).verboverboverboverbo([([([([caçoucaçoucaçoucaçou|A],A).|A],A).|A],A).|A],A).

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 8

Exercício 1. Uso da gramática para reconhecimento de frasesExercício 1. Uso da gramática para reconhecimento de frases

Digite a gramática do Exemplo 1 e faça as consultas a seguir:

?- artigo([o,gato,caçou,o,rato],R).

?- sujeito([o,gato,caçou,o,rato],R).

?- frase([o,gato,caçou,o,rato],[]).

?- frase([o,gato,rato,o,caçou],[]).

?- frase([o,rato,caçou,o,gato],[]).

?- frase([gato,caçou,rato],[]).

Digite a gramática do Exemplo 1 e faça as consultas a seguir:

?- artigo([o,gato,caçou,o,rato],R).

?- sujeito([o,gato,caçou,o,rato],R).

?- frase([o,gato,caçou,o,rato],[]).

?- frase([o,gato,rato,o,caçou],[]).

?- frase([o,rato,caçou,o,gato],[]).

?- frase([gato,caçou,rato],[]).

Page 9: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Reconhecimento de frases

????---- frase(frase(frase(frase([o,gato,caçou,o,rato][o,gato,caçou,o,rato][o,gato,caçou,o,rato][o,gato,caçou,o,rato],[]),[]),[]),[])....

/* 1 */ /* 1 */ /* 1 */ /* 1 */ frasefrasefrasefrase(A,C) :(A,C) :(A,C) :(A,C) :---- sujeito(A,B), predicado(B,C). sujeito(A,B), predicado(B,C). sujeito(A,B), predicado(B,C). sujeito(A,B), predicado(B,C). /* 2 */ /* 2 */ /* 2 */ /* 2 */ sujeitosujeitosujeitosujeito(A,C) :(A,C) :(A,C) :(A,C) :---- artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C)./* 3 */ /* 3 */ /* 3 */ /* 3 */ predicadopredicadopredicadopredicado(A,D) :(A,D) :(A,D) :(A,D) :---- verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D)./* 4 */ /* 4 */ /* 4 */ /* 4 */ artigoartigoartigoartigo([([([([oooo|A],A).|A],A).|A],A).|A],A)./* 5 */ /* 5 */ /* 5 */ /* 5 */ substantivosubstantivosubstantivosubstantivo([([([([gatogatogatogato|A],A).|A],A).|A],A).|A],A)./* 6 */ /* 6 */ /* 6 */ /* 6 */ substantivosubstantivosubstantivosubstantivo([([([([ratoratoratorato|A],A).|A],A).|A],A).|A],A)./* 7 */ /* 7 */ /* 7 */ /* 7 */ verboverboverboverbo([([([([caçoucaçoucaçoucaçou|A],A).|A],A).|A],A).|A],A).

/* 1 */ /* 1 */ /* 1 */ /* 1 */ frasefrasefrasefrase(A,C) :(A,C) :(A,C) :(A,C) :---- sujeito(A,B), predicado(B,C). sujeito(A,B), predicado(B,C). sujeito(A,B), predicado(B,C). sujeito(A,B), predicado(B,C). /* 2 */ /* 2 */ /* 2 */ /* 2 */ sujeitosujeitosujeitosujeito(A,C) :(A,C) :(A,C) :(A,C) :---- artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C)./* 3 */ /* 3 */ /* 3 */ /* 3 */ predicadopredicadopredicadopredicado(A,D) :(A,D) :(A,D) :(A,D) :---- verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D)./* 4 */ /* 4 */ /* 4 */ /* 4 */ artigoartigoartigoartigo([([([([oooo|A],A).|A],A).|A],A).|A],A)./* 5 */ /* 5 */ /* 5 */ /* 5 */ substantivosubstantivosubstantivosubstantivo([([([([gatogatogatogato|A],A).|A],A).|A],A).|A],A)./* 6 */ /* 6 */ /* 6 */ /* 6 */ substantivosubstantivosubstantivosubstantivo([([([([ratoratoratorato|A],A).|A],A).|A],A).|A],A)./* 7 */ /* 7 */ /* 7 */ /* 7 */ verboverboverboverbo([([([([caçoucaçoucaçoucaçou|A],A).|A],A).|A],A).|A],A).

????---- sujeito(sujeito(sujeito(sujeito([o,gato,caçou,o,rato][o,gato,caçou,o,rato][o,gato,caçou,o,rato][o,gato,caçou,o,rato],B,B,B,B1111)))), predicado(B, predicado(B, predicado(B, predicado(B1111,[]).,[]).,[]).,[]).

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 9

????---- artigo(artigo(artigo(artigo([o,gato,caçou,o,rato][o,gato,caçou,o,rato][o,gato,caçou,o,rato][o,gato,caçou,o,rato],B,B,B,B2222)))), substantivo(B, substantivo(B, substantivo(B, substantivo(B2222,B,B,B,B1111), predicado(B), predicado(B), predicado(B), predicado(B1111,[]).,[]).,[]).,[]).

????---- substantivo(substantivo(substantivo(substantivo([gato,caçou,o,rato][gato,caçou,o,rato][gato,caçou,o,rato][gato,caçou,o,rato],B,B,B,B1111)))), predicado(B, predicado(B, predicado(B, predicado(B1111,[]).,[]).,[]).,[]).

????---- predicado(predicado(predicado(predicado([caçou,o,rato][caçou,o,rato][caçou,o,rato][caçou,o,rato],[]),[]),[]),[])....

????---- verbo(verbo(verbo(verbo([caçou,o,rato][caçou,o,rato][caçou,o,rato][caçou,o,rato],B,B,B,B3333)))), artigo(B, artigo(B, artigo(B, artigo(B3333,C,C,C,C3333), substantivo(C), substantivo(C), substantivo(C), substantivo(C3333,[]).,[]).,[]).,[]).

????---- artigo(artigo(artigo(artigo([o,rato][o,rato][o,rato][o,rato],C,C,C,C3333)))), substantivo(C, substantivo(C, substantivo(C, substantivo(C3333,[]).,[]).,[]).,[]).

????---- substantivo(substantivo(substantivo(substantivo([rato][rato][rato][rato],[]),[]),[]),[])....

????---- SUCESSO

Page 10: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Reconhecimento de frases

????---- frase(frase(frase(frase([o,gato,rato,o,caçou][o,gato,rato,o,caçou][o,gato,rato,o,caçou][o,gato,rato,o,caçou],[]),[]),[]),[])....

/* 1 */ /* 1 */ /* 1 */ /* 1 */ frasefrasefrasefrase(A,C) :(A,C) :(A,C) :(A,C) :---- sujeito(A,B), predicado(B,C). sujeito(A,B), predicado(B,C). sujeito(A,B), predicado(B,C). sujeito(A,B), predicado(B,C). /* 2 */ /* 2 */ /* 2 */ /* 2 */ sujeitosujeitosujeitosujeito(A,C) :(A,C) :(A,C) :(A,C) :---- artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C)./* 3 */ /* 3 */ /* 3 */ /* 3 */ predicadopredicadopredicadopredicado(A,D) :(A,D) :(A,D) :(A,D) :---- verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D)./* 4 */ /* 4 */ /* 4 */ /* 4 */ artigoartigoartigoartigo([([([([oooo|A],A).|A],A).|A],A).|A],A)./* 5 */ /* 5 */ /* 5 */ /* 5 */ substantivosubstantivosubstantivosubstantivo([([([([gatogatogatogato|A],A).|A],A).|A],A).|A],A)./* 6 */ /* 6 */ /* 6 */ /* 6 */ substantivosubstantivosubstantivosubstantivo([([([([ratoratoratorato|A],A).|A],A).|A],A).|A],A)./* 7 */ /* 7 */ /* 7 */ /* 7 */ verboverboverboverbo([([([([caçoucaçoucaçoucaçou|A],A).|A],A).|A],A).|A],A).

/* 1 */ /* 1 */ /* 1 */ /* 1 */ frasefrasefrasefrase(A,C) :(A,C) :(A,C) :(A,C) :---- sujeito(A,B), predicado(B,C). sujeito(A,B), predicado(B,C). sujeito(A,B), predicado(B,C). sujeito(A,B), predicado(B,C). /* 2 */ /* 2 */ /* 2 */ /* 2 */ sujeitosujeitosujeitosujeito(A,C) :(A,C) :(A,C) :(A,C) :---- artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C)./* 3 */ /* 3 */ /* 3 */ /* 3 */ predicadopredicadopredicadopredicado(A,D) :(A,D) :(A,D) :(A,D) :---- verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D)./* 4 */ /* 4 */ /* 4 */ /* 4 */ artigoartigoartigoartigo([([([([oooo|A],A).|A],A).|A],A).|A],A)./* 5 */ /* 5 */ /* 5 */ /* 5 */ substantivosubstantivosubstantivosubstantivo([([([([gatogatogatogato|A],A).|A],A).|A],A).|A],A)./* 6 */ /* 6 */ /* 6 */ /* 6 */ substantivosubstantivosubstantivosubstantivo([([([([ratoratoratorato|A],A).|A],A).|A],A).|A],A)./* 7 */ /* 7 */ /* 7 */ /* 7 */ verboverboverboverbo([([([([caçoucaçoucaçoucaçou|A],A).|A],A).|A],A).|A],A).

????---- sujeito(sujeito(sujeito(sujeito([o,gato,rato,o,caçou][o,gato,rato,o,caçou][o,gato,rato,o,caçou][o,gato,rato,o,caçou],B,B,B,B1111)))), predicado(B, predicado(B, predicado(B, predicado(B1111,[]).,[]).,[]).,[]).

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 10

????---- artigo(artigo(artigo(artigo([o,gato,rato,o,caçou][o,gato,rato,o,caçou][o,gato,rato,o,caçou][o,gato,rato,o,caçou],B,B,B,B2222)))), substantivo(B, substantivo(B, substantivo(B, substantivo(B2222,B,B,B,B1111), predicado(B), predicado(B), predicado(B), predicado(B1111,[]).,[]).,[]).,[]).

????---- substantivo(substantivo(substantivo(substantivo([gato,rato,o,caçou][gato,rato,o,caçou][gato,rato,o,caçou][gato,rato,o,caçou],B,B,B,B1111)))), predicado(B, predicado(B, predicado(B, predicado(B1111,[]).,[]).,[]).,[]).

????---- predicado(predicado(predicado(predicado([rato,o,caçou][rato,o,caçou][rato,o,caçou][rato,o,caçou],[]),[]),[]),[])....

????---- verbo(verbo(verbo(verbo([rato,o,caçou][rato,o,caçou][rato,o,caçou][rato,o,caçou],B,B,B,B3333)))), artigo(B, artigo(B, artigo(B, artigo(B3333,C,C,C,C3333), substantivo(C), substantivo(C), substantivo(C), substantivo(C3333,[]).,[]).,[]).,[]).

FALHA

Page 11: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Geração de frases

Exemplo 1. A gramática completaExemplo 1. A gramática completa

frasefrasefrasefrase(A,C) :(A,C) :(A,C) :(A,C) :---- sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeitosujeitosujeitosujeito(A,C) :(A,C) :(A,C) :(A,C) :---- artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).predicadopredicadopredicadopredicado(A,D) :(A,D) :(A,D) :(A,D) :---- verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).artigoartigoartigoartigo([([([([oooo|A],A).|A],A).|A],A).|A],A).substantivosubstantivosubstantivosubstantivo([([([([gatogatogatogato|A],A).|A],A).|A],A).|A],A).substantivosubstantivosubstantivosubstantivo([([([([ratoratoratorato|A],A).|A],A).|A],A).|A],A).verboverboverboverbo([([([([caçoucaçoucaçoucaçou|A],A).|A],A).|A],A).|A],A).

frasefrasefrasefrase(A,C) :(A,C) :(A,C) :(A,C) :---- sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeitosujeitosujeitosujeito(A,C) :(A,C) :(A,C) :(A,C) :---- artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).predicadopredicadopredicadopredicado(A,D) :(A,D) :(A,D) :(A,D) :---- verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).artigoartigoartigoartigo([([([([oooo|A],A).|A],A).|A],A).|A],A).substantivosubstantivosubstantivosubstantivo([([([([gatogatogatogato|A],A).|A],A).|A],A).|A],A).substantivosubstantivosubstantivosubstantivo([([([([ratoratoratorato|A],A).|A],A).|A],A).|A],A).verboverboverboverbo([([([([caçoucaçoucaçoucaçou|A],A).|A],A).|A],A).|A],A).

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 11

Exercício 2. Uso da gramática para geração de frasesExercício 2. Uso da gramática para geração de frases

Faça as consultas a seguir, que geram todas as frases da linguagem definida pela

gramática do Exemplo 1:

????---- frase(F,[]).frase(F,[]).frase(F,[]).frase(F,[]).

????---- forallforallforallforall( ( ( ( frasefrasefrasefrase(F,[]), (F,[]), (F,[]), (F,[]), writelnwritelnwritelnwriteln(F) ).(F) ).(F) ).(F) ).

Faça as consultas a seguir, que geram todas as frases da linguagem definida pela

gramática do Exemplo 1:

????---- frase(F,[]).frase(F,[]).frase(F,[]).frase(F,[]).

????---- forallforallforallforall( ( ( ( frasefrasefrasefrase(F,[]), (F,[]), (F,[]), (F,[]), writelnwritelnwritelnwriteln(F) ).(F) ).(F) ).(F) ).

Page 12: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Geração de frases

Exemplo 1. A gramática completaExemplo 1. A gramática completa

frasefrasefrasefrase(A,C) :(A,C) :(A,C) :(A,C) :---- sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeitosujeitosujeitosujeito(A,C) :(A,C) :(A,C) :(A,C) :---- artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).predicadopredicadopredicadopredicado(A,D) :(A,D) :(A,D) :(A,D) :---- verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).artigoartigoartigoartigo([([([([oooo|A],A).|A],A).|A],A).|A],A).substantivosubstantivosubstantivosubstantivo([([([([gatogatogatogato|A],A).|A],A).|A],A).|A],A).substantivosubstantivosubstantivosubstantivo([([([([ratoratoratorato|A],A).|A],A).|A],A).|A],A).verboverboverboverbo([([([([caçoucaçoucaçoucaçou|A],A).|A],A).|A],A).|A],A).

frasefrasefrasefrase(A,C) :(A,C) :(A,C) :(A,C) :---- sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeito(A,B), predicado(B,C).sujeitosujeitosujeitosujeito(A,C) :(A,C) :(A,C) :(A,C) :---- artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).artigo(A,B), substantivo(B,C).predicadopredicadopredicadopredicado(A,D) :(A,D) :(A,D) :(A,D) :---- verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).verbo(A,B), artigo(B,C), substantivo(C,D).artigoartigoartigoartigo([([([([oooo|A],A).|A],A).|A],A).|A],A).substantivosubstantivosubstantivosubstantivo([([([([gatogatogatogato|A],A).|A],A).|A],A).|A],A).substantivosubstantivosubstantivosubstantivo([([([([ratoratoratorato|A],A).|A],A).|A],A).|A],A).verboverboverboverbo([([([([caçoucaçoucaçoucaçou|A],A).|A],A).|A],A).|A],A).

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 12

Exercício 3. Ampliação do léxico da gramáticaExercício 3. Ampliação do léxico da gramática

Altere a definição da gramática do Exemplo 1, adicionando o artigo umumumum e o verbo

assustouassustouassustouassustou. Em seguida, faça as consultas a seguir:

????---- frase(F,[]).frase(F,[]).frase(F,[]).frase(F,[]).

????---- forallforallforallforall( ( ( ( frasefrasefrasefrase(F,[]), (F,[]), (F,[]), (F,[]), writelnwritelnwritelnwriteln(F) ).(F) ).(F) ).(F) ).

Altere a definição da gramática do Exemplo 1, adicionando o artigo umumumum e o verbo

assustouassustouassustouassustou. Em seguida, faça as consultas a seguir:

????---- frase(F,[]).frase(F,[]).frase(F,[]).frase(F,[]).

????---- forallforallforallforall( ( ( ( frasefrasefrasefrase(F,[]), (F,[]), (F,[]), (F,[]), writelnwritelnwritelnwriteln(F) ).(F) ).(F) ).(F) ).

Page 13: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Notação DCG (Definite Clause Grammar)

Exemplo 2. Uma gramática em notação DCGExemplo 2. Uma gramática em notação DCG

frasefrasefrasefrase -------->>>> sujeito, predicado.sujeito, predicado.sujeito, predicado.sujeito, predicado.sujeitosujeitosujeitosujeito --------> artigo, substantivo.> artigo, substantivo.> artigo, substantivo.> artigo, substantivo.predicadopredicadopredicadopredicado --------> verbo, artigo, substantivo.> verbo, artigo, substantivo.> verbo, artigo, substantivo.> verbo, artigo, substantivo.

frasefrasefrasefrase -------->>>> sujeito, predicado.sujeito, predicado.sujeito, predicado.sujeito, predicado.sujeitosujeitosujeitosujeito --------> artigo, substantivo.> artigo, substantivo.> artigo, substantivo.> artigo, substantivo.predicadopredicadopredicadopredicado --------> verbo, artigo, substantivo.> verbo, artigo, substantivo.> verbo, artigo, substantivo.> verbo, artigo, substantivo.

A linguagem Prolog oferece uma notação, denominada DCG, que facilita a

especificação de gramáticas. Ao ser compilada, uma gramática em notação DCG é

automaticamente transformada em uma gramática usando diferença de listas.

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 13

predicadopredicadopredicadopredicado --------> verbo, artigo, substantivo.> verbo, artigo, substantivo.> verbo, artigo, substantivo.> verbo, artigo, substantivo.artigoartigoartigoartigo --------> [> [> [> [oooo].].].].substantivosubstantivosubstantivosubstantivo --------> [> [> [> [gatogatogatogato] | [] | [] | [] | [ratoratoratorato].].].].verboverboverboverbo --------> [> [> [> [caçoucaçoucaçoucaçou].].].].

predicadopredicadopredicadopredicado --------> verbo, artigo, substantivo.> verbo, artigo, substantivo.> verbo, artigo, substantivo.> verbo, artigo, substantivo.artigoartigoartigoartigo --------> [> [> [> [oooo].].].].substantivosubstantivosubstantivosubstantivo --------> [> [> [> [gatogatogatogato] | [] | [] | [] | [ratoratoratorato].].].].verboverboverboverbo --------> [> [> [> [caçoucaçoucaçoucaçou].].].].

Exercício 4. Análise do resultado da compilação da notação DCGExercício 4. Análise do resultado da compilação da notação DCG

Digite a gramática do Exemplo 2, compile e faça a consulta a seguir:

????---- listing.listing.listing.listing.

Digite a gramática do Exemplo 2, compile e faça a consulta a seguir:

????---- listing.listing.listing.listing.

Page 14: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Categorias gramaticais

Em PLN, é bastante comum o uso de termos técnicos para designar categorias

gramaticais. Alguns destes termos são os seguintes:

ssss : sintagma sentencial (frase)

snsnsnsn : sintagma nominal

svsvsvsv : sintagma verbal

detdetdetdet : determinante (artigo)

nnnn : nome (substantivo)

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 14

nnnn : nome (substantivo)

adjadjadjadj : adjetivo

vvvv : verbo

vivivivi : verbo intransitivo

vtvtvtvt : verbo transitivo

advadvadvadv : advérbio

A fim de simplificar a notação, usaremos estes termos na especificação das

próximas gramáticas.

Page 15: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Categorias gramaticais

Exemplo 3. Gramática G1 Exemplo 3. Gramática G1

s s s s --------> sn, sv.> sn, sv.> sn, sv.> sn, sv.sn sn sn sn --------> det, n, adj.> det, n, adj.> det, n, adj.> det, n, adj.sv sv sv sv --------> vi, adv.> vi, adv.> vi, adv.> vi, adv.sv sv sv sv --------> vt, adv, sn.> vt, adv, sn.> vt, adv, sn.> vt, adv, sn.det det det det --------> [> [> [> [oooo].].].].n n n n --------> [> [> [> [gatogatogatogato] | [] | [] | [] | [ratoratoratorato].].].].adj adj adj adj --------> [] | [> [] | [> [] | [> [] | [gordogordogordogordo] | [] | [] | [] | [magromagromagromagro].].].].vi vi vi vi --------> [> [> [> [caçoucaçoucaçoucaçou] | [] | [] | [] | [dormiudormiudormiudormiu].].].].

s s s s --------> sn, sv.> sn, sv.> sn, sv.> sn, sv.sn sn sn sn --------> det, n, adj.> det, n, adj.> det, n, adj.> det, n, adj.sv sv sv sv --------> vi, adv.> vi, adv.> vi, adv.> vi, adv.sv sv sv sv --------> vt, adv, sn.> vt, adv, sn.> vt, adv, sn.> vt, adv, sn.det det det det --------> [> [> [> [oooo].].].].n n n n --------> [> [> [> [gatogatogatogato] | [] | [] | [] | [ratoratoratorato].].].].adj adj adj adj --------> [] | [> [] | [> [] | [> [] | [gordogordogordogordo] | [] | [] | [] | [magromagromagromagro].].].].vi vi vi vi --------> [> [> [> [caçoucaçoucaçoucaçou] | [] | [] | [] | [dormiudormiudormiudormiu].].].].

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 15

vi vi vi vi --------> [> [> [> [caçoucaçoucaçoucaçou] | [] | [] | [] | [dormiudormiudormiudormiu].].].].vt vt vt vt --------> [> [> [> [caçoucaçoucaçoucaçou]. ]. ]. ]. adv adv adv adv --------> [] | [> [] | [> [] | [> [] | [silenciosamentesilenciosamentesilenciosamentesilenciosamente].].].].

vi vi vi vi --------> [> [> [> [caçoucaçoucaçoucaçou] | [] | [] | [] | [dormiudormiudormiudormiu].].].].vt vt vt vt --------> [> [> [> [caçoucaçoucaçoucaçou]. ]. ]. ]. adv adv adv adv --------> [] | [> [] | [> [] | [> [] | [silenciosamentesilenciosamentesilenciosamentesilenciosamente].].].].

Exercício 5. Teste da gramática G1Exercício 5. Teste da gramática G1

Gere e analise todas as frases da linguagem definida pela gramática G1.Gere e analise todas as frases da linguagem definida pela gramática G1.

Page 16: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Dependência de contexto

Exemplo 4. Gramática G2 Exemplo 4. Gramática G2

s s s s --------> sn, sv.> sn, sv.> sn, sv.> sn, sv.sn sn sn sn --------> det, n.> det, n.> det, n.> det, n.s s s s --------> sn, sv.> sn, sv.> sn, sv.> sn, sv.sn sn sn sn --------> det, n.> det, n.> det, n.> det, n.

A dependência de contexto ocorre quando uma palavra da frase deve concordar com

outras palavras da mesma frase.

A dependência de contexto ocorre quando uma palavra da frase deve concordar com

outras palavras da mesma frase.

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 16

sv sv sv sv --------> v, sn.> v, sn.> v, sn.> v, sn.det det det det --------> [> [> [> [oooo].].].].n n n n --------> [> [> [> [gatogatogatogato] | [] | [] | [] | [ratoratoratorato].].].].v v v v --------> [> [> [> [caçoucaçoucaçoucaçou].].].].

sv sv sv sv --------> v, sn.> v, sn.> v, sn.> v, sn.det det det det --------> [> [> [> [oooo].].].].n n n n --------> [> [> [> [gatogatogatogato] | [] | [] | [] | [ratoratoratorato].].].].v v v v --------> [> [> [> [caçoucaçoucaçoucaçou].].].].

Exercício 6. Ampliação da gramática com gênero femininoExercício 6. Ampliação da gramática com gênero feminino

Amplie a gramática G2, adicionando o artigo a e os substantivos gata e rata. Em

seguida, gere e analise todas as frases definidas pela gramática alterada.

Amplie a gramática G2, adicionando o artigo a e os substantivos gata e rata. Em

seguida, gere e analise todas as frases definidas pela gramática alterada.

Page 17: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Dependência de contexto

Exemplo 5. Gramática com concordância de gênero G3 Exemplo 5. Gramática com concordância de gênero G3

s s s s --------> sn, sv.> sn, sv.> sn, sv.> sn, sv.sn sn sn sn --------> det(> det(> det(> det(GGGG), n(), n(), n(), n(GGGG).).).).sv sv sv sv --------> v, sn.> v, sn.> v, sn.> v, sn.det(det(det(det(mmmm) ) ) ) --------> [> [> [> [oooo].].].].det(det(det(det(ffff) ) ) ) --------> [> [> [> [aaaa].].].].n(n(n(n(mmmm) ) ) ) --------> [> [> [> [gatogatogatogato] | [] | [] | [] | [ratoratoratorato].].].].n(n(n(n(ffff) ) ) ) --------> [> [> [> [gatagatagatagata] | [] | [] | [] | [ratarataratarata].].].].v v v v --------> [> [> [> [caçoucaçoucaçoucaçou].].].].

s s s s --------> sn, sv.> sn, sv.> sn, sv.> sn, sv.sn sn sn sn --------> det(> det(> det(> det(GGGG), n(), n(), n(), n(GGGG).).).).sv sv sv sv --------> v, sn.> v, sn.> v, sn.> v, sn.det(det(det(det(mmmm) ) ) ) --------> [> [> [> [oooo].].].].det(det(det(det(ffff) ) ) ) --------> [> [> [> [aaaa].].].].n(n(n(n(mmmm) ) ) ) --------> [> [> [> [gatogatogatogato] | [] | [] | [] | [ratoratoratorato].].].].n(n(n(n(ffff) ) ) ) --------> [> [> [> [gatagatagatagata] | [] | [] | [] | [ratarataratarata].].].].v v v v --------> [> [> [> [caçoucaçoucaçoucaçou].].].].

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 17

v v v v --------> [> [> [> [caçoucaçoucaçoucaçou].].].].v v v v --------> [> [> [> [caçoucaçoucaçoucaçou].].].].

Exercício 7. Gramática com concordância de gêneroExercício 7. Gramática com concordância de gênero

Gere e analise todas as frases definidas pela gramática G3.Gere e analise todas as frases definidas pela gramática G3.

Exercício 8. Ampliação do léxicoExercício 8. Ampliação do léxico

Adicione os artigos indefinidos umumumum e umaumaumauma e gere as frases definidas pela gramática.Adicione os artigos indefinidos umumumum e umaumaumauma e gere as frases definidas pela gramática.

Page 18: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Dependência de contexto

Exemplo 6. Gramática G4 Exemplo 6. Gramática G4

s s s s --------> sn, sv.> sn, sv.> sn, sv.> sn, sv.sn sn sn sn --------> det(> det(> det(> det(GGGG), n(), n(), n(), n(GGGG).).).).sv sv sv sv --------> v, sn.> v, sn.> v, sn.> v, sn.det(det(det(det(mmmm) ) ) ) --------> [> [> [> [oooo] | [] | [] | [] | [umumumum].].].].det(det(det(det(ffff) ) ) ) --------> [> [> [> [aaaa] | [] | [] | [] | [umaumaumauma].].].].n(n(n(n(mmmm) ) ) ) --------> [> [> [> [gatogatogatogato] | [] | [] | [] | [ratoratoratorato].].].].n(n(n(n(ffff) ) ) ) --------> [> [> [> [gatagatagatagata] | [] | [] | [] | [ratarataratarata].].].].v v v v --------> [> [> [> [caçoucaçoucaçoucaçou].].].].

s s s s --------> sn, sv.> sn, sv.> sn, sv.> sn, sv.sn sn sn sn --------> det(> det(> det(> det(GGGG), n(), n(), n(), n(GGGG).).).).sv sv sv sv --------> v, sn.> v, sn.> v, sn.> v, sn.det(det(det(det(mmmm) ) ) ) --------> [> [> [> [oooo] | [] | [] | [] | [umumumum].].].].det(det(det(det(ffff) ) ) ) --------> [> [> [> [aaaa] | [] | [] | [] | [umaumaumauma].].].].n(n(n(n(mmmm) ) ) ) --------> [> [> [> [gatogatogatogato] | [] | [] | [] | [ratoratoratorato].].].].n(n(n(n(ffff) ) ) ) --------> [> [> [> [gatagatagatagata] | [] | [] | [] | [ratarataratarata].].].].v v v v --------> [> [> [> [caçoucaçoucaçoucaçou].].].].

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 18

Exercício 9. Ampliação da gramática com pluralExercício 9. Ampliação da gramática com plural

Amplie a gramática G4, adicionando:

os artigos: os, uns, as, umas

os substantivos: gatos, ratos, gatas, ratas

o verbo: caçaram

Em seguida, gere e analise todas as frases definidas pela nova gramática.

Amplie a gramática G4, adicionando:

os artigos: os, uns, as, umas

os substantivos: gatos, ratos, gatas, ratas

o verbo: caçaram

Em seguida, gere e analise todas as frases definidas pela nova gramática.

v v v v --------> [> [> [> [caçoucaçoucaçoucaçou].].].].v v v v --------> [> [> [> [caçoucaçoucaçoucaçou].].].].

Page 19: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Dependência de contexto

Exemplo 7. Gramática G5 Exemplo 7. Gramática G5

s s s s --------> sn(> sn(> sn(> sn(NNNN), sv(), sv(), sv(), sv(NNNN).).).).sn(sn(sn(sn(NNNN) ) ) ) --------> det(> det(> det(> det(GGGG,,,,NNNN), n(), n(), n(), n(GGGG,,,,NNNN).).).).sv(sv(sv(sv(NNNN) ) ) ) --------> v(> v(> v(> v(NNNN), sn(), sn(), sn(), sn(____).).).).det(det(det(det(mmmm,,,,ssss) ) ) ) --------> [> [> [> [oooo] | [] | [] | [] | [umumumum].].].].det(det(det(det(mmmm,,,,pppp) ) ) ) --------> [> [> [> [osososos] | [] | [] | [] | [unsunsunsuns].].].].det(det(det(det(ffff,,,,ssss) ) ) ) --------> [> [> [> [aaaa] | [] | [] | [] | [umaumaumauma].].].].det(det(det(det(ffff,,,,pppp) ) ) ) --------> [> [> [> [asasasas] | [] | [] | [] | [umasumasumasumas].].].].n(n(n(n(mmmm,,,,ssss) ) ) ) --------> [> [> [> [gatogatogatogato] | [] | [] | [] | [ratoratoratorato].].].].

s s s s --------> sn(> sn(> sn(> sn(NNNN), sv(), sv(), sv(), sv(NNNN).).).).sn(sn(sn(sn(NNNN) ) ) ) --------> det(> det(> det(> det(GGGG,,,,NNNN), n(), n(), n(), n(GGGG,,,,NNNN).).).).sv(sv(sv(sv(NNNN) ) ) ) --------> v(> v(> v(> v(NNNN), sn(), sn(), sn(), sn(____).).).).det(det(det(det(mmmm,,,,ssss) ) ) ) --------> [> [> [> [oooo] | [] | [] | [] | [umumumum].].].].det(det(det(det(mmmm,,,,pppp) ) ) ) --------> [> [> [> [osososos] | [] | [] | [] | [unsunsunsuns].].].].det(det(det(det(ffff,,,,ssss) ) ) ) --------> [> [> [> [aaaa] | [] | [] | [] | [umaumaumauma].].].].det(det(det(det(ffff,,,,pppp) ) ) ) --------> [> [> [> [asasasas] | [] | [] | [] | [umasumasumasumas].].].].n(n(n(n(mmmm,,,,ssss) ) ) ) --------> [> [> [> [gatogatogatogato] | [] | [] | [] | [ratoratoratorato].].].].

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 19

Exercício 10. Teste da gramática G5Exercício 10. Teste da gramática G5

Gere e analise todas as frases definidas pela gramática G5.Gere e analise todas as frases definidas pela gramática G5.

n(n(n(n(mmmm,,,,ssss) ) ) ) --------> [> [> [> [gatogatogatogato] | [] | [] | [] | [ratoratoratorato].].].].n(n(n(n(mmmm,,,,pppp) ) ) ) --------> [> [> [> [gatosgatosgatosgatos] | [] | [] | [] | [ratosratosratosratos].].].].n(n(n(n(ffff,,,,ssss) ) ) ) --------> [> [> [> [gatagatagatagata] | [] | [] | [] | [ratarataratarata].].].].n(n(n(n(ffff,,,,pppp) ) ) ) --------> [> [> [> [gatasgatasgatasgatas] | [] | [] | [] | [ratasratasratasratas].].].].v(v(v(v(ssss) ) ) ) --------> [> [> [> [caçoucaçoucaçoucaçou].].].].v(v(v(v(pppp) ) ) ) --------> [> [> [> [caçaramcaçaramcaçaramcaçaram].].].].

n(n(n(n(mmmm,,,,ssss) ) ) ) --------> [> [> [> [gatogatogatogato] | [] | [] | [] | [ratoratoratorato].].].].n(n(n(n(mmmm,,,,pppp) ) ) ) --------> [> [> [> [gatosgatosgatosgatos] | [] | [] | [] | [ratosratosratosratos].].].].n(n(n(n(ffff,,,,ssss) ) ) ) --------> [> [> [> [gatagatagatagata] | [] | [] | [] | [ratarataratarata].].].].n(n(n(n(ffff,,,,pppp) ) ) ) --------> [> [> [> [gatasgatasgatasgatas] | [] | [] | [] | [ratasratasratasratas].].].].v(v(v(v(ssss) ) ) ) --------> [> [> [> [caçoucaçoucaçoucaçou].].].].v(v(v(v(pppp) ) ) ) --------> [> [> [> [caçaramcaçaramcaçaramcaçaram].].].].

Page 20: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Construção de árvore sintática

A árvore sintática de uma sentença é uma árvore em que:

1 – a raiz é rotulada com o símbolo inicial da gramática

2 – as folhas são rotuladas com símbolos terminais da gramática

3 – os demais nós são rotulados com símbolos não-terminais da gramática

4 – a relação entre nós é definida pelas regras de produção da gramática

Exemplo: s s s s --------> sn, sv.> sn, sv.> sn, sv.> sn, sv.

ssss

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 20

s s s s --------> sn, sv.> sn, sv.> sn, sv.> sn, sv.sn sn sn sn --------> det, n.> det, n.> det, n.> det, n.sv sv sv sv --------> v, sn.> v, sn.> v, sn.> v, sn.det det det det --------> [> [> [> [oooo].].].].n n n n --------> [> [> [> [gatogatogatogato] | [] | [] | [] | [ratoratoratorato].].].].v v v v --------> [> [> [> [caçoucaçoucaçoucaçou].].].].

ssss

ratoratoratoratocaçoucaçoucaçoucaçou oooooooo gatogatogatogato

detdetdetdetdetdetdetdet nnnn nnnnvvvv

snsnsnsn svsvsvsv

Page 21: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Construção de árvore sintática

Exemplo 8. Gramática G6 Exemplo 8. Gramática G6

s(s(s(s(s(A,B)s(A,B)s(A,B)s(A,B)) ) ) ) --------> sn(A), sv(B).> sn(A), sv(B).> sn(A), sv(B).> sn(A), sv(B).sn(sn(sn(sn(sn(A,B)sn(A,B)sn(A,B)sn(A,B)) ) ) ) --------> det(A), n(B).> det(A), n(B).> det(A), n(B).> det(A), n(B).sv(sv(sv(sv(sv(A,B)sv(A,B)sv(A,B)sv(A,B)) ) ) ) --------> v(A), sn(B).> v(A), sn(B).> v(A), sn(B).> v(A), sn(B).det(det(det(det(det(o)det(o)det(o)det(o)) ) ) ) --------> [> [> [> [oooo].].].].n(n(n(n(n(A)n(A)n(A)n(A)) ) ) ) --------> [> [> [> [AAAA], { member(], { member(], { member(], { member(AAAA,[,[,[,[gatogatogatogato,,,,ratoratoratorato]) }.]) }.]) }.]) }.v(v(v(v(v(caçou)v(caçou)v(caçou)v(caçou)) ) ) ) --------> [> [> [> [caçoucaçoucaçoucaçou].].].].

s(s(s(s(s(A,B)s(A,B)s(A,B)s(A,B)) ) ) ) --------> sn(A), sv(B).> sn(A), sv(B).> sn(A), sv(B).> sn(A), sv(B).sn(sn(sn(sn(sn(A,B)sn(A,B)sn(A,B)sn(A,B)) ) ) ) --------> det(A), n(B).> det(A), n(B).> det(A), n(B).> det(A), n(B).sv(sv(sv(sv(sv(A,B)sv(A,B)sv(A,B)sv(A,B)) ) ) ) --------> v(A), sn(B).> v(A), sn(B).> v(A), sn(B).> v(A), sn(B).det(det(det(det(det(o)det(o)det(o)det(o)) ) ) ) --------> [> [> [> [oooo].].].].n(n(n(n(n(A)n(A)n(A)n(A)) ) ) ) --------> [> [> [> [AAAA], { member(], { member(], { member(], { member(AAAA,[,[,[,[gatogatogatogato,,,,ratoratoratorato]) }.]) }.]) }.]) }.v(v(v(v(v(caçou)v(caçou)v(caçou)v(caçou)) ) ) ) --------> [> [> [> [caçoucaçoucaçoucaçou].].].].

Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP 21

Exercício 11. Construção de árvore sintáticaExercício 11. Construção de árvore sintática

Digite a gramática G6 e faça as consultas a seguir:

????---- s(A,s(A,s(A,s(A,[o,gato,caçou,o,rato][o,gato,caçou,o,rato][o,gato,caçou,o,rato][o,gato,caçou,o,rato],[]).,[]).,[]).,[]).

????---- s(A,F,[]).s(A,F,[]).s(A,F,[]).s(A,F,[]).

Digite a gramática G6 e faça as consultas a seguir:

????---- s(A,s(A,s(A,s(A,[o,gato,caçou,o,rato][o,gato,caçou,o,rato][o,gato,caçou,o,rato][o,gato,caçou,o,rato],[]).,[]).,[]).,[]).

????---- s(A,F,[]).s(A,F,[]).s(A,F,[]).s(A,F,[]).

Exercício 12. Alteração de gramática para construção de árvore sintáticaExercício 12. Alteração de gramática para construção de árvore sintática

Altere a gramática G5 para que ela construa a árvore das sentenças geradas.Altere a gramática G5 para que ela construa a árvore das sentenças geradas.

Page 22: Processamento de Linguagem Natural - IME-USPslago/pl-12.pdf · Linguagens formais são linguagens artificiais (tais como lógica proposicional ou Pascal) que podem ser matematicamente

Fim