Processamento de Linguagem Natural - PowerPoint PPT Presentation

1 / 85
About This Presentation
Title:

Processamento de Linguagem Natural

Description:

Processamento de Linguagem Natural Ilson Wilmar Rodrigues Filho, Dr. http://www.inf.ufsc.br/~ilson ilson_at_inf.ufsc.br Jo o Bosco da Mota Alves, Dr. – PowerPoint PPT presentation

Number of Views:315
Avg rating:3.0/5.0
Slides: 86
Provided by: Wil765
Category:

less

Transcript and Presenter's Notes

Title: Processamento de Linguagem Natural


1
  • Processamento de Linguagem Natural
  • Ilson Wilmar Rodrigues Filho, Dr.
  • http//www.inf.ufsc.br/ilson
  • ilson_at_inf.ufsc.br
  • João Bosco da Mota Alves, Dr.
  • jbosco_at_inf.ufsc.br

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, 1997.
  • 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 0.4 N2 x 0.3 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
  • ? Modelos formais ou modelos
  • baseados em regras
  • ? 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
  • ? 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) lt 10
  • 2. x ? y, M(x,y) i(x) lt 10
  • 3. x ? (y,z), M(x,y) M(x,z) i(y) lt 10
    i(x) lt 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
  • ? É 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
  • ? 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
  • ? 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
  • ? Goal pertence(u,a,e,i,o,u).
  • yes
  • ? Goal not(pertence(b,a,e,i,o,u)).
  • yes

42
pertence/2 - Exemplos
  • ? 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
  • ? 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(H1T1,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).
  • yes
  • Goal esta_contido(a,b,b,a).
  • yes
  • Goal esta_contido(b,a,c,b,a).
  • yes

48
contem/2
  • 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
  • yes

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).
  • 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 não importa. Dados
    dois
  • conjuntos, se eles tiverem os mesmos objetos,
    eles são
  • considerados iguais.

54
Conjunto Potência
  • ? 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(CabecaACaudaA,CabecaACaudaB)
    -
  • 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(CabecaACaudaA,CabecaACaudaB)-
  • 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(CabecaACaudaA,ConjuntoB,ConjuntoUniao)-
  • pertence(CabecaA,ConjuntoB),!,
  • uniao(CaudaA,ConjuntoB,ConjuntoUniao).
  • uniao(CabecaACaudaA,ConjuntoB,CabecaACaudaUni
    ao)-
  • 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,stringl
    ist)
  • Clauses
  • intersecao(,_,).
  • intersecao(Cabeca_ACauda_A,Conjunto_B,Cabeca_A
    Cauda_Intersecao)-
  • pertence(Cabeca_A,Conjunto_B),!,
  • intersecao(Cauda_A,Conjunto_B,Cauda_Interse
    cao).
  • intersecao(Cabeca_ACauda_A,Conjunto_B,Interseca
    o)-
  • 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,stringli
    st)
  • Clauses
  • diferenca(,_,).
  • diferenca(Cabeca_ACauda_A,Conjunto_B,Cabeca_A
    Cauda_Diferenca)-
  • not(pertence(Cabeca_A,Conjunto_B)),
  • diferenca(Cauda_A,Conjunto_B,Cauda_Diferenca
    ).
  • diferenca(Cabeca_ACauda_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 xx ? 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,string
    list)
  • Clauses
  • complemento(B,A,C)-
  • diferenca(A,B,C).

82
Par Ordenado
  • ? 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
  • ? 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,ferr
    o)

85
Tarefa
  • ? Programar em Prolog o produto
  • cartesiano
Write a Comment
User Comments (0)
About PowerShow.com