Sociedade e Mundo

#A Pólis que somos
Pedro Cordeiro

A Mnemónica Colectiva
Vítor Miguel de Freitas

Ciências Sociais

# Comunidades Virtuais na Internet:
O canal #Angola no IRC da PT-Net

André Correia

Processamento da Linguagem Natural
João Ricardo Silva

Arquitectura e Design

# A Cidade do Rio de Janeiro
Rita Braga Alves

NewKarma
Nuno Campos

Arte e Entretenimento

# Pólis, Comunidade e Museus:
(Re)clamar um Espaço Nosso

Lia Jorge

Desertos de Almas
Pedro Alves

Espaço Criação

#Manifesto A
Anónimo

Mindscapes
João Leal Lamy

Processamento da Linguagem Natural
João Ricardo Silva

A linguagem é uma característica humana. Embora os outros animais sejam capazes de comunicar, tanto quanto sabemos nenhum possui uma linguagem (e se algum animal discorda disto, que o diga). Pode parecer antropocentrismo, como se disséssemos “linguagem é definida como sendo a comunicação humana,” mas a nossa linguagem tem de facto características que parecem não surgir na comunicação animal. Em particular, a linguagem é um sistema que consegue ser infinitamente produtivo. Qualquer um de nós consegue produzir uma frase nova, nunca antes dita, e tê-la entendida por outros.

Sendo a linguagem uma característica tão humana, as implicações filosóficas de conseguir processá-la com uma máquina a um nível equiparável ao humano seriam imensas. Daí, quando nos referimos ao seu processamento por parte de um computador temos tendência a recorrer ao uso de aspas ao escrevemos coisas como: Queremos fazer com que o computador “entenda” a frase.

Há uma experiência conceptual (Gedankenexperiment) famosa sobre este assunto: O Teste de Turing (Turing, 1950)[1]. Resumidamente, o Teste de Turing consiste em deixar uma pessoa entrar em conversação com um computador digital e com uma outra pessoa. Os três participantes estão isolados uns dos outros. Se a primeira pessoa não conseguir distinguir se o seu interlocutor é o computador ou a pessoa, considera-se que o computador passou o teste.

Este exercício substitui a pergunta “Pode uma máquina pensar?” pela questão “Pode um computador digital passar o teste?”. A questão original requer que os termos “máquina” e “pensar” sejam definidos, o que já por si é complicado. A reformulação de Turing é mais precisa e, principalmente, providencia um método concreto para o realizar.

Há já vários anos que o teste deixou de ser uma experiência meramente conceptual. Anualmente, vários sistemas competem, até agora sem sucesso, tentando serem os primeiros a passa-lo e ganhar o Prémio Loebner[2].

Em meados da década de 50, os investigadores que trabalhavam na recentemente criada área da Inteligência Artificial (IA) sentiam-se optimistas. O computador digital, desenvolvido poucos anos antes, parecia ser uma forma promissora para finalmente conseguir “mecanizar” a racionalidade e conseguir assim simular inteligência humana recorrendo a uma máquina.

Na época, um dos ramos da IA mais activo era o Processamento da Linguagem Natural (PLN). O foco principal encontrava-se na tarefa de tradução automática, motivado em grande parte pela necessidade de se ter acesso rápido a documentos russos. Em 1954, com a intenção de assegurar financiamento para a área, a IBM e a Universidade de Georgetown realizaram uma demonstração pública da tecnologia de tradução automática (de russo para inglês). Apesar de o sistema ser bastante simples e de as frases a traduzir estarem restritas a um domínio específico (química orgânica), os resultados foram vistos como sendo bastante promissores, levando muitos a estimar que bastariam apenas mais alguns anos até que um sistema de tradução generalista fosse criado (Hutchins, 2004).

(pausa dramática) Estavam errados.

Os sistemas da época funcionavam sobre domínios muito limitados. Com tais restrições é possível criar sistemas de PLN que conseguem, de facto, ser bastante impressionantes. Por exemplo, nos finais dos anos 60, Terry Winograd criou o sistema SHRDLU. Este sistema operava sobre um “mundo de blocos”, no qual todas as interacções envolvem um conjunto limitado de objectos (cubos, cones, etc.) e de operações (pegar, mover, etc). A leitura da transcrição de um diálogo com o sistema SHRDLU pode levar-nos a vislumbrar as causas do excesso de optimismo na altura[3]. No entanto, o desempenho dos sistemas de PLN torna-se bastante pior quando aplicados a domínios não-restritos.

