Processamento de Linguagem Natural Prof. Dr. Silvio do Lago Pereira Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo
Introdução Processamento de de linguagem natural (PLN) consiste no no desenvolvimento de de modelos computacionais para para a realização de de tarefas que que dependem de de informações expressas em em uma uma língua natural. Alguns exemplos de aplicação: 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 Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 2
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. Considerações PLN PLN é uma uma vasta vasta área área de de pesquisa que que envolve diversas áreas áreas do do conhecimento. Para Para simplificar, abordaremos apenas alguns conceitos básicos de de análise sintática. Mostraremos como como usar usar conceitos básicos de de linguagens formais para para definir uma uma gramática capaz de de gerar gerar e reconhecer um um conjunto restrito de de frases em em português. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 3
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 Uma gramática é uma uma especificação matemática da da estrutura das das sentenças de de uma 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. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 4
Especificação de gramática usando diferença de listas Considere a gramática a seguir: S = {frase} T = {o, gato, rato, } N = {frase, sujeito, predicado, artigo, substantivo, verbo} R = {frase --> sujeito, predicado ; sujeito --> artigo, substantivo ; predicado --> verbo, artigo, substantivo ; artigo --> [o] ; substantivo --> [gato] [rato] ; verbo --> []} 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 o um substantivo é o símbolo terminal gato ou rato um verbo é o símbolo terminal Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 5
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 o rato pode ser representada como [o,gato gato,ca ou,o,rato rato] Reconhecendo o primeiro artigo em [o,gato,,o,rato], obtemos a lista [gato,,o, Isto pode ser indicado em Prolog com o fato: artigo([o A Analogamente, reconhecendo o primeiro substantivo em [gato,,o,rato], obtemos a lista [,o, Isto pode ser indicado com o fato: gato 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) :- artigo(a,b), substantivo(b,c). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 6
Especificação de gramática usando diferença de listas Após o reconhecimento do sujeito em [o,gato,,o,rato], obtemos a lista [,o, Reconhecendo o verbo nesta lista, obtemos a lista [o, Isto pode ser indicado com o fato: verbo([ca O artigo em [o,rato] pode ser reconhecido pelo fato já declarado anteriormente e, para reconhecer este novo substantivo, podemos usar o fato: rato rato 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) :- verbo(a,b), artigo(b,c), substantivo(c,d). Finalmente, para reconhecer uma frase, podemos usar a regra: frase(a,c) :- sujeito(a,b), predicado(b,c). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 7
Reconhecimento de frases Exemplo 1. 1. Especificação completa da da gramática frase(a,c) frase(a,c) :- :- sujeito(a,b), sujeito(a,b), predicado(b,c). predicado(b,c). sujeito(a,c) sujeito(a,c) :- :- artigo(a,b), artigo(a,b), substantivo(b,c). substantivo(b,c). predicado(a,d) predicado(a,d) :- :- verbo(a,b), verbo(a,b), artigo(b,c), artigo(b,c), substantivo(c,d). substantivo(c,d). artigo([ artigo([ ([o A ([o A ([gato ([gato ([rato ([rato rato rato verbo([ verbo([ ([ca ([ca Exercício 1. 1. Uso Uso da da gramática para para reconhecimento de de frases Digite a gramática do do Exemplo 1 e faça faça as as consultas a seguir:?-?-artigo([o,gato,,o,rato],r).?-?-sujeito([o,gato,,o,rato],r).?-?-frase([o,gato,,o,rato],[]).?-?-frase([o,gato,rato,o,],[]).?-?-frase([o,rato,,o,gato],[]).?-?-frase([gato,,rato],[]). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 8
Reconhecimento de frases /* /* 1 1 */ */ frase(a,c) frase(a,c) :- :- sujeito(a,b), sujeito(a,b), predicado(b,c). predicado(b,c). /* /* 2 2 */ */ sujeito(a,c) sujeito(a,c) :- :- artigo(a,b), artigo(a,b), substantivo(b,c). substantivo(b,c). /* /* 3 3 */ */ predicado(a,d) predicado(a,d) :- :- verbo(a,b), verbo(a,b), artigo(b,c), artigo(b,c), substantivo(c,d). substantivo(c,d). /* /* 4 4 */ */ artigo([ artigo([ ([o A ([o A /* /* 5 5 */ */ ([gato ([gato /* /* 6 6 */ */ ([rato ([rato rato rato /* /* 7 7 */ */ verbo([ verbo([ ([ca ([ca?- frase([o,gato,ca [o,gato,,o,rato] ou,o,rato],[]),[]).?- sujeito([o,gato,ca [o,gato,,o,rato] ou,o,rato],b,b 1 ), predicado(b 1,[]).?- artigo([o,gato,ca [o,gato,,o,rato] ou,o,rato],b,b 2 ), substantivo(b 2,B 1 ), predicado(b 1,[]).?- gato,ca [gato,,o,rato] ou,o,rato],b,b 1 ), predicado(b 1,[]).?- predicado([ca [,o,rato] ou,o,rato],[]),[]).?- verbo([ca [,o,rato] ou,o,rato],b,b 3 ), artigo(b 3,C 3 ), substantivo(c 3,[]).?- artigo([o,rato] [o,rato],c,c 3 ), substantivo(c 3,[]).?- rato] [rato],[]),[]).?- SUCESSO Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 9
Reconhecimento de frases /* /* 1 1 */ */ frase(a,c) frase(a,c) :- :- sujeito(a,b), sujeito(a,b), predicado(b,c). predicado(b,c). /* /* 2 2 */ */ sujeito(a,c) sujeito(a,c) :- :- artigo(a,b), artigo(a,b), substantivo(b,c). substantivo(b,c). /* /* 3 3 */ */ predicado(a,d) predicado(a,d) :- :- verbo(a,b), verbo(a,b), artigo(b,c), artigo(b,c), substantivo(c,d). substantivo(c,d). /* /* 4 4 */ */ artigo([ artigo([ ([o A ([o A /* /* 5 5 */ */ ([gato ([gato /* /* 6 6 */ */ ([rato ([rato rato rato /* /* 7 7 */ */ verbo([ verbo([ ([ca ([ca?- frase([o,gato,rato,o,ca [o,gato,rato,o,] ou],[]),[]).?- sujeito([o,gato,rato,o,ca [o,gato,rato,o,] ou],b 1 ), predicado(b 1,[]).?- artigo([o,gato,rato,o,ca [o,gato,rato,o,] ou],b 2 ), substantivo(b 2,B 1 ), predicado(b 1,[]).?- gato,rato,o,ca [gato,rato,o,] ou],b 1 ), predicado(b 1,[]).?- predicado([rato,o,ca [rato,o,] ou],[]),[]).?- verbo([rato,o,ca [rato,o,] ou],b 3 ), artigo(b 3,C 3 ), substantivo(c 3,[]). FALHA Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 10
Geração de frases Exemplo 1. 1. A gramática completa frase(a,c) frase(a,c) :- :- sujeito(a,b), sujeito(a,b), predicado(b,c). predicado(b,c). sujeito(a,c) sujeito(a,c) :- :- artigo(a,b), artigo(a,b), substantivo(b,c). substantivo(b,c). predicado(a,d) predicado(a,d) :- :- verbo(a,b), verbo(a,b), artigo(b,c), artigo(b,c), substantivo(c,d). substantivo(c,d). artigo([ artigo([ ([o A ([o A ([gato ([gato ([rato ([rato rato rato verbo([ verbo([ ([ca ([ca Exercício 2. 2. Uso Uso da da gramática para para geração de de frases Faça Faça as as consultas a seguir, que que geram todas todas as as frases da da linguagem definida pela pela gramática do do Exemplo 1: 1:?-?- frase(f,[]). frase(f,[]).?-?- forall( forall( frase(f,[]), frase(f,[]), writeln(f) writeln(f) ). ). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 11
Geração de frases Exemplo 1. 1. A gramática completa frase(a,c) frase(a,c) :- :- sujeito(a,b), sujeito(a,b), predicado(b,c). predicado(b,c). sujeito(a,c) sujeito(a,c) :- :- artigo(a,b), artigo(a,b), substantivo(b,c). substantivo(b,c). predicado(a,d) predicado(a,d) :- :- verbo(a,b), verbo(a,b), artigo(b,c), artigo(b,c), substantivo(c,d). substantivo(c,d). artigo([ artigo([ ([o A ([o A ([gato ([gato ([rato ([rato rato rato verbo([ verbo([ ([ca ([ca Exercício 3. 3. Ampliação do do léxico da da gramática Altere a definição da da gramática do do Exemplo 1, 1, adicionando o artigo artigo um um e o verbo verbo assustou. Em Em seguida, faça faça as as consultas a seguir:?-?- frase(f,[]). frase(f,[]).?-?- forall( forall( frase(f,[]), frase(f,[]), writeln(f) writeln(f) ). ). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 12
Notação DCG (Definite Clause Grammar) 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. Exemplo 2. 2. Uma Uma gramática em em notação DCG DCG frase frase --> --> sujeito, sujeito, predicado. predicado. sujeito sujeito --> --> artigo, artigo, substantivo. substantivo. predicado predicado --> --> verbo, verbo, artigo, artigo, substantivo. substantivo. artigo artigo --> --> [o]. [o]. substantivo substantivo --> --> [gato [gato gato] gato] [rato [rato verbo verbo --> --> [ca [ca Exercício 4. 4. Análise do do resultado da da compilação da da notação DCG DCG Digite a gramática do do Exemplo 2, 2, compile e faça faça a consulta a seguir:?-?- listing. listing. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 13
Categorias gramaticais Em PLN, é bastante comum o uso de termos técnicos para designar categorias gramaticais. Alguns destes termos são os seguintes: s : sintagma sentencial (frase) sn : sintagma nominal sv : sintagma verbal det : determinante (artigo) n : nome (substantivo) adj : adjetivo v : verbo vi : verbo intransitivo vt : verbo transitivo adv : advérbio A fim de simplificar a notação, usaremos estes termos na especificação das próximas gramáticas. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 14
Categorias gramaticais Exemplo 3. 3. Gramática G1 G1 s --> --> sn, sn, sv. sv. sn sn --> --> det, det, n, n, adj. adj. sv sv --> --> vi, vi, adv. adv. sv sv --> --> vt, vt, adv, adv, sn. sn. det det --> --> [o]. [o]. n --> --> [gato [gato gato] gato] [rato [rato adj adj --> --> [] [] [gordo [gordo gordo] gordo] [magro [magro magro]. magro]. vi vi --> --> [ca [ca ou] ou] [dormiu [dormiu dormiu]. dormiu]. vt vt --> --> [ca [ca adv adv --> --> [] [] [silenciosamente [silenciosamente silenciosamente]. ]. Exercício 5. 5. Teste da da gramática G1 G1 Gere Gere e analise todas todas as as frases da da linguagem definida pela pela gramática G1. G1. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 15
Dependência de contexto A dependência de de contexto ocorre quando uma uma palavra da da frase frase deve deve concordar com com outras palavras da da mesma frase. frase. Exemplo 4. 4. Gramática G2 G2 s --> --> sn, sn, sv. sv. sn sn --> --> det, det, n. n. sv sv --> --> v, v, sn. sn. det det --> --> [o]. [o]. n --> --> [gato [gato gato] gato] [rato [rato v --> --> [ca [ca Exercício 6. 6. Ampliação da da gramática com com gênero feminino Amplie a gramática G2, G2, adicionando o artigo artigo a e os os substantivos gata e rata. Em Em seguida, gere gere e analise todas todas as as frases definidas pela pela gramática alterada. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 16
Dependência de contexto Exemplo 5. 5. Gramática com com concordância de de gênero G3 G3 s --> --> sn, sn, sv. sv. sn sn --> --> det(g), det(g), n(g). n(g). sv sv --> --> v, v, sn. sn. det(m) det(m) --> --> [o]. [o]. det(f) det(f) --> --> [a]. [a]. n(m) n(m) --> --> [gato [gato gato] gato] [rato [rato n(f) n(f) --> --> [gata [gata gata] gata] [rata [rata rata]. rata]. v --> --> [ca [ca Exercício 7. 7. Gramática com com concordância de de gênero Gere Gere e analise todas todas as as frases definidas pela pela gramática G3. G3. Exercício 8. 8. Ampliação do do léxico Adicione os os artigos indefinidos um um um ume uma uma uma umae gere gere as as frases definidas pela pela gramática. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 17
Dependência de contexto Exemplo 6. 6. Gramática G4 G4 s --> --> sn, sn, sv. sv. sn sn --> --> det(g), det(g), n(g). n(g). sv sv --> --> v, v, sn. sn. det(m) det(m) --> --> [o] [o] [um [um um]. um]. det(f) det(f) --> --> [a] [a] [uma [uma uma]. uma]. n(m) n(m) --> --> [gato [gato gato] gato] [rato [rato n(f) n(f) --> --> [gata [gata gata] gata] [rata [rata rata]. rata]. v --> --> [ca [ca Exercício 9. 9. Ampliação da da gramática com com plural Amplie a gramática G4, G4, adicionando: os os artigos: os, os, uns, uns, as, as, umas os os substantivos: gatos, ratos, gatas, ratas o verbo: caçaram Em Em seguida, gere gere e analise todas todas as as frases definidas pela pela nova nova gramática. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 18
Dependência de contexto Exemplo 7. 7. Gramática G5 G5 s --> --> sn(n), sn(n), sv(n). sv(n). sn(n) sn(n) --> --> det(g,n), det(g,n), n(g,n). n(g,n). sv(n) sv(n) --> --> v(n), v(n), sn(_). sn(_). det(m,s) det(m,s) --> --> [o] [o] [um [um um]. um]. det(m,p) det(m,p) --> --> [os [os os] os] [uns [uns uns]. uns]. det(f,s) det(f,s) --> --> [a] [a] [uma [uma uma]. uma]. det(f,p) det(f,p) --> --> [as [as as] as] [umas [umas umas]. umas]. n(m,s) n(m,s) --> --> [gato [gato gato] gato] [rato [rato n(m,p) n(m,p) --> --> [gatos [gatos gatos] gatos] [ratos [ratos ratos]. ratos]. n(f,s) n(f,s) --> --> [gata [gata gata] gata] [rata [rata rata]. rata]. n(f,p) n(f,p) --> --> [gatas [gatas gatas] gatas] [ratas [ratas ratas]. ratas]. v(s) v(s) --> --> [ca [ca v(p) v(p) --> --> [ca [ca caçaram caçaram aram]. aram]. Exercício 10. 10. Teste da da gramática G5 G5 Gere Gere e analise todas todas as as frases definidas pela pela gramática G5. G5. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 19
Fim