Linguagens Programação I - Dei-Isep

Propaganda
Linguagens e Programação
Ano Lectivo 2006/2007
Relatório
Trabalho Teórico
Linguagem Natural
Trabalho realizado por:
Paulo Jorge Morais Costa - 1000334
Linguagens e Programação – 2006/2007
Índice
1 – Introdução
2 – Compreender a Linguagem Natural
3 – Linguagem Natural vs. Linguagem Artificial
4 – Níveis de PLN
5 – Conclusão
6 - Bibliografia
Trabalho Teórico
pág. 2/19
4
5
10
14
17
19
Linguagens e Programação – 2006/2007
“Furthermore, just to underline the difficulties described here, we need only point
out that any attempt to give a complete description of a language is doomed to
failure.”
Annie Gal et al.
Prolog For Natural Language Processing
Trabalho Teórico
pág. 3/19
Linguagens e Programação – 2006/2007
1-Introdução
Tem como objectivo o presente relatório, ser o trabalho teórico da disciplina de
Linguagens e Programação que decorre no 2º semestre de 2006/2007. Este trabalho
consiste em pesquisar sobre um determinado tema.
Sobre o tema escolhido – Linguagem Natural (LN) – é pedido que se faça um ponto
de situação e que se perspective sobre o mesmo e a sua relação com as linguagens
formais.
Basicamente sobre LN todas as fontes estudadas são muito breves e, o tema é
sobretudo relacionado com Inteligência Artificial (IA) conforme é salientado no
enunciado. Além do mais, e apesar das várias técnicas com que a LN é associada, a
mais clara e pertinente é feita com o Processamento de Linguagem Natural (PLN)
em que mais do que se falar sobre LN, descreve-se como esta é entendida, interligada
e trabalhada com as linguagens artificiais.
Os objectivos de pesquisa em LN cobrem principalmente as seguintes áreas:

Desenvolver e modelar sistemas linguísticos

Conceber e implementar modelos e sistemas de PLN

Avaliar tais sistemas do ponto de vista de interface Homem-Máquina
Sobretudo, e tendo em conta o conteúdo programático da disciplina Linguagens e
Programação, é a utilização de métodos para analisar expressões bem formadas
numa qualquer Linguagem Artificial (LA).
Trabalho Teórico
pág. 4/19
Linguagens e Programação – 2006/2007
2 – Compreender a Linguagem Natural
Segundo a descrição fornecida pela Wikipedia a linguagem natural é uma linguagem
que é falada, escrita ou sinalizada (visual ou gestualmente) por seres humanos para
efeitos de comunicação, assim como é distinguida das linguagens de programação
para computadores ou as “linguagens” utilizadas no estudo de lógica formal,
especialmente matemática lógica.
Esta perspectiva que nada traz de novo na medida em que os seres humanos usam
várias formas de comunicar entre si (visual, gestual ou verbalmente) desde os
primórdios da humanidade, salienta o facto de existir uma distinção entre a LN e as
várias linguagens artificiais, tais como as linguagens de programação ou as linguagens
matemáticas que estão na base da tecnologia conhecida como Inteligência Artificial.
Se, de facto, existem linguagens artificiais que os computadores conseguem processar,
trata-se de uma viciação pois os computadores são capazes de comunicar aquilo que
estão programados à priori para transmitir.
A Linguagem Natural é utilizada para aplicações tais como:

Compreensão de frases isoladas

Compreensão de texto

Geração de texto

Tradução automática

Apoio a interfaces com o utilizador