Existe uma aparente contradição em PLN, e que surge também em muitos outros ramos da IA, como a visão computacional: Os computadores substituíram com grande sucesso os humanos[4] nas tarefas que estes últimos achavam extremamente complicadas, como o cálculo de trajectórias balísticas para mísseis e a criptografia. No entanto, aquilo que é fácil e natural para os humanos tende a ser extremamente difícil de fazer num computador.

Entender linguagem é-nos de tal forma natural que nem temos consciência das enormes dificuldades inerentes a essa tarefa. Por exemplo, um dos maiores problemas com que os sistemas computacionais têm que lidar é com a ambiguidade, que surge nos mais diversos níveis do processamento.

Quase todas as frases, por mais simples que sejam, possuem um certo grau de ambiguidade. Várias palavras são ambíguas em termos da sua categoria sintáctica (“a” pode ser um artigo definido, uma preposição ou um pronome clítico), e muitas palavras têm mais do que uma acepção, como “banco” (mobília vs. instituição). Mas, para além das palavras, as próprias estruturas sintácticas são ambíguas. No exemplo clássico “O João viu a Maria com o binóculo”, quem tem o binóculo?

As primeiras abordagens ao PLN eram baseadas em regras. Por exemplo, um linguista, usando o seu conhecimento da língua, criava manualmente um conjunto de regras (uma gramática). Esta gramática era então usada por um computador para analisar frases. No entanto, perante uma situação ambígua, e não tendo qualquer razão para preferir uma alternativa à outra, o computador teria que considerar todas as análises possíveis. O potencial para ambiguidade tende a aumentar à medida que novas regras são acrescentadas à gramática para que esta lide com mais fenómenos linguísticos. Uma gramática computacional “a sério”, perante uma frase de tamanho médio (cerca de 20 palavras), pode muito bem produzir milhares de análises diferentes, todas elas gramaticalmente válidas.

Parece óbvio, no entanto, que o nosso cérebro não gera todas as análises possíveis cada vez que ouvimos uma frase. De alguma forma, conseguimos constantemente filtrar hipóteses e escolher a análise mais plausível[5]. De alguma forma, conseguimos estar constantemente a integrar conhecimento do mundo real e senso comum para filtrar as análises implausíveis (se bem que gramaticalmente correctas). No exemplo anterior, a maioria das pessoas optará provavelmente pela leitura em que é o João quem tem os binóculos. Mas, para a frase “O João viu a Maria com as flores,” a outra leitura seria a preferencial pois, como é óbvio, não se podem usar flores para ver. Este facto não é de forma alguma “óbvio” para um computador, e a representação de senso comum tem sido um dos entraves à IA.

As abordagens estatísticas (Manning & Schütze, 1999) ao PLN visam lidar com o problema da ambiguidade. Estas abordagens permitem, por exemplo, produzir a análise mais plausível de uma frase. Para decidir o que é plausível ou não, recolhem dados estatísticos de uma grande quantidade de textos[6]. Por essa razão, só começaram a ser usados extensivamente quando o aumento do poder computacional e a existência de textos em formato digital permitiu realizar tal recolha. A desvantagem destas abordagens é que as análises produzidas tendem a ser menos ricas (em termos da informação linguística que contêm) do que as análises produzidas por uma gramática construída manualmente.

Uma solução natural parece então ser combinar os pontos fortes de ambas as abordagens. De facto, é esse o caminho que muitos investigadores estão a tomar: Combinar gramáticas construídas manualmente com um critério estatístico para, por exemplo, escolher a análise mais provável de entre todas as que são produzidas.

Os sistemas mais avançados actuais ainda não conseguem passar o Teste de Turing, mas também não estão a tentar fazê-lo. Não temos ainda o HAL 9000, mas nenhum sistema está a tentar sê-lo. O facto de muitas das expectativas e promessas iniciais não terem sido cumpridas pode ter criado uma sensação de que PLN, de alguma forma, falhou, quando tal não é verdade. A tecnologia de PLN está presente em muitas aplicações, mas tal como muitas outras tecnologias, a sua ubiquidade torna-a quase imperceptível para quem a usa.

O corrector ortográfico no processador de texto e o motor de busca que retorna documentos relevantes da Web são talvez os exemplos mais familiares, mas são também aqueles que tiram menos partido de algum tipo de PLN. Exemplos mais interessantes serão os sistemas de tradução automática, sendo um dos mais famosos o Google Translate, uma abordagem estatística à tradução que tira partido do acesso privilegiado que o Google tem a imensos dados multilingue.

Um projecto recente, e potencialmente interessante para os leitores desta revista, é a iniciativa CLARIN[7]. A ideia deste projecto é criar uma infra-estrutura de recursos e ferramentas para a investigação na área de Humanidades.

