A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Ilson Wilmar Rodrigues Filho, Dr. João Bosco da Mota Alves, Dr.

Apresentações semelhantes


Apresentação em tema: "Ilson Wilmar Rodrigues Filho, Dr. João Bosco da Mota Alves, Dr."— Transcrição da apresentação:

1 Ilson Wilmar Rodrigues Filho, Dr. João Bosco da Mota Alves, Dr.
Processamento de Linguagem Natural Ilson Wilmar Rodrigues Filho, Dr. João Bosco da Mota Alves, Dr.

2 Bibliografia BARROS, F. A.; ROBIN, J. – Processamento de Linguagem Natural. Departamento de Informática, Universidade Federal de Pernambuco, Recife, março de 1997. FERNANDO, P.; MENEZES, B. – Linguagens Formais e Autômatos. Porto Alegre: Instituto de Informática da UFRGS: Sagra Luzzatto Editores, GAL, A.; LAPALME, G. – Prolog for Natural Language Processing. John Wiley & Sons Ltd., 1991. GAZDAR, G.; MELLISH, C. – Natural Language in Prolog. Addison- Weslwy Publishing Company, 1989, JOSÉ NETO, J. – Introdução à Compilação. Rio de Janeiro. LTC – Livros Técnicos e Científicos Editora S. A., 1987.

3 Bibliografia MONARD, M. C. & NICOLETTI, M. do C. – Programas Prolog para Processamento de Listas e Aplicações, Janeiro de 1993 – Versão 2.0 MOREIRA, N. – Processamento de Linguagem Natural, Mestrado de Lingüística Portuguesa Descritiva, Faculdade de Letras da Universidade do Porto NUNES, M. das G. V. at al. – Introdução ao Processamento das Línguas Naturais. São Carlos: Notas Didáticas do ICMC No. 38, Instituto de Ciências Matemáticas e de Computação, 1999. PINERO, R. B. – Lenguajes Formales y Autómatas. Centro de Inteligencia Artificial, Instituto Tecnológico y de Estudios Superiores de Monterrey. Enero de 1997. TOWSEND, C. – Técnicas Avançadas em Turbo Prolog, Rio de Janeiro: Editora Campus, 1990.

4 Avaliação Exercícios para serem resolvidos individualmente e um
trabalho (que pode ser feito em grupo) que deve ser entregue no dia da apresentação (seminário). Média Final = N1 x N2 x N3 x 0.3 onde: N1 = Média Aritmética dos exercícios N2 = Nota do Trabalho N3 = Nota da Apresentação do trabalho (seminário)

5 Processamento de Linguagem Natural
O processamento de linguagem natural é o estudo dos sistemas computacionais para compreensão e geração de línguas naturais faladas e escritas.

6 Divisões do PLN lingüística computacional ou processamento de linguagem natural: tratamento da língua escrita. reconhecimento e síntese de voz: tratamento da língua falada.

7 Outras Denominações Processamento de Linguagem Natural:
Inteligência Artificial Lingüística Computacional: Lingüística Outros termos propostos: Processamento Computacional das Línguas, Engenharia da Linguagem. Especificamente para a língua portuguesa tem sido sugerido: Processamento Computacional do Português, Processamento Computacional da Língua Portuguesa.

8 Histórico PLN nasceu com o computador:
2a Guerra: militares americanos tinham interesse de traduzir automaticamente conversações gravadas dos russos; A comunidade científica precisava de traduções de trabalhos estrangeiros - a cada dia fazia-se novas descobertas científicas.

9 Tradução Automática A possibilidade de fazer tradução automática de publicações sobre tecnologia e ciência deixou os cientistas animados. Essa foi uma das razões para que pesquisas fossem financiadas na área.

10 Primeiros Sistemas de PLN
Primeiros trabalhos sobre PLN: tradução automática - começaram em 1946. Eram trabalhos sobre tradução russo-inglês.  tradução palavra por palavra;  traduções: listas de palavras chaves.

11 Histórico  1948: Preocupação com as regras de construção de frases foi levada em consideração (num trabalho do inglês Pichens).  Primeiro congresso sobre tradução automática foi realizado no ano de 1952, nos EUA, no MIT – Massachusetts Institute of Technology com a participação de 18 pesquisadores.

