Tema 6 - Moodle USP: e-Disciplinas
Transcript of Tema 6 - Moodle USP: e-Disciplinas
1Profa. Ariane Machado Lima
Professora:Ariane Machado Lima
Tema 6
Linguagens livres de contexto
2Profa. Ariane Machado Lima
Vídeo 1
Gramáticas Livres de Contexto
Profa. Ariane Machado Lima
3
Gramáticas Livres de Contexto
Relembrar conceitos básicos (vídeo 1 do Tema 2)
Profa. Ariane Machado Lima
4
Gramáticas
Definição: uma gramática G é uma quádrupla (V, Σ, S, P), na qual
V é o conjunto de símbolos não-terminais (ou variáveis)
Σ é o conjunto de símbolos terminais
S é o símbolo inicial
P é o conjunto de produções da forma
(Σ U V)* V (Σ U V)* → (Σ U V)*
Profa. Ariane Machado Lima
5
Gramáticas
Definição: uma gramática livre de contexto G é uma quádrupla (V, Σ, S, P), na qual
V é o conjunto de símbolos não-terminais (ou variáveis)
Σ é o conjunto de símbolos terminais
S é o símbolo inicial
P é o conjunto de produções da forma
V → (Σ U V)*
6Profa. Ariane Machado Lima
Linguagens, dispositivos, gramáticas e complexidades
7Profa. Ariane Machado Lima
Linguagens livres de contextoDependências encaixadas/aninhadas
8Profa. Ariane Machado Lima
Linguagens livres de contextoDependências encaixadas/aninhadas
if if if else else else
9Profa. Ariane Machado Lima
Linguagens livres de contextoDependências encaixadas/aninhadas
10Profa. Ariane Machado Lima
Linguagens livres de contextoDependências encaixadas/aninhadas
((a+a) + (a+a))
11Profa. Ariane Machado Lima
Árvore sintática ou
Árvore de derivação=>
Informação estrutural daquele padrão
Árvore sintática ou árvore de derivação
12Profa. Ariane Machado Lima
ExemplosEstrutura secundária de RNAs
13Profa. Ariane Machado Lima
| | ||| |
||
||
Gramática
Árvore sintática Estrutura secundária da molécula
Profa. Ariane Machado Lima
14
Profa. Ariane Machado Lima
16
Exemplos
Sequências que representam imagens que seguem um padrão
<Scene A> → <Objects B> <Background C><Objects B> → <Objects D> <Objects E><Objects D> → <Face L> <Triangle T><Objects E> → <Face X> <Face Y> <Face Z><Background C> → <Floor M> <Wall N>
(((LT)(XYZ))(MN))
17Profa. Ariane Machado Lima
Imagens: representação por quadtreesDescendo no nível de pixels
18Profa. Ariane Machado Lima
Imagens: representação por quadtrees
19Profa. Ariane Machado Lima
Imagens: representação por quadtrees
20Profa. Ariane Machado Lima
Imagens: representação por quadtrees
21Profa. Ariane Machado Lima
Imagens: representação por quadtrees
22Profa. Ariane Machado Lima
Imagens: representação por quadtrees
23Profa. Ariane Machado Lima
Imagens: representação por quadtrees
24Profa. Ariane Machado Lima
Imagens: representação por quadtrees
Note que essa é uma string com informação estrutural
25Profa. Ariane Machado Lima
Imagens: representação por quadtrees
26Profa. Ariane Machado Lima
Mais exemplos de gramáticas -Detecção de estenoses
27Profa. Ariane Machado Lima
Mais exemplos de gramáticas -Detecção de estenoses
28Profa. Ariane Machado Lima
29Profa. Ariane Machado Lima
Mais exemplos de gramáticas -Detecção de estenoses
30Profa. Ariane Machado Lima
Revisão de gramáticas em imagens
31Profa. Ariane Machado Lima
ExemplosProcessamento de texto (ex: XML)
https://www.eworks.de/uploads/pics/2008-05-29_XML_Beispiel2_Schema.GIF
32Profa. Ariane Machado Lima
ExemplosProcessamento de linguagem natural
33Profa. Ariane Machado Lima
Gramática
• Reconhecimento
• Geração
• Árvore sintática
34Profa. Ariane Machado Lima
Fim do vídeo 1
Gramáticas Livres de Contexto
35Profa. Ariane Machado Lima
36Profa. Ariane Machado Lima
Vídeo 2
Ambiguidade
37Profa. Ariane Machado Lima
Análise sintática e ambiguidade
38Profa. Ariane Machado Lima
Derivações É possível que uma mesma cadeia possua
mais de uma derivação
39Profa. Ariane Machado Lima
DerivaçõesGramática:
Cadeia:
Uma derivação possível
40Profa. Ariane Machado Lima
Derivações
Derivação mais à esquerda (sempre o primeiro símbolo não terminal da forma sentencial é substituído primeiro)
Derivação mais à direita (sempre o último símbolo não terminal da forma sentencial é substituído primeiro)
41Profa. Ariane Machado Lima
DerivaçõesGramática:
Cadeia:
Uma derivação possível Mais à esquerda ou mais à direita? Nenhuma das 2
42Profa. Ariane Machado Lima
DerivaçõesGramática:
Cadeia:
Uma derivação possível Mais à esquerda ou mais à direita? Nenhuma das 2
43Profa. Ariane Machado Lima
DerivaçõesGramática:
Cadeia:
Uma derivação possível Mais à esquerda ou mais à direita? Nenhuma das 2
44Profa. Ariane Machado Lima
DerivaçõesGramática:
Derivação mais à esquerda
Cadeia:
Uma derivação possível Mais à esquerda ou mais à direita? Nenhuma das 2
45Profa. Ariane Machado Lima
Análise sintática
Um algoritmo de análise sintática (ou analisador sintático) é tal que, dada uma cadeia e uma gramática, encontra uma derivação (ou alternativamente uma árvore sintática) para a cadeia segundo aquela gramática
Obs: passo necessário para a compilação de um programa em uma dada linguagem de programação
46Profa. Ariane Machado Lima
Ex: gramática para expressões aritméticas simples
47Profa. Ariane Machado Lima
Ex: gramática para expressões aritméticas simples
48Profa. Ariane Machado Lima
Ex: gramática para expressões aritméticas simples
49Profa. Ariane Machado Lima
Ex: gramática para expressões aritméticas simples
Duas árvores sintáticas distintas para a mesma cadeia!!!!
50Profa. Ariane Machado Lima
Ex: gramática para expressões aritméticas simples
Duas árvores sintáticas distintas para a mesma cadeia!!!!Logo, dizemos que essa gramática é AMBÍGUA
51Profa. Ariane Machado Lima
Ambiguidade
52Profa. Ariane Machado Lima
Ambiguidade
Ambiguidade é às vezes indesejável, por exemplo em linguagens de programação
Algumas gramáticas ambíguas podem ser convertidas em não-ambíguas Algumas linguagens são inerentemente ambíguas (só podem ser descritas
por gramáticas ambíguas) Eu vi o menino com uma luneta
53Profa. Ariane Machado Lima
Expressões aritméticas sem ambiguidade
54Profa. Ariane Machado Lima
Expressões aritméticas sem ambiguidade
55Profa. Ariane Machado Lima
O caso if then else<prog> → … <com>...
<com> → ...
<com> → <cond>
<cond> → if <exp> then <com>
<cond> → if <exp> then <com> else <com>
<exp> → …
if <exp> then if <com> then <com> else <com>
56Profa. Ariane Machado Lima
O caso if then else<prog> → … <com>...
<com> → ...
<com> → <cond>
<cond> → if <exp> then <com>
<cond> → if <exp> then <com> else <com>
<exp> → …
if <exp> then if <com> then <com> else <com>
Com qual if o else faz “par”?
57Profa. Ariane Machado Lima
O caso if then else<prog> → … <com>...
<com> → ...
<com> → <cond>
<cond> → if <exp> then <com>
<cond> → if <exp> then <com> else <com>
<exp> → …
if <exp> then if <com> then <com> else <com>
AMBIGUIDADE!!!
58Profa. Ariane Machado Lima
O caso if then else
Solução 1: “manter a ambiguidade” sintática, e resolvê-la por meio de uma convenção: o else deve “fazer par” com o último if (solução adotada por muitas linguagens de programação)
Solução 2: resolver a ambiguidade sintaticamente, tornando a gramática não ambígua
59Profa. Ariane Machado Lima
O caso if then eles – Solução 2<prog> → … <com>...
<com> → ...
<com> → <cond>
<cond> → if <exp> then <com> endif
<cond> → if <exp> then <com> else <com> endif
<exp> → …
if <exp> then if <com> then <com> endif else <com> endif
ou
if <exp> then if <com> then <com> else <com> endif endif
SEM AMBIGUIDADE!!!
60Profa. Ariane Machado Lima
Resolução de ambiguidade Opção 1: Convencionar a forma de desambiguar, e “programar o
analisador sintático” para seguir esse convenção
– Como feito na maioria das linguagens de programação para tratar o caso if/then/else (que casa o else com o if imediatamente anterior)
– Obs: isso não tira a ambiguidade da gramática (simplesmente o analisador sintático se satisfaz com uma árvore ao invés de calcular todas)
Opção 2: tirar a ambiguidade da gramática
– Como feito nas expressões aritméticas– Como feito no caso if/then/else com inclusão da palavra-chave endif
61Profa. Ariane Machado Lima
Fim do vídeo 2
Análise sintática e ambiguidade
62Profa. Ariane Machado Lima
Vídeos 3 e 4
Mais sobre análise sintática e Forma Normal de Chomsky
(algoritmo CYK)
Profa. Ariane Machado Lima
6363
Problema: Dada uma gramática G e uma cadeia w, saber se w є L(G) (isto é, encontrar ao menos uma derivação a partir do símbolo inicial de G.
Para linguagens regulares: o AFD é um reconhecedor eficiente
Para linguagens livres de contexto: até existe uma máquina de estados equivalente (autômatos a pilha que veremos adiante), mas eles não são tão eficientes… dá para fazer melhor com gramáticas
Análise sintática
Profa. Ariane Machado Lima
6464
Análise sintática
Esse não é um tema de nossa disciplina, mas é importante entender o que está envolvido para compreendermos alguns tópicos do curso
Há diferentes estratégias de se programar um analisador sintático, algumas mais simples ou mais complexas
Estratégias dependentes das gramáticas (subclasses de livres-de-contexto)
Tema da disciplina de construção de compiladores
Profa. Ariane Machado Lima
6565
Análise sintática descendente
Top-down
Cada não terminal A teria uma sub-rotina associada para tratar todas as possibilidades de produção que o tenha do lado esquerdo ( A → ...)
66Profa. Ariane Machado Lima
ExemploGramática:
Derivação mais à esquerda
Cadeia:
67Profa. Ariane Machado Lima
ExemploGramática:
Derivação mais à esquerda
Cadeia:
“Recursão à esquerda”: quando eu páro de chamar recursivamente S?
68Profa. Ariane Machado Lima
Exemplo 2
<com> → if (<exp>) <com> else <com>
| while (<exp>) <com>
| { <lista_com> }
69Profa. Ariane Machado Lima
Exemplo 2
<com> → if (<exp>) <com> else <com>
| while (<exp>) <com>
| { <lista_com> }
Fácil de tratar
Profa. Ariane Machado Lima
7070
Análise sintática ascendente
Bottom-up
Profa. Ariane Machado Lima
7171
Análise sintática ascendente
Bottom-up
Umas das estratégias: algoritmo CYK
Profa. Ariane Machado Lima
7272
Algoritmo CYK (Cocke–Younger–Kasami)
Complexidade: Polinomial - O(n3m) onde n é o tamanho da cadeia e m é o número de regras de G
G deve estar na Forma Normal de Chomsky Por que vamos ver esse algoritmo? Como motivação para estudarmos a Formal Normal de Chomsky,
e o teorema de que QUALQUER gramática livre de contexto pode ser convertida para a forma normal de Chomsky
Algoritmo CYK para análise sintática
Profa. Ariane Machado Lima
7373
Uma GLC está na Forma Normal de Chomsky se:
a) Toda regra de produção é da forma
A → BC ou A → a
sendo B,C variáveis, a um símbolo terminal;
b) A variável inicial S não pode aparecer no lado direito de nenhuma regra;
c) Somente a variável inicial pode ter a regra S → .
Forma Normal de Chomsky
Profa. Ariane Machado Lima
75
Exemplo:
• Conversão para FNC:
Gramática original:S → aSb | bSa | SS |
S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Algoritmo CYK para análise sintática
Profa. Ariane Machado Lima
7676
Algoritmo CYK para análise sintáticaProgramação dinâmica: uso de soluções de subproblemas
menores para resolver subproblemas maiores (até chegar à solução do problema original)
Profa. Ariane Machado Lima
7777
Algoritmo CYK para análise sintáticaProgramação dinâmica: uso de soluções de subproblemas
menores para resolver subproblemas maiores (até chegar à solução do problema original)
Tabela nn:
– Para i j, a entrada (i,j) da tabela contém todas as variáveis que geram a subcadeia w
i w
i+1 ... w
j
– Tratam-se subcadeias de tamanhos crescentes (começando de 1)
Profa. Ariane Machado Lima
78
Exemplo: Grámática na FNC:
S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b BCadeia:
a b a a b b
Tabela:
Algoritmo CYK para análise sintáticatable[i,j] conterá os símbolos não terminais capazes de gerar a substring w
i...w
j
Profa. Ariane Machado Lima
7979
Algoritmo CYK para análise sintática
Profa. Ariane Machado Lima
8080
Algoritmo CYK para análise sintática
Profa. Ariane Machado Lima
81
Exemplo:
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintática
Cadeia:a b a a b b
Profa. Ariane Machado Lima
82
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintática
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
8383
Algoritmo CYK para análise sintática
E o restante?
Vamos pensar...
Profa. Ariane Machado Lima
84
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2.Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ
(i,j) = (1,2)
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
85
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ
(i,j) = (1,2)
ab é gerado por AB
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
86
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ
(i,j) = (1,2)
ab é gerado por AB
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
87
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ
(i,j) = (1,2)
ab é gerado por AB
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
88
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ
(i,j) = (2,3) = ba
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
89
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ
(i,j) = (2,3) = ba
ba é gerado por BA
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
90
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ
(i,j) = (2,3) = ba
ba é gerado por BA
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
91
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ
(i,j) = (3,4) = aa
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
92
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ
(i,j) = (3,4) = aa
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
93
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ
(i,j) = (4,5) = ab
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
94
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ
(i,j) = (5,6) = bb
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
95
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 2Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ
(i,j) = (5,6) = bb
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
96
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
97
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!
(i,j) = (1,3) = aba
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
98
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!
(i,j) = (1,3) = aba
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
99
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!
(i,j) = (1,3) = aba
S0? => aba ?
S? => aba ?
Cadeia:a b a a b b
*
*
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
100
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!
(i,j) = (1,3) = aba
S0A => aba ?
SA => aba ?
Cadeia:a b a a b b
*
*
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
101
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!
(i,j) = (1,3) = aba
S0A => aba ?
SA => aba ?
Cadeia:a b a a b b
*
*
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
102
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!
(i,j) = (1,3) = aba
S0A => aba ?
SA => aba ?
Cadeia:a b a a b b
*
*
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
103
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!
(i,j) = (1,3) = aba
AS0 => aba ?
AS => aba ?
Cadeia:a b a a b b
*
*
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
104
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!
(i,j) = (1,3) = aba
AS0 => aba ?
AS => aba ?Não, então fica só o U mesmo...
Cadeia:a b a a b b
*
*
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
105
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!
(i,j) = (1,3) = aba
Cadeia:a b a a b b
w1...w3 = w1...w2 . w3...w3 ou w1...w1 . w2...w3
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
106
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 3 Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora os dois primeiros símbolos devem ser gerados por Y, ou os dos últimos por Z. Tenho que testar as DUAS possibilidades!
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
107
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 4 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora a partição em YZ pode ocorrer após o primeiro símbolo, o segundo ou terceiro! Tenho que testar as TRÊS possibilidades!
Cadeia:a b a a b b
w1...w4 = w1...w1 . w2...w4 ou w1...w2 . w3...w4 ou w1...w3 . w4...w4
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
108
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 4 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora a partição em YZ pode ocorrer após o primeiro símbolo, o segundo ou terceiro! Tenho que testar as TRÊS possibilidades!
Possibilidade 1
AU
Cadeia:a b a a b b
w1...w4 = w1...w1 . w2...w4 ou w1...w2 . w3...w4 ou w1...w3 . w4...w4
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
109
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 4 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora a partição em YZ pode ocorrer após o primeiro símbolo, o segundo ou
terceiro! Tenho que testar as TRÊS possibilidades!
Possibilidade 2
Nada gera aa
Cadeia:a b a a b b
w1...w4 = w1...w1 . w2...w4 ou w1...w2 . w3...w4 ou w1...w3 . w4...w4
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
110
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 4 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora a partição em YZ pode ocorrer após o primeiro símbolo, o segundo ou
terceiro! Tenho que testar as TRÊS possibilidades!
Possibilidade 3
UA
Cadeia:a b a a b b
w1...w4 = w1...w1 . w2...w4 ou w1...w2 . w3...w4 ou w1...w3 . w4...w4
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
111
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 4 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora a partição em YZ pode ocorrer após o primeiro símbolo, o segundo ou
terceiro! Tenho que testar as TRÊS possibilidades!
E ASSIM POR DIANTE….
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
Profa. Ariane Machado Lima
112112
Algoritmo CYK para análise sintática
Profa. Ariane Machado Lima
113
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 4 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora a partição em YZ pode ocorrer após o primeiro símbolo, o segundo ou
terceiro! Tenho que testar as TRÊS possibilidades!
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
E aí, o que eu faço quando terminar de preencher a tabela?
Profa. Ariane Machado Lima
114
Exemplo:
a b a a b b
a A S0, S U S0, S
b B S0, S U S0, S T
a A S0, S
a A S0, S T
b B
b B
Tabela:
Algoritmo CYK para análise sintáticaVamos analisar agora substrings de tamanho 4 (seta verde)Por ser tamanho > 1, a variável que a gera a faz por meio de uma produção no formato X → YZ Mas agora a partição em YZ pode ocorrer após o primeiro símbolo, o segundo ou
terceiro! Tenho que testar as TRÊS possibilidades!
Cadeia:a b a a b b
Gramática na FNC:S0 → | AT | BU | SS | AB | BA S → AT | BU | SS | AB | BAT → SBU → SAA → aB → b
E aí, o que eu faço quando terminar de preencher a tabela?
Se (1,n) contiver o símbolo inicial, então a cadeia é gerada pela gramática...
Profa. Ariane Machado Lima
115115
Algoritmo CYK para análise sintática
116Profa. Ariane Machado Lima
Fim do vídeo 4
Algoritmo CYK
117Profa. Ariane Machado Lima
Para quem quiser exercícios... Exercícios do livro do Sipser (cap 2): 2.1, 2.3, 2.4, 2.6,
2.9 Obs: lembrem-se que o símbolo inicial de uma
gramática é o símbolo do lado esquerdo da primeira produção da gramática
118Profa. Ariane Machado Lima
Forma Normal de Chomsky Lembrando que, para o uso do algoritmo CYK, a
gramática precisa estar na forma normal de Chomsky A boa notícia é que há um teorema que diz que toda
GLC pode ser convertida na Forma Normal de Chomsky (prova no fim do Cap 2.1 do livro de Sipser)
E quem ainda quiser fazer um exercício sobre isso, faça o 2.14 do Sipser.
119Profa. Ariane Machado Lima
Vídeo 5
Algoritmo de Earley
Profa. Ariane Machado Lima
120
Analisador sintático CYK
• Uso universal (algoritmo independe da gramática) • Estratégia ascendente• Complexidade O(n3) (SEMPRE) • Exige gramática na forma normal de Chomsky:
A BC, A N, B N, C NA a, A N, a S
Profa. Ariane Machado Lima
121
Analisador sintático de Earley
• Uso universal (algoritmo independe da gramática) • Estratégia descendente, mas preenche uma tabela
de forma ascendente• Gramática não precisa estar em uma forma
específica• Identifica diferentes árvores de derivação• Complexidade O(n3) para gramáticas ambíguas,
mas O(n2) ou O(n) para certas gramáticas
122Profa. Ariane Machado Lima
Analisador sintático de Earley• Uso de um símbolo especial indicando fim de cadeia (ex: “|-”
→ cadeia a+a*a|-)• Para uma cadeia de entrada de tamanho n (n+1 contando
com o símbolo |-), uma tabela de n+2 colunas será criada, cada uma correspondendo a um ponto da análise da cadeia
123Profa. Ariane Machado Lima
• - Cada coluna terá vários estados da análise, cada um correspondendo a: Uma produção da gramática A posição desta produção em que se
encontra a análise A coluna que originou aquela produção Cadeia (de tamanho k) de símbolos
look-ahead (terminais que sucedem aquela produção)
Analisador sintático de Earley
124Profa. Ariane Machado Lima
Exemplo:
125Profa. Ariane Machado Lima
Inicialização
126Profa. Ariane Machado Lima
Inicialização
produção
Ponto de análise da produção
lookahead Coluna de origem
127Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
128Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna
129Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna
130Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna
131Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna
132Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna
133Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna
134Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna
135Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna
136Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Predictor:Depois do ponto vem um não terminal, então preciso “abri-lo”, trazendo suas produções para essa mesma coluna
137Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
138Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Scanner:Depois do ponto vem um terminal. Se ele bater com o símbolo atual da cadeia de entrada então posso evoluir na análise:- avanço o ponto da produção e a levo para a próxima coluna
139Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Scanner:Depois do ponto vem um terminal. Se ele bater com o símbolo atual da cadeia de entrada então posso evoluir na análise:- avanço o ponto da produção e a levo para a próxima coluna
140Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
141Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Completer:O ponto está no final da produção. Então posso evoluir na análise do não terminal reconhecido (lado esquerdo da produção) : - trago para essa coluna as produções (daquele estado de origem em que aquele não-terminal está logo depois do ponto)
142Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Completer:O ponto está no final da produção. Então posso evoluir na análise do não terminal reconhecido (lado esquerdo da produção) : - trago para essa coluna as produções (daquele estado de origem em que aquele não-terminal está logo depois do ponto)
143Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Completer:O ponto está no final da produção. Então posso evoluir na análise do não terminal reconhecido (lado esquerdo da produção) : - trago para essa coluna as produções (daquele estado de origem em que aquele não-terminal está logo depois do ponto)
144Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Completer:O ponto está no final da produção. Então posso evoluir na análise do não terminal reconhecido (lado esquerdo da produção) : - trago para essa coluna as produções (daquele estado de origem em que aquele não-terminal está logo depois do ponto)
145Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Completer:O ponto está no final da produção. Então posso evoluir na análise do não terminal reconhecido (lado esquerdo da produção) : - trago para essa coluna as produções (daquele estado de origem em que aquele não-terminal está logo depois do ponto)
146Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Completer:O ponto está no final da produção. Então posso evoluir na análise do não terminal reconhecido (lado esquerdo da produção) : - trago para essa coluna as produções (daquele estado de origem em que aquele não-terminal está logo depois do ponto)
147Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Completer:O ponto está no final da produção. Então posso evoluir na análise do não terminal reconhecido (lado esquerdo da produção) : - trago para essa coluna as produções (daquele estado de origem em que aquele não-terminal está logo depois do ponto)
148Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Scanner:Depois do ponto vem um terminal. Se ele bater com o símbolo atual da cadeia de entrada então posso evoluir na análise:- avanço o ponto da produção e a levo para a próxima coluna
149Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
150Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Scanner:Depois do ponto vem um terminal. Se ele bater com o símbolo atual da cadeia de entrada então posso evoluir na análise:- avanço o ponto da produção e a levo para a próxima coluna
151Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
Scanner:Depois do ponto vem um terminal. Se ele bater com o símbolo atual da cadeia de entrada então posso evoluir na análise:- avanço o ponto da produção e a levo para a próxima coluna
152Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scanner
E assim sucessivamente...
153Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scannerSe na coluna n+2 está o estado
então aceite
154Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scannerSe na coluna n+2 está o estado
então aceite
E para reconstruir a árvore sintática?
155Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scannerSe na coluna n+2 está o estado
então aceite
E para reconstruir a árvore sintática?
Completer deve deixar rastro
156Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scannerSe na coluna n+2 está o estado
então aceite
E para reconstruir a árvore sintática?
Completer deve deixar rastroBasta seguir
o processo contrário dos completersE
E + T
157Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scannerSe na coluna n+2 está o estado
então aceite
E para reconstruir a árvore sintática?
Completer deve deixar rastroBasta seguir
o processo contrário dos completersE
E + T
T T * P
158Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scannerSe na coluna n+2 está o estado
então aceite
E para reconstruir a árvore sintática?
Completer deve deixar rastroBasta seguir
o processo contrário dos completersE
E + T
T T * P
P
a
159Profa. Ariane Machado Lima
Para cada coluna j = 0 até n+1 Para cada estado (linha) s
Predictor, completer ou scannerSe na coluna n+2 está o estado
então aceite
E para reconstruir a árvore sintática?
Completer deve deixar rastroBasta seguir
o processo contrário dos completersE
E + T
T T * P
P
a
P
a
a
160Profa. Ariane Machado Lima
Fim do vídeo 5
Algoritmo de Earley
161Profa. Ariane Machado Lima
Vídeo 6
Gramáticas estocásticas
162Profa. Ariane Machado Lima
Gramáticas estocásticas
163Profa. Ariane Machado Lima
Gramáticas estocásticas
164Profa. Ariane Machado Lima
Gramáticas estocásticas
165Profa. Ariane Machado Lima
Gramáticas estocásticas
166Profa. Ariane Machado Lima
Gramáticas estocásticas
167Profa. Ariane Machado Lima
Gramáticas estocásticas
P(x, t | G) = produto das probabilidades das produções usadas na derivação (árvore sintática) t de x (dadas pela gramática G)
P(x | G) = ∑i P(x, t
i |G) se a gramática for ambígua
Profa. Ariane Machado Lima
168
Gramáticas Estocásticas
Definição: uma gramática estocática G é uma quíntupla (V, Σ, S, P, ρ), onde), onde
V é o conjunto de símbolos não-terminais (variáveis)
Σ é o conjunto de símbolos terminais
S é o símbolo inicial
P é o conjunto de produções da forma
(Σ U V)* V (Σ U V)* → (Σ U V)*
ρ), onde é o conjunto de distribuições de probabilidades sobre as produções de mesmo lado esquerdo
∑i ρ), onde(α → βi) = 1
169Profa. Ariane Machado Lima
Análise sintática
• Analisadores sintáticos: programas que, dados uma gramática G e uma sequência s, solta:• Se a sequência s é ou não reconhecida pela gramática
G (determinístico - não estocástico)• Qual a probabilidade da sequência s dada G
(estocástico)• Qual(is) a(s) árvore(s) sintática(s) de s dada G (uma, só
a mais provável ou todas)
170Profa. Ariane Machado Lima
Estrutura secundária e gramáticas
| | ||| |
||
||
171Profa. Ariane Machado Lima
Estrutura secundária e gramáticas
| | ||| |
||
||
Mas note que a Forma Normal de Chomsky nos atrapalha nesse caso!
173Profa. Ariane Machado Lima
Software para análise sintática (não probabilística)
• Geradores de analisadores sintáticos gerais: Descendentes, gramáticas LL(k): ANTLR (Another Tool
for Language Recognition) e JavaCC Ascendentes, como o YACC (Yet Another Compiler-
Compiler): gramáticas LALR• Geradores mais simples: pyparsing• Dedicadas a processamento de linguagem natural
(rotinas extras para esse fim): NLTK, Spacy, Stanford CoreNLP Python, TextBlob, Gensim, Pattern, Polyglot, PyNLPl, Vocabulary
174Profa. Ariane Machado Lima
Análise sintática probabilística
• Implementações disponibilizadas, por ex no GitHub (ex: CYK, Earley)
• Na próxima aula discutiremos esses algoritmos, assim como algoritmos de aprendizados de GLC Estocásticas (estimação de probabilidades e inferência das regras)
175Profa. Ariane Machado Lima
Fim do vídeo 6
Gramáticas estocásticas
176Profa. Ariane Machado Lima
ReferênciasDURBIN, R.; EDDY, S. R.; KROGH, A. Biological Sequence Analysis: Probabilistic Models of Proteins and Nucleic Acids. Cambridge University Press, 2002. Cap 9
EARLEY, J. An Efficient Context-Free Parsing Algorithm. Communications of the ACM, vol 13, n.2, p 94-102, 1970.
RAMOS, M. V. M.; NETO, J. J.; VEJA, I. S. Linguagens Formais: Teoria, Modelagem e Implementação. Ed. Bookman, 2009.
SIPSER, M. Introdução à Teoria da Computação. Ed. Thomson, 2007