Tomemos como exemplo um historiador que deseja analisar documentos sobre o 25 de Abril, e como este foi relatado nos jornais portugueses e estrangeiros. Terá que começar por achar os documentos, que podem estar espalhados por diversos repositórios e em diferentes formatos (texto, digitalizações, registos audiovisuais, etc).

Só este primeiro passo já é problemático, pois com a explosão do número de fontes, e em especial com a Web, chegámos a um ponto onde é possível achar demasiada informação. Os dados relevantes perdem-se entre a redundância e o ruído. Conseguindo achar os documentos, há que extrair a informação relevantes contida deles. As digitalizações podem requerer um processo de OCR (Optical Character Recognition) e os registos audiovisuais um processo de transcrição. Se os documentos estiverem em diferentes línguas, pode ser necessário traduzi-los ou, se forem demasiado longos, sumarizá-los. Embora existam ferramentas para cada uma destas tarefas, estas encontram-se espalhadas, e terá que ser o utilizador a obter cada uma, configurá-las, corrê-las sobre os dados, etc[8]. Depois disto, pode então “começar” a trabalhar.

Com a infra-estrutura CLARIN montada, o nosso hipotético historiador faria uma busca do género “Referências ao 25 de Abril na imprensa europeia”. Um sistema de PLN processaria a questão e remeteria o pedido para um sistema de busca multilingue que acharia os documentos relevantes. Se o utilizador assim o desejasse, os documentos poderiam ser automaticamente traduzidos ou sumarizados.

Podem parecer expectativas elevadas, como as dos anos 50, mas neste caso sabemos que as ferramentas para desempenhar estas tarefas existem. No entanto, encontram-se espalhadas por diferentes grupos de investigação em PLN. O projecto CLARIN visa então integrar os recursos e ferramentas já existentes.

Referências

HUTCHINS, John. 2004. The Georgetown-IBM Experiment demonstrated in January 1954. In Machine translation: from real users to research. Sixth Conference of the Association for Machine Translation in the Americas.

MANNING, Christopher & Hinrich Schütze, 1999. Foundations of statistical natural language processing. 1ª edição. The MIT Press.

TURING, Alan. 1950. Computing machinery and intelligence. Mind, 59, 433-460. Disponível, por exemplo, aqui

.....

[1] Alan Turing (1912-1954) foi um dos cientistas mais importantes do
século passado. Além do Teste de Turing, é conhecido pela sua
contribuição para o quebrar da máquina Enigma (usada para cifrar as
comunicações alemãs durante a guerra) e por ter formalizado os
limites teóricos para a computação (cf. Máquina de Turing). É também
lembrado por razões mais infelizes: Foi condenado por
homossexualidade em 1952, tendo sido submetido a tratamento
hormonal como alternativa a cumprir pena efectiva. Dois anos depois
morreu de aparente suicídio. Em 2009, o Governo Britânico pediu
oficialmente desculpas pela forma como tratou Alan Turing.

[2] Prémio Loebner: link
Uma curiosidade: Possivelmente, já se deparou com websites que
pedem que introduza uma palavra que é mostrada deformada. Este
teste serve para determinar se o utilizador é humano ou máquina. O
teste chama-se CAPTCHA, o acrónimo para “Completely Automated
Public Turing test to tell Computers and Humans Apart”.

[3] Diálogo com o sistema SHRDLU: link  

[4] Curiosamente, o termo “computador” era originalmente usado
para referir as pessoas que faziam os cálculos manualmente.

[5] É possível induzir em erro o nosso desambiguador mental. As frases “garden path" (link) fazem exactamente isto ao levar-nos a escolher a análise errada.

[6] Os textos usados para a recolha estão tipicamente já anotados
com informação linguística. Assim, é possível recolher dados
estatísticos como a frequência de co-ocorrência de certas categorias de
palavras. Por exemplo, embora “ a ” seja ambíguo entre várias
categorias, se ocorrer após um verbo é mais provável que seja um
artigo definido.

[7] Website CLARIN: http://www.clarin.eu

[8] Aviso: A tarefa de combinar diferentes ferramentas, criadas por
diferentes pessoas, cada uma com diferentes requisitos, é algo que
consegue trazer a superstição ao cientista da computação mais racional: “Sim, eu sei que não alterei nada desde a última vez que o programa falhou, mas vou voltar a corrê-lo. Mas desta vez vou carregar no ENTER com o indicador da mão esquerda.”

 

Share |


© PROJECTO10 - 2010 . PROJECTO10 - Revista Digital Temática - 10 Números 10 Temas.