12 O Relatório ALPAC  Relatório ALPAC (Automatic Language Processing Advisory Comitee) - relatório encomendado pelo governo norte-americano à Academia de Ciências daquele país sobre as pesquisas em tradução automática. O relatório publicado em 1966 teve um teor fortemente negativo que provocou o corte das verbas de financiamento

13 Renascimento do Interesse na Tradução Automática
 Anos 80: renascimento do interesse na tradução automática, na Europa, em função da criação da Comunidade Européia.  1982: projeto EUROTRA - sistema de tradução automática para nove línguas de países que constituíam a Comunidade Européia.

14 Modelos Conceituais baseados em regras;  Modelos formais ou modelos
 Modelos estatísticos;  Modelos conexionistas

15 Áreas de Aplicação de técnicas de PLN
(1) Acesso a banco de dados; (2) Recuperação de informação; (3) Extração de informação; (4) Tradução automática; (5) Geração de resumos.

16 Acesso a Banco de Dados  Acesso a banco de dados são feitos usualmente utilizando-se “query languages”

17 Recuperação de Informação
 Recuperação de Informação é o estudo e desenvolvimento de técnicas que permitam encontrar documentos relevantes de uma coleção de documentos.

18 Recuperação de Informação

19 Extração de Informação
 Na extração de informação procura-se por informações diretamente nos textos , mostrando a informação ao invés de documentos.  Técnicas utilizadas: baseadas na busca de determinadas palavras chaves (denominadas de tags), tais como - Nome de pessoas - Nome de empresas;

20 Tradução Automática computador de frases dadas numa língua para
 Tradução automática é a tradução por computador de frases dadas numa língua para outra língua.  Os primeiros trabalhos utilizavam dicionários bilingües e faziam tradução palavra a palavra.  A teoria lingüística começou a ser incorporada nos sistemas de tradução automática com os trabalhos de Noam Chomsky.

21 Gramática  Segundo Chomsky, o conhecimento que o falante de uma língua natural teria da mesma poderia ser descrita através de um conjunto finito de regras.  Tais regras seriam universais, ou seja, valeriam para todas as línguas. Elas poderiam gerar um número infinito de frase de uma língua.  Uma frase seria gramatical (pertencente à língua) ou agramatical (não pertencente à língua).

22 Problemas em Processamento de Linguagem Natural
 Homonímia Lexical: um exemplo clássico é: manga = parte de uma peça de vestuário destinada a cobrir os braços / manga = fruto da mangueira

23 Problemas em Processamento de Linguagem Natural
 Ambigüidade sintática: a sentença aceita duas análises sintáticas diferentes. Exemplo: Viajando pela primeira vez para a Europa, cruzei com um grupo de jovens brasileiros. Quem viajou pela primeira vez? Eu ou o grupo de jovens brasileiros?

24 Problemas em Processamento de Linguagem Natural
 Ambigüidade de Escopo: Percebe-se às vezes que a sentença indica dois ou mais escopos. Exemplos: Apesar de ser exímio advogado, o procurador da Universidade não cumpre todas as disposições estatutárias. Essa sentença poderia significar que: - O procurador descumpre todas as disposições (Des- cumpre todas = tem por norma violar a legislação) O procurador cumpre as disposições, mas não todas (não tem por norma violar a legislação, mas comete falhas).

25 Problemas em Processamento de Linguagem Natural
 Diferentes correferências possíveis: é a compatibilidade de um anafórico com dois ou mais antecedentes distintos, também chamada de ambigüidade anafórica. Exemplo: O ladrão entrou na casa do prefeito e tirou toda a sua roupa.

26 Conhecimento do Mundo  A compreensão da linguagem natural implica num determinado grau de conhecimento do mundo. Exemplo: "as mães com filhos menores de dez anos". Tal expressão poderia er as seguintes representações lógicas: 1. {x | З y, M(x,y) ^ i(y) < 10}; 2. {x | З y, M(x,y) ^ i(x) < 10}; 3. {x | З (y,z), M(x,y) ^ M(x,z) ^ i(y) < 10} ^ i(x) < 10} onde: M(x,y) significa x é mãe de y; i(x) significa idade de x; i(y) significa idade de y.