Interface com Linguagens de Interrogação de Bases de Dados
O que se pode entender como compreender uma linguagem natural? Na utilização de
uma língua estão ímplicitos processos cognitivos complexos onde são empregues
grandes quantidades de conhecimento – do domínio e da língua – mesmo quando são
utilizadas frases simples.
Trabalho Teórico
pág. 5/19
Linguagens e Programação – 2006/2007
Um computador tem que ser capaz de analisar a forma, ou seja, a sintaxe das frases
para poder processar uma linguagem. Porém, e apesar de já ser uma operação atómica
é por si só, insuficiente. O nível dos significados, ou semântica, é de vital importância.
Uma capacidade mais interessante terá também em conta o nível pragmático onde é
verificado o significado em contexto.
Pode-se efectuar uma associação neste momento às linguagens formais tendo como
referência que “A compreensão de uma linguagem natural abarca duas direcções
fundamentais do fluxo de informação: Análise e Síntese.” (Helder Coelho, 1995) e
com a descrição leccionada nas aulas até ao momento:
Tal como é leccionado na disciplina de Linguagens e Programação um compilador
lê de uma fonte uma determinada linguagem (de baixo ou de alto nível) processa os
tokens na análise léxica, “constrói” uma árvore de parse (na realidade pode não
construir, mas para todos os efeitos a árvore de parse existe nem que seja de uma
forma abstracta) e faz uma análise de semântica. Todo este processo faz parte da
Trabalho Teórico
pág. 6/19
Linguagens e Programação – 2006/2007
análise. Terminadas estas etapas e partindo do princípio que foi introduzido através do
ficheiro fonte a linguagem correctamente, é gerado código intermédio para ser
interpretado na fase de síntese.
No entanto, a compreensão de uma LN como o Português complica-se pois estes três
níveis (sintáctico, semântico e pragmático) têm ligações entre si; certos fenómenos
linguísticos (omissões ou elipses e referências ou anáforas de palavras) não se podem
classificar apenas no nível de sintaxe ou no da semântica, e o significado de uma frase
depende de conhecimento prévio, não contido explicitamente na frase.
Qualquer máquina para a compreensão deve, pelo menos em teoria, ser capaz de
responder à questão central da reversabilidade daquele fluxo. Mas existem várias
questões que têm que ser ponderadas, em particular: o formalismo das representações
(sistema lógico ou estrutural, via enquadramento ou guiões), o subconjunto da língua,
a metodologia da compreensão, incluindo os fenómenos linguísticos a considerar (as
elipses, anáforas, elisões...), a definição de quantificadores e a sua hierarquização, o
formalismo e a técnica de descrição do aparelho gramatical, a eficiência e eficácia da
maquinaria de análise sintáctica (“parsing”), de tradução e de avaliação, e a extensão
da maquinaria cognitiva (detecção e reparação de erros, etc).
Se a interacção entre o agente artificial e um ser humano não for uma sequência linear
de pares pergunta-resposta, mas sim uma sequência não linear, próximo de uma
conversa, então temos de ponderar também como as interacções serão governadas, do
ponto de vista sintáctico, semântico e pragmático (gramáticas das formas de diálogo e
discurso), o que implicará uma extensão ao formalismo adoptado numa maquinaria
adicional com capacidade de planeamento, a gestão de contextos, a modelização dos
interlocutores, a gestão das suas crenças, e ainda uma capacidade de encenação
(gestão de cenários de conversa).
Do ponto de vista metodológico mais simples, pode-se considerar que o
processamento de frases do Português se reduz apenas a duas etapas:

Tradução

