Professional Documents
Culture Documents
Ilson Wilmar Rodrigues Filho, Dr. http://www.inf.ufsc.br/~ilson ilson@inf.ufsc.br Joo Bosco da Mota Alves, Dr. jbosco@inf.ufsc.br
Bibliografia
BARROS, F. A.; ROBIN, J. Processamento de Linguagem Natural. Departamento de Informtica, Universidade Federal de Pernambuco, Recife, maro de 1997. FERNANDO, P.; MENEZES, B. Linguagens Formais e Autmatos. Porto Alegre: Instituto de Informtica da UFRGS: Sagra Luzzatto Editores, 1997. GAL, A.; LAPALME, G. Prolog for Natural Language Processing. John Wiley & Sons Ltd., 1991. GAZDAR, G.; MELLISH, C. Natural Language in Prolog. AddisonWeslwy Publishing Company, 1989, JOS NETO, J. Introduo Compilao. Rio de Janeiro. LTC Livros Tcnicos e Cientficos Editora S. A., 1987.
Bibliografia
MONARD, M. C. & NICOLETTI, M. do C. Programas Prolog para Processamento de Listas e Aplicaes, Janeiro de 1993 Verso 2.0 MOREIRA, N. Processamento de Linguagem Natural, Mestrado de Lingstica Portuguesa Descritiva, Faculdade de Letras da Universidade do Porto NUNES, M. das G. V. at al. Introduo ao Processamento das Lnguas Naturais. So Carlos: Notas Didticas do ICMC No. 38, Instituto de Cincias Matemticas e de Computao, 1999. PINERO, R. B. Lenguajes Formales y Autmatas. Centro de Inteligencia Artificial, Instituto Tecnolgico y de Estudios Superiores de Monterrey. Enero de 1997. TOWSEND, C. Tcnicas Avanadas em Turbo Prolog, Rio de Janeiro: Editora Campus, 1990.
Avaliao
Exerccios para serem resolvidos individualmente e um trabalho (que pode ser feito em grupo) que deve ser entregue no dia da apresentao (seminrio).
Mdia Final = N1 x 0.4 + N2 x 0.3 + N3 x 0.3 onde: N1 = Mdia Aritmtica dos exerccios N2 = Nota do Trabalho N3 = Nota da Apresentao do trabalho (seminrio)
Divises do PLN
lingstica computacional ou processamento de linguagem natural: tratamento da lngua escrita. reconhecimento e sntese de voz: tratamento da lngua falada.
Outras Denominaes
Processamento
de Linguagem Natural: Inteligncia Artificial Lingstica Computacional: Lingstica Outros termos propostos: Processamento Computacional das Lnguas, Engenharia da Linguagem. Especificamente para a lngua portuguesa tem sido sugerido: Processamento Computacional do Portugus, Processamento Computacional da Lngua Portuguesa.
Histrico
PLN
nasceu com o computador: 2a Guerra: militares americanos tinham interesse de traduzir automaticamente conversaes gravadas dos russos; A comunidade cientfica precisava de tradues de trabalhos estrangeiros - a cada dia fazia-se novas descobertas cientficas.
Traduo Automtica
A
possibilidade de fazer traduo automtica de publicaes sobre tecnologia e cincia deixou os cientistas animados. Essa foi uma das razes para que pesquisas fossem financiadas na rea.
trabalhos sobre PLN: traduo automtica - comearam em 1946. Eram trabalhos sobre traduo russo-ingls. traduo palavra por palavra; tradues: listas de palavras chaves.
Histrico
1948: Preocupao com as regras de construo de frases foi levada em considerao (num trabalho do ingls Pichens). Primeiro congresso sobre traduo automtica foi realizado no ano de 1952, nos EUA, no MIT Massachusetts Institute of Technology com a participao de 18 pesquisadores.
O Relatrio ALPAC
Relatrio ALPAC (Automatic Language Processing Advisory Comitee) - relatrio encomendado pelo governo norteamericano Academia de Cincias daquele pas sobre as pesquisas em traduo automtica. O relatrio publicado em 1966 teve um teor fortemente negativo que provocou o corte das verbas de financiamento
Anos 80: renascimento do interesse na traduo automtica, na Europa, em funo da criao da Comunidade Europia. 1982: projeto EUROTRA - sistema de traduo automtica para nove lnguas de pases que constituam a Comunidade Europia.
Modelos Conceituais
Modelos formais ou modelos baseados em regras; Modelos estatsticos; Modelos conexionistas
Recuperao de Informao
Recuperao de Informao o estudo e desenvolvimento de tcnicas que permitam encontrar documentos relevantes de uma coleo de documentos.
Recuperao de Informao
Extrao de Informao
Na extrao de informao procura-se por informaes diretamente nos textos , mostrando a informao ao invs de documentos. Tcnicas utilizadas: baseadas na busca de determinadas palavras chaves (denominadas de tags), tais como - Nome de pessoas - Nome de empresas;
Traduo Automtica
Traduo automtica a traduo por computador de frases dadas numa lngua para outra lngua. Os primeiros trabalhos utilizavam dicionrios bilinges e faziam traduo palavra a palavra. A teoria lingstica comeou a ser incorporada nos sistemas de traduo automtica com os trabalhos de Noam Chomsky.
Gramtica
Segundo Chomsky, o conhecimento que o falante de
uma lngua natural teria da mesma poderia ser descrita atravs de um conjunto finito de regras.
Tais regras seriam universais, ou seja, valeriam
para todas as lnguas. Elas poderiam gerar um nmero infinito de frase de uma lngua.
Uma frase seria gramatical (pertencente lngua)
Homonmia Lexical: um exemplo clssico : manga = parte de uma pea de vesturio destinada a cobrir os braos / manga = fruto da mangueira
sentena indica dois ou mais escopos. Exemplos: Apesar de ser exmio advogado, o procurador da Universidade no cumpre todas as disposies estatutrias. Essa sentena poderia significar que:
- O procurador descumpre todas as disposies (Descumpre todas = tem por norma violar a legislao) O procurador cumpre as disposies, mas no todas (no tem por norma violar a legislao, mas comete falhas).
Diferentes correferncias possveis: a compatibilidade de um anafrico com dois ou mais antecedentes distintos, tambm chamada de ambigidade anafrica.
Exemplo: O ladro entrou na casa do prefeito e tirou toda a sua roupa.
Conhecimento do Mundo
A compreenso da linguagem natural implica num
determinado grau de conhecimento do mundo. Exemplo: "as mes com filhos menores de dez anos".
Tal expresso poderia er as seguintes representaes lgicas: 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 me de y; i(x) significa idade de x; i(y) significa idade de y.
Anlise Morfolgica
o estudo da estrutura e da classificao das palavras em funo do uso: substantivos adjetivos pronomes verbos numerais artigos advrbios preposies conjuno interjeio
Regras morfolgicas
As lnguas naturais possuem regras morfolgicas
que produzem as possveis variantes de cada palavra. Exemplo: construir tem como variantes, entre outras, construo e construdo. Um pedao da palavra (constru) se repete nas demais, que receberam a aposio do que chamamos de sufixos. Este pedao de palavra que se mantm nas variantes, chamamos de lexemas.
Anlise Sinttica
o estudo das unidades bsicas da linguagem - as sentenas. Na fase da anlise sinttica, o sistema de processamento de linguagem natural verifica se a seqncia das palavras nas sentenas so vlidas para a gramtica utilizada.
Anlise Semntica
Durante a anlise semntica, utiliza-se a estrutura gerada durante a anlise sinttica para construir outras estruturas que representem o significado das sentenas. Formalismos utilizados nesta fase do processamento de linguagem natural podem ser classificados em fracos e fortes: Formalismos fracos: redes semnticas e frames; Formalismos fortes: gramticas de casos, dependncia conceitual e scripts.
Anlise do Discurso
Anlise do discurso a identificao da estrutura do discurso. O discurso tambm organizado em unidades constitudas por um mais elementos denominados segmentos do discurso.
Anlise Pragmtica
Na anlise pragmtica so estudados os enunciados, ou seja, os significados das frases, sob o ponto de vista dos interlocutores. Esta anlise de suma importncia principalmente nos dilogos onde preciso determinar as intenes dos interlocutores.
Conjuntos
Conjunto uma coleo de objetos, distintos, de qualquer espcie (definio intuitiva). Aos objetos do conjunto denominamos elementos do conjunto. Os elementos do conjunto distinguem-se uns dos outros, ou seja, no h repetio de elementos no conjunto.
V = {a,e,i,o,u}
Para indicar que u pertence ao conjunto V
Listas
Uma lista em Prolog uma coleo de elementos
separados por vrgulas e dentro de colchetes. O primeiro elemento da lista denominado cabea de lista e os demais elementos formam uma lista denominada cauda da lista.
A Relao pertence/2
a relao pertence/2 pode ser estabelecida
atravs de duas regras: (1) Um objeto pertence a uma lista se ele for a cabea da lista; (2) Um objeto pertence a uma lista se ele pertence cauda da lista.
pertence/2 - Exemplos
Goal pertence(u,[a,e,i,o,u]).
yes
Goal not(pertence(b,[a,e,i,o,u])).
yes
pertence/2 - Exemplos
Se quisermos saber quais os objetos de um
dado conjunto (por exemplo: [a,e,i,o,u]), perguntaramos em Prolog: Goal pertence(X,[a,e,i,o,u]). X=a X=e X=i X=o X=u 5 Solutions
Conjunto Vazio
Um conjunto sem objetos, denominado
conjunto vazio, denotado por {} ou . Para utilizao de Prolog vamos representar o conjunto vazio por [], ou seja, = []
Subconjunto
Um dado conjunto A subconjunto de B
se e somente se todo elemento de A pertence tambm a B, que se representa como: A B e dizemos que o conjunto A est contido no conjunto B, ou ainda que B contm A: B A
Subconjunto
em Prolog, teremos:
esta_contido(A,B).
contem(B,A).
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).
esta_contido/2 - Exemplos
Goal esta_contido([],[c,b,a]). yes Goal esta_contido([a,b],[c,b,a]). yes Goal esta_contido([a,b],[b,a]). yes Goal esta_contido([b,a],[c,b,a]). yes
contem/2
Domains
stringlist = string* Predicates
nondeterm contem(stringlist,stringlist)
nondeterm esta_contido(stringlist,stringlist)
Clauses
contem(B,A):esta_contido(A,B).
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] yes
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 no (yes/no) caso A seja subconjunto ou no de B. Basta utilizar uma das relaes definidas (esta_contido/2 ou contem/2)
Igualdade de Conjuntos
Dois conjuntos A e B so iguais quando
qualquer elemento que pertence a A pertence tambm a B e vice-versa (todo elemento que pertence a B pertence tambm a A), isto : A = B, se, e somente se,
A B e B A.
igual/2
Predicates nondeterm igual(stringlist,stringlist)
Clauses
igual(A,B):esta_contido(A,B), esta_contido(B,A).
igual/2 - Exemplos
Goal A = [a,b,c], B = [b,c,a], igual(A,B). A = [a,b,c] B = [b,c,a] 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 no importa. Dados dois conjuntos, se eles tiverem os mesmos objetos, eles so considerados iguais.
Conjunto Potncia
Seja A um conjunto. Definimos como
conjunto potncia de A ou conjunto das partes de A, ao conjunto cujos elementos so os subconjuntos de A. Sua denotao : 2A. Assim:
2A = {S | S A}
subconjunto/2
Para definir em Prolog um predicado que
d todos os subconjuntos de um conjunto dado formando o seu conjunto potncia, vamos definir um predicado que gere subconjuntos que vamos denominar de subconjunto/2.
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 tambm no subconjunto B (vamos coloc-lo na cabea de B, pois como no importa a ordem dos elementos de um conjunto vamos escolher esta ordem preferencialmente), ento a cauda de B subconjunto da cauda de A; 3 - Se o primeiro elemento do conjunto A no est no subconjunto gerado B, ento B um subconjunto da cauda de A.
subconjunto/2 - regras
Esta trs regras so escritas da seguinte maneira em Prolog: (1) subconjunto([],[]). (2) subconjunto([CabecaA|CaudaA],[CabecaA|CaudaB]):subconjunto(CaudaA,CaudaB). (3) subconjunto([_|CaudaA],ConjuntoB):subconjunto(CaudaA,ConjuntoB).
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
Conjunto Potncia
O conjunto potncia 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).
Exerccio
Determinar
Soluo
Predicates tamanho(llstring,integer)
Clauses
tamanho([],0). tamanho([_|Cauda],TAM):tamanho(Cauda,TamCauda), TAM = TamCauda + 1.
Com conjuntos pode-se executar algumas operaes bsicas tais como: unio; interseco; diferena..
Unio de Conjuntos
Dados dois conjuntos A e B, a unio destes conjuntos, o conjunto formado com todos os elementos que pertencem a A ou a B.
A unio representada por: A B
Exerccio
Construir
Soluo
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).
Interseco de Conjuntos
Dados dois conjuntos A e B, a interseco
de A e B o conjunto formado com os elementos que pertencem a ambos ao mesmo tempo. A interseco indicada por: A B
Exerccio
Soluo
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).
Diferena de Conjuntos
Dados dois conjuntos A e B, denomina-se
diferena 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}.
Exerccio
Construir
Soluo
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).
Complemento
Dados dois conjuntos A e B, denominamos
Exerccio
Construir
Soluo
Predicates
nondeterm complemento(stringlist,stringlist,stringlist) Clauses complemento(B,A,C):diferenca(A,B,C).
Par Ordenado
Par ordenado o par formado por dois
elementos de maneira que cada um deles deve manter a sua posio em relao 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)
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.
Tarefa
Programar
em Prolog o produto
cartesiano