27 Fases do Desenvolvimento de um Sistema de PLN
(1) Análise morfológica; (2) Análise Sintática; (3) Análise Semântica; (4) Análise do Discurso; (5) Análise Pragmática.

28 Análise Morfológica substantivos artigos adjetivos advérbios
 É o estudo da estrutura e da classificação das palavras em função do uso: substantivos artigos adjetivos advérbios pronomes preposições verbos conjunção numerais interjeição

29 Regras morfológicas construir tem como variantes, entre outras,
 As línguas naturais possuem regras morfológicas que produzem as possíveis variantes de cada palavra. Exemplo: construir tem como variantes, entre outras, construção e construído. Um pedaço da palavra (constru) se repete nas demais, que receberam a aposição do que chamamos de sufixos. Este pedaço de palavra que se mantém nas variantes, chamamos de lexemas.

30 Análise Sintática  É o estudo das unidades básicas da
linguagem - as sentenças.  Na fase da análise sintática, o sistema de processamento de linguagem natural verifica se a seqüência das palavras nas sentenças são válidas para a gramática utilizada.

31 Análise Semântica processamento de linguagem natural podem ser
 Durante a análise semântica, utiliza-se a estrutura gerada durante a análise sintática para construir outras estruturas que representem o significado das sentenças.  Formalismos utilizados nesta fase do processamento de linguagem natural podem ser classificados em fracos e fortes:  Formalismos fracos: redes semânticas e frames;  Formalismos fortes: gramáticas de casos, dependência conceitual e scripts.

32 Análise do Discurso  Análise do discurso é a identificação da estrutura do discurso. O discurso é também organizado em unidades constituídas por um mais elementos denominados segmentos do discurso.

33 Análise Pragmática  Na análise pragmática são estudados os enunciados, ou seja, os significados das frases, sob o ponto de vista dos interlocutores. Esta análise é de suma importância principalmente nos diálogos onde é preciso determinar as intenções dos interlocutores.

34 Fundamentos Matemáticos para o Processamento de Linguagem Natural

35 Conjuntos  Conjunto é uma coleção de objetos, distintos, de qualquer espécie (definição intuitiva).  Aos objetos do conjunto denominamos elementos do conjunto.  Os elementos do conjunto distinguem-se uns dos outros, ou seja, não há repetição de elementos no conjunto.

36 Relação de Pertinência entre Elemento e Conjunto
 Vamos supor o conjunto das vogais:: V = {a,e,i,o,u}  Para indicar que u pertence ao conjunto V e que b não pertence, escrevemos: u  V b  V

37 Relação de Pertinência entre Elemento e Conjunto
 Em Prolog, vamos utilizar listas: V = [a,e,i,o,u] pertence(u,[a,e,i,o,u]). not(pertence(b,[a,e,i,o,u]).

38 Listas  Uma lista em Prolog é uma coleção de elementos separados por vírgulas e dentro de colchetes. O primeiro elemento da lista é denominado cabeça de lista e os demais elementos formam uma lista denominada cauda da lista.

39 A Relação pertence/2  a relação pertence/2 pode ser estabelecida através de duas regras: (1) Um objeto pertence a uma lista se ele for a cabeça da lista; (2) Um objeto pertence a uma lista se ele pertence à cauda da lista.

40 pertence/2 em Visual Prolog
Domains stringlist = string* Predicates nondeterm pertence(string,stringlist) Clauses pertence(X,[X|_]). pertence(X,[_|T]):- pertence(X,T).

41 pertence/2 - Exemplos yes  Goal pertence(u,[a,e,i,o,u]).
 Goal not(pertence(b,[a,e,i,o,u])).

42 pertence/2 - Exemplos dado conjunto (por exemplo: [a,e,i,o,u]),
 Se quisermos saber quais os objetos de um dado conjunto (por exemplo: [a,e,i,o,u]), perguntaríamos em Prolog: Goal pertence(X,[a,e,i,o,u]). X = a X = e X = i X = o X = u 5 Solutions

43 Conjunto Vazio conjunto vazio, é denotado por {} ou .
 Um conjunto sem objetos, denominado conjunto vazio, é denotado por {} ou . Para utilização de Prolog vamos representar o conjunto vazio por [], ou seja,  = []

44 Subconjunto  Um dado conjunto A é subconjunto de B se e somente se todo elemento de A pertence também a B, que se representa como: A  B e dizemos que o conjunto A está contido no conjunto B, ou ainda que B contém A: B  A

45 Subconjunto em Prolog, teremos: esta_contido(A,B). contem(B,A).

46 esta_contido/2 Domains stringlist = string* Predicates
nondeterm esta_contido(stringlist,stringlist nondeterm pertence(string,stringlist) Clauses esta_contido([],_). esta_contido([H1|T1],L2):- pertence(H1,L2), esta_contido(T1,L2).

47 esta_contido/2 - Exemplos
Goal esta_contido([],[c,b,a]). yes Goal esta_contido([a,b],[c,b,a]). Goal esta_contido([a,b],[b,a]). Goal esta_contido([b,a],[c,b,a]).

48 contem/2 Clauses Domains stringlist = string* Predicates
nondeterm contem(stringlist,stringlist) nondeterm esta_contido(stringlist,stringlist) Clauses contem(B,A): esta_contido(A,B).

49 contem/2 - Exemplos Goal contem([a,b],[]). yes
Goal A = [a], B = [a,e,i,o,u], contem(B,A). A = [a] B = [a,e,i,o,u]

50 eh_subconjunto/2  Para verificar se um conjunto A é subconjunto de um conjunto B podemos criar o predicado eh_subconjunto/2, que responda sim ou não (yes/no) caso A seja subconjunto ou não de B. Basta utilizar uma das relações definidas (esta_contido/2 ou contem/2)

51 Igualdade de Conjuntos
 Dois conjuntos A e B são iguais quando qualquer elemento que pertence a A pertence também a B e vice-versa (todo elemento que pertence a B pertence também a A), isto é: A = B, se, e somente se, A  B e B  A.

52 igual/2 Predicates nondeterm igual(stringlist,stringlist) Clauses
igual(A,B):- esta_contido(A,B), esta_contido(B,A).

53 igual/2 - Exemplos Goal A = [a,b,c], B = [b,c,a], igual(A,B).
1 Solution Goal igual([a,b,c],[b,a,c]). yes OBS: Note-se pelos exemplos acima que a ordem dos elementos dentro do conjunto não importa. Dados dois conjuntos, se eles tiverem os mesmos objetos, eles são considerados iguais.

54 Conjunto Potência 2A = {S | S  A}
 Seja A um conjunto. Definimos como conjunto potência de A ou conjunto das partes de A, ao conjunto cujos elementos são os subconjuntos de A. Sua denotação é: 2A. Assim: 2A = {S | S  A}

55 subconjunto/2  Para definir em Prolog um predicado que dê todos os subconjuntos de um conjunto dado formando o seu conjunto potência, vamos definir um predicado que gere subconjuntos que vamos denominar de subconjunto/2.

56 subconjunto/2 - regras 1 - Se A é um conjunto vazio ele só pode gerar um conjunto vazio B; 2 - Se o primeiro elemento do conjunto A estiver também no subconjunto B (vamos colocá-lo na cabeça de B, pois como não importa a ordem dos elementos de um conjunto vamos escolher esta ordem preferencialmente), então a cauda de B é subconjunto da cauda de A; 3 - Se o primeiro elemento do conjunto A não está no subconjunto gerado B, então B é um subconjunto da cauda de A.

57 subconjunto/2 - regras  Esta três regras são escritas da seguinte maneira em Prolog: (1) subconjunto([],[]). (2) subconjunto([CabecaA|CaudaA],[CabecaA|CaudaB]):- subconjunto(CaudaA,CaudaB). (3) subconjunto([_|CaudaA],ConjuntoB):- subconjunto(CaudaA,ConjuntoB).

58 subconjunto/2 - regras em Visual Prolog
Predicates nondeterm subconjunto(stringlist,stringlist) Clauses subconjunto([],[]). subconjunto([CabecaA|CaudaA],[CabecaA|CaudaB]):- subconjunto(CaudaA,CaudaB). subconjunto([_|CaudaA],ConjuntoB):- subconjunto(CaudaA,ConjuntoB).

59 subconjunto/2 - Exemplo
Goal subconjunto([a,s,d],SUB). SUB = [a,s,d] ; SUB = [a,s] ; SUB = [a,d] ; SUB = [a] ; SUB = [s,d] ; SUB = [s] ; SUB = [d] ; SUB = '[]' ; 8 Solutions

60 Conjunto Potência  O conjunto potência que é o conjunto formado por
todos os subconjuntos de um dado conjunto poderá ser agora definido como: Domains stringlist = string* llstring = stringlist* Predicates nondeterm potencia(stringlist,llstring) Clauses potencia([],[[]]). potencia(A,P):- findall(X,subconj(A,X),P).

61 Conjunto Potência - Exemplo
Goal potencia([a,s,d],P). P = [[a,s,d],[a,s],[a,d],[a],[s,d],[s],[d],'[]'] 1 Solution

62 Número de Elementos do Conjunto Potência
 O número de elementos do conjunto das partes de um conjunto (ou conjunto potência) de n elementos é 2n.  Se A tiver 3 elementos, o conjunto das partes de A terá 23 = 8 elementos.

63 Exercício  Determinar em Visual Prolog o tamanho do conjunto potência definindo o predicado tamanho/2

64 Solução Predicates tamanho(llstring,integer) Clauses tamanho([],0).
tamanho([_|Cauda],TAM):- tamanho(Cauda,TamCauda), TAM = TamCauda + 1.

65 Operações com Conjuntos
 Com conjuntos pode-se executar algumas operações básicas tais como: união; intersecção; diferença..

66 União de Conjuntos  Dados dois conjuntos A e B, a união destes conjuntos, é o conjunto formado com todos os elementos que pertencem a A ou a B.  A união é representada por: A  B

67 União de Conjuntos - Regras
1. A união de um conjunto vazio com um conjunto qualquer A é o próprio conjunto A; 2. Dados dois conjuntos A e B, se a cabeça de A também pertence a B a união de A com B será igual à união da cauda de A com B pois como a cabeça de A também pertence a B, este elemento aparecerá no conjunto formada pela união de B com a cauda de A; 3. Se a cabeça de A não pertencer a B o conjunto união terá como cabeça a cabeça de A e como cauda a união da cauda de A como o conjunto B.

68 Exercício  Construir em Prolog as regras que definem a união de dois conjuntos

69 Solução Predicates nondeterm uniao(stringlist,stringlist,stringlist).
Clauses uniao([],C,C). uniao([CabecaA|CaudaA],ConjuntoB,ConjuntoUniao):- pertence(CabecaA,ConjuntoB),!, uniao(CaudaA,ConjuntoB,ConjuntoUniao). uniao([CabecaA|CaudaA],ConjuntoB,[CabecaA|CaudaUniao]):- not(pertence(CabecaA,ConjuntoB)), uniao(CaudaA,ConjuntoB,CaudaUniao).

70 União de Conjuntos - Exemplos
Goal uniao(["3","5","7"],["1","2","4","6"],UNIAO). UNIAO = ["3","5","7","1","2","4","6"] 1 Solution Goal uniao(["1","2","3"],["2","3","4","5"],U). U = ["1,"2","3","4","5"] i Solution

71 Intersecção de Conjuntos
 Dados dois conjuntos A e B, a intersecção de A e B é o conjunto formado com os elementos que pertencem a ambos ao mesmo tempo. A intersecção é indicada por: A  B

72 Intersecção de Conjuntos - Regras
1. A interseção de um conjunto vazio com um conjunto qualquer, é um conjunto vazio; 2. Dados dois conjuntos A e B, se a cabeça de A também pertencer a B, o conjunto interseção também terá como cabeça, a mesma cabeça de A, e a sua cauda será formada pela interseção da cauda de A com o conjunto B; 3. Se a cabeça do conjunto A não pertence ao conjunto B, então, o conjunto interseção será obtido pela interseção da cauda de A com o conjunto B.

73 Exercício  Construir em Prolog, as regras que determinam a intersecção de conjuntos.

74 Solução Domains stringlist = string* Predicates
nondeterm intersecao(stringlist,stringlist,stringlist) Clauses intersecao([],_,[]). intersecao([Cabeca_A|Cauda_A],Conjunto_B,[Cabeca_A|Cauda_Intersecao]):- pertence(Cabeca_A,Conjunto_B),!, intersecao(Cauda_A,Conjunto_B,Cauda_Intersecao). intersecao([Cabeca_A|Cauda_A],Conjunto_B,Intersecao):- not(pertence(Cabeca_A,Conjunto_B)), intersecao(Cauda_A,Conjunto_B,Intersecao).

75 Diferença de Conjuntos
 Dados dois conjuntos A e B, denomina-se diferença A - B ao conjunto formado pelos elementos de A menos os elementos que pertencem ao mesmo tempo a A e a B.  Sejam A = {a,b,c,d,e} e B = {a,e,i,o,u}. A - B = {b,c,d}.

76 Diferença de Conjuntos Regras
1. A diferença entre um conjunto vazio e um conjunto qualquer, é um conjunto vazio; 2. Dados dois conjuntos quaisquer A e B, se a cabeça de A não pertencer a B, o conjunto diferença também terá como cabeça, a mesma cabeça de A, e a sua cauda será formada pela diferença entre a cauda de A com o conjunto B; 3. Se a cabeça do conjunto A pertencer também ao conjunto B, então, o conjunto diferença será obtido pela diferença da cauda de A com o conjunto B (porque este elemento será eliminado não fazendo parte do conjunto diferença).

77 Exercício  Construir em Prolog as regras que definem a diferença de dois conjuntos

78 Solução Predicates nondeterm diferenca(stringlist,stringlist,stringlist) Clauses diferenca([],_,[]). diferenca([Cabeca_A|Cauda_A],Conjunto_B,[Cabeca_A|Cauda_Diferenca]):- not(pertence(Cabeca_A,Conjunto_B)), diferenca(Cauda_A,Conjunto_B,Cauda_Diferenca). diferenca([Cabeca_A|Cauda_A],Conjunto_B,Diferenca):- pertence(Cabeca_A,Conjunto_B), diferenca(Cauda_A,Conjunto_B,Diferenca).

79 Complemento  Dados dois conjuntos A e B, denominamos complemento de B em relação a A ao conjunto A – B = {x|x Є A e x  B}  Se tivermos por exemplo os seguintes conjuntos A = {a,s,d,f,g] e B = {d,f,h,j}, então: A – B = {a,s,g} e B – A = {h}

80 Exercício  Construir em Prolog as regras que definem o complemento de B em relação a A.

81 Solução Predicates nondeterm complemento(stringlist,stringlist,stringlist) Clauses complemento(B,A,C):- diferenca(A,B,C).

82 Par Ordenado  se os elementos a e b formam um par ordenado teremos:
 Par ordenado é o par formado por dois elementos de maneira que cada um deles deve manter a sua posição em relação ao outro, ou seja, o primeiro elemento do par será sempre o da esquerda e o segundo elemento do par será o da direita.  se os elementos a e b formam um par ordenado teremos: (a,b)

83 Produto Cartesiano denominamos de produto cartesiano.
 Sejam os conjuntos A e B. Podemos formar com os elementos dos conjuntos A e B, um conjunto de pares ordenados de forma que o primeiro elemento do par seja do conjunto A e o segundo elemento do conjunto B.  A este conjunto de pares ordenados denominamos de produto cartesiano.

84 Produto Cartesiano - Exemplo
A = {ponte1, ponte2} B = {madeira, concreto, ferro} Podemos formar o conjunto dos seguintes pares ordenados: {(ponte1,madeira),(ponte1,concreto),(ponte1,ferro), (ponte2,madeira),(ponte2,concreto),(ponte2,ferro)}

85 Tarefa  Programar em Prolog o produto cartesiano


Carregar ppt "Ilson Wilmar Rodrigues Filho, Dr. João Bosco da Mota Alves, Dr."

Apresentações semelhantes


Anúncios Google