Avaliação semântica
Trabalho Teórico
pág. 7/19
Linguagens e Programação – 2006/2007
A primeira etapa – tradução – onde cada frase do ser humano utilizador é
transformada numa lista de palavras e sinais de pontuação. Um teste revela se cada
palavra é ou não reconhecida. Uma gramática de cláusulas definidas de um
subconjunto do Português realiza a análise sintáctica e semântica sobre essa lista, do
ponto de vista computacional, de modo a traduzi-la numa estrutura lógica (a
representação do seu significado ou do modo como a entendemos). A gramática é uma
extensão das gramáticas ditas de contexto livre, sendo capaz de extrair uma leitura
apropriada, a partir de um conjunto de leitura possíveis e também reconhece se a frase
de entrada pertence ou não pertence ao subconjunto do Português.
A segunda etapa é a avaliação da estrutura lógica contra uma base de conhecimentos,
e de acordo com um certo sistema lógico. Este sistema difere, em geral, da lógica de
predicados, na medida em que os quantificadores adoptados para traduzir os
determinantes (artigos) estão mais ajustados à semântica da linguagem natural, as
variáveis podem denotar quer indivíduos ou conjuntos, e existe um terceiro valor de
verdade “ambíguo”, além dos valores “verdadeiro” e “falso”.
A compreensão de uma Linguagem Natural, como o Português, envolve a construção
de um interface capaz de analisar a frase do ponto de vista linguístico (sintaxe e
semântica) através da tradução de estruturas superficiais (cadeias de caracteres) em
estruturas profundas (forma contendo a descrição do seu significado), de avaliar
logicamente essas estruturas contra um certo mundo ou realidade (obtenção de um
valor de verdade), e de sintetizar uma resposta apropriada. Estas tarefas levantam
questões quanto à representação do conhecimento, às metodologias de análise e de
síntese, e ainda aos instrumentos para o processamento simbólico que possam estar
disponíveis.
Em relação aos aspectos de análise (“parsing”) de uma linguagem e também sobre a
concepção da maquinaria gramatical. Como traduzir uma regra tão simples como
“uma frase reescreve-se como um Sintagma Nominal seguido por um Sintagma
Verbal”? Em linguística adopta-se a notação geral das gramáticas livres de contexto e
escrever-se-ía:
frase --> SN e SV
Trabalho Teórico
pág. 8/19
Linguagens e Programação – 2006/2007
onde SN e SV são os símbolos não terminais correspondentes ao Sintagma Nominal e
ao Sintagma Verbal, respectivamente.
Trabalho Teórico
pág. 9/19
Linguagens e Programação – 2006/2007
3 – Linguagem Natural vs. Linguagem
Artificial
As LA co-existem com as LN por vários séculos (pensando em lógica, por exemplo).
Foram criadas por seres humanos por razões específicas e estão debaixo de completo
controlo humano.
As LA são sistemas simbólicos, e em alguns casos a metáfora da linguagem – a
sintaxe e a semântica de LA – é um “bocado” enganadora.
O objectivo de uma LA é – com ajuda de um vocabulário muito restricto e estruturas
relativamente simples – descrever com precisão certas tarefas (e/ou fenómenos). Uma
LA permite modelar e representar fenómenos num nível abstracto. Algumas
qualidades são a não-ambiguidade e ausência de dados não explícitos. Cada palavra
da linguagem tem de ter um significado único.
A primeira diferença essencial é que a LN consiste num conjunto de frases bem
construídas e indeterminadas, i.e., ninguém consegue caracterizar todas as frases de
uma linguagem de uma maneira finita. Esta indeterminação também se pode
considerar ao nível de uma LA que inclua recursividade mas o não-determinismo das
LN ocorre em vários níveis:
 O vocabulário de uma LN não é completamente conhecido, em particular por
causa de vocabulários especializados (técnico, médico,...)
 O conjunto de construções semânticas não é totalmente determinado
 O conjunto de sentidos atribuidos a cada palavra não está predeterminado
especialmente porque uma palavra muitas vezes não tem um significado
preciso fora de um contexto particular.
Uma consequência deste tipo de dificuldades é que, os sistemas de PLN podem tratar
apenas um subconjunto de LN muito restricto e muito bem definido semanticamente.
É necessário também ter em conta o aspecto evolutivo de uma LN caracterizado por
fenómenos tais como:
Trabalho Teórico
pág. 10/19
Linguagens e Programação – 2006/2007

Invenção de novas palavras

Conjugação de novas frases

Palavras que deixam de ser utilizadas

Frases que deixam de ser utilizadas
Sendo que muitas palavras e frases muitas vezes têm um tempo de vida muito curto,
ou seja “são moda” durante um breve período de tempo.
Na LA as regras e palavras têm que estar previamente definidas. Numa LN as palavras
e/ou frases podem ser “inventadas” em qualquer altura (as frases “bué de engraçado”
ou “basar daqui para fora” são dois exemplos das mais recentes alterações do
vocabulário da língua nacional) sendo que após a adopção popular das ditas palavras e
frases estas são incluidas e registadas no vocabulário da linguagem.
A questão da robustez também tem que ser levada em conta. Uma frase em LN pode
ser semanticamente incorrecta e no entanto é compreendida; num sistema
computacional iria conduzir a um erro de compilação, à suspensão das tarefas em
execução mesmo em sistemas com capaciadade de recuperação de erros sofisticada.
A existência de ambiguidades numa LN é a principal causa de uma série de problemas
complexos. Tais ambiguidades que podem ocorrer em níveis diferentes de linguagem,
e que para os seres humanos muitas vezes se apercebem da existência das mesmas
pois a interpretação dessas frases parece óbvia. Tal situação ocorre pois os seres
humanos conseguem através de outros mecanismos resolver as ambiguidades de uma
maneira natural. Tal mecanismo de resolução de ambiguidades é de impossível
implementação quando se trata de criar uma máquina para analisar frases. Seria
necessário dotar a máquina de capacidades como senso comum ou conhecimento
geral que ajuda os seres humanos a resolver as ambiguidades. E como se poderia
estruturar o senso comum, isto para não mencionar factores como:
➢
Incerteza
➢
Preferências
➢
Credos (políticos e/ou religiosos)
Pode-se catologar a ambiguidade em dois tipos: ambiguidade lexica e ambiguidade
sintáctica.
Trabalho Teórico
pág. 11/19
Linguagens e Programação – 2006/2007
Na ambiguidade lexica a homografia é o exemplo mais evidente: existem palavras
que se escrevem e pronunciam exactamente da mesma maneira e no entanto têm
significados completamente diferentes. Exemplo:
O João casa com a Maria.
O João foi para casa.
A ambiguidade sintactica é muito comum:
O homem viu a rapariga
com o telescópio.
Este género de frases levanta dúvidas do género: Quem estava com o telescópio?
Mesmo para seres humanos e sem outros elementos para ajudar a perceber o contexto,
é difícil de perceber quem estava com o telescópio, se o homem ou a rapariga...
Uma diferença importante entre LN e LA é a presença de elementos implícitos. Numa
frase alguma informação é compreendida ou absorvida como uma contracção, para
evitar repetições aborrecidas, por exemplo:
Sócrates prometeu que ele iria criar
150.000 novos postos de trabalho.
Nesta frase, o pronome ele pode representar o nosso actual primeiro ministro ou
alguém por quem o primeiro ministro é responsável.
Outro exemplo de significado implícito na LN é a existência de elipses. Uma estrutura
usada numa frase é omitida em vez de ser repetida.
Trabalho Teórico
pág. 12/19
Linguagens e Programação – 2006/2007
O João vai jantar com a Maria
amanhã à noite e o Paulo com a
Susana.
em que a segunda parte da frase é entendida como:
... e o Paulo vai jantar com a
Susana amanhã à noite.
Trabalho Teórico
pág. 13/19
Linguagens e Programação – 2006/2007
4 – Níveis de PLN
Existem vários níveis sobre os quais uma LN pode ser processada:
➢
Nível fonético
➢
Nível fonológico
➢
Nível morfológico
➢
Nível léxico
➢
Nível sintáctico
➢
Nível semântico
➢
Nível pragmático
O nível fonético ocupa-se da composição do som de discurso e corresponde
principalmente em associações entre sinais de fala e a que sons esses sinais devem
corresponder. Basicamente trata-se da percepção e produção de sons.
O nível fonológico tem a ver (em linguística) com o estudo do sistema sonoro de um
idioma. A maneira como os sons combinam para formar palavras e frases. Existem
conjuntos de regras bem precisas que descrevem como pronunciar um texto escrito que é a síntese do discurso – ou como transvcrever uma sequência de sons –
reconhecimento do discurso.
O nível morfológico lida com a forma das palavras numa frase: conjugações verbais,
plurais de substantivos. Este nível também lida com aspectos mais complexos tais
como as palavras que podem derivar de outras palavras: adjectivos de substantivos
coragem > corajoso
ou nomalizações de verbos:
Trabalho Teórico
pág. 14/19
Linguagens e Programação – 2006/2007
pintar > pintor, pintando
O conjunto de palavras de uma linguagem é armazenada no que é conhecido como
vocabulário ou léxico. As diferentes formas morfológicas de uma palavra são
acessíveis por regras morfológicas, ou seja, inflexões ou formas derivadas podem ser
analisadas ou geradas pela aplicação dessas regras. Pode acontecer que certas formas
já existam no vocabulário o que irá indicar a informação associada, assim como a
palavra-mãe das quais são derivadas.
O nível léxico trata-se do conjunto de palavras de uma linguagem. Estas palavras
podem ser classificadas em categorias tais como:
➢
Substantivos
➢
Adjectivos
➢
Verbos
➢
Conjunções
➢
Advérbios
➢
Preposições
➢
Interjeições
O nível sintáctico tem a ver com a combinação possível das palavras para formar
frases correctas. Existem muitas maneiras de escrever as regras de acordo com as
quais as frases podem ser formadas, correspondendo as descrições informais
fornecidas por livros gramaticais para línguas estrangeiras de uma forma ge(ne)rativa
transformacional desenvolvida por Chomsky.
O nível semântico lida com o significado das palavras, grupos de palavras e frases. É
muitas vezes relacionado com o nível pragmático que lida com a relação entre a
capacidade de discursar ou frases e o seu contexto sócio-cultural. Cada palavra, no
nível léxico, está associado a representações semânticas que podem variar de teoria
para teoria. Por exemplo nas linguagens lógicas o estudo da representação semântica
corresponde às equações em lógicas formais, consistindo em constantes, predicados e
Trabalho Teórico
pág. 15/19
Linguagens e Programação – 2006/2007
fórmulas. As regras de composição semântica estão associadas com regras sintácticas
e descrevem como a representação interna de uma construção pode ser deduzida ou
calculada a partir das sub-estruturas de que essa estrutura é composta (também
conhecido como princípio da proporcionalidade). Quando este cálculo tem mais que
uma solução ou resultado (ambiguidade sintáctica), elementos para lá da estrutura são
levados em conta. Factores como a posição de outras palavras na frase, ou regras ou
até senso comum.
O componente pragmático tem o trabalho de localizar uma frase no seu contexto, que
pode ser um texto, uma conversação. Este componente utiliza elementos muito
complexos. Existem vários elementos empíricos inspirados directamente por
psicologia cognitiva as quais são relativamente eficientes mas cuja portabilidade para
outras áreas de aplicação é ineficiente ou mesmo impraticável.
Trabalho Teórico
pág. 16/19
Linguagens e Programação – 2006/2007
8 – Conclusão
Relacionar as Linguagens Formais com uma qualquer Linguagem Natural é tentar
perceber como funciona uma LN em si. É conseguido ao nível de uma quantificação
de palavras contidas num vocabulário ou léxico, que – no caso das linguagens formais
– tem que ser finito. Os verdadeiros problemas têm a ver com as várias possibilidades
de trabalhar cada palavra presente no vocabulário da linguagem.
Além das análises (sobretudo no que toca às linguagens formais - sintáctica,
semântica e pragmática) é possível a escrita de gramáticas que através de árvores de
identificação (“parsing”) permitem “dissecar” cada frase.
Frase SN SV
SN Artigo Nome
SN Nome
SV Verbo SN
SV Verbo
Artigo o | a
Nome rapaz | Maria | bola
Verbo conhece | joga
Esta gramática pode originar a seguinte árvore de parsing:
Trabalho Teórico
pág. 17/19
Linguagens e Programação – 2006/2007
Trata-se de um caso particular de uma Gramática Livre de Contexto (CFG- Context
Free Grammar), que são definidas na forma Backus-Naur.
Dotar os computadores de capacidade para entender e processar a LN é uma tarefa
que não só durará várias décadas como – e é minha opinião pessoal – nunca serão os
computadores a processar a LN mas serão sim LA desenvolvidas de forma que terão
uma proximidade tal que se irão confundir com a LN. Da mesma forma que é “giro”
alguém perguntar numa sala de aulas:
“Já sabes a tua nota do trabalho teórico de LPROG?”
e essa pessoa receba uma resposta do género:
“Ainda não saiu o output...”
O que significa que será mais fácil uma derivação linguística de encontro ao que as
máquinas tenham capacidade de processar por parte dos seres humanos de modo que
o famoso teste de Alan Turing se realize com sucesso...
Trabalho Teórico
pág. 18/19
Linguagens e Programação – 2006/2007
8 - Bibliografia
Gal A., Lapalme G., Saint-Dizier P. e Somers H. (1991) Prolog for Natural Language
Processing, John Wiley & Sons, England
Coelho, Helder (1995) Inteligência Artificial em 25 lições, Fundação Calouste
Gulbenkian, Lisboa, Portugal
Ramos, Carlos (2007), Apontamentos de Língua Natural, Instituto Superior de
Engenharia do Porto – ISEP, Porto, Mar. 2007
http://en.wikipedia.org/wiki/Natural_language
Trabalho Teórico
pág. 19/19
Download