Alinhamento de corpus bilíngüe 
com Software Livre

	         José Fontebasso Neto		Jorge Kinoshita
	jose.fontebasso@poli.usp.br		jorge.kinoshita@poli.usp.br

Departamento de Sistemas Digitais
Escola Politécnica da Universidade de São Paulo
Av. Prof. Luciano Gualberto, tv 03, 158

Resumo
Um corpus bilíngüe é uma coletânea de textos e suas traduções. O alinhamento corresponde a relacionar parte do texto em uma língua com parte do texto em outra língua. Ele pode ser feito em diversos níveis: parágrafos (relacionando os parágrafos com as respectivas traduções), sentenças ou palavras. 
Este trabalho descreve o resultado de um trabalho de mestrado utilizando basicamente o sistema operacional Linux na distribuição RedHat 9.0 e linguagem de programação PERL na versão 5.8.0 no alinhamento de sentenças e palavras.
Para tanto, dividimos o trabalho do seguinte modo: na seção 1, situamos o escopo desse trabalho, na seção 2, tratamos da aquisição dos textos, na seção 3, descrevemos as etapas do processamento desenvolvido, e por fim, na seção 4 fizemos nossas conclusões discutindo as vantagens dos softwares utilizados e possíveis aplicações para as etapas do processos implementado.

1.	Introdução
O objetivo deste trabalho é apresentar os resultados da dissertação de mestrado de José Fontebasso Neto [Fon03] que utilizou software livre, principalmente o perl, no alinhamento de corpus bilíngüe usando métodos estatísticos. Este corpus corresponde à documentação sobre Linux (linuxtotal, gas, gar, man pages, etc.) em Inglês, Português e Espanhol. Como resultado desse alinhamento obtivemos um dicionário estatístico no domínio do Linux. Por exemplo, o dicionário automaticamente construído é capaz de relacionar "printer" a "impressora".

2.	Aquisição dos dados
Para construir dicionários de forma automática , os processos que implementamos necessitam de textos originais e suas traduções em formato .txt, sem qualquer formatação especial.
Inicialmente, procuramos tais textos na internet e os encontramos em formato HTML e suas variações. Para extrair os textos .txt necessários diretamente da internet, desenvolvemos um script PERL, no qual inserimos um comando de linha para o Lynx, um navegador web em texto, que fez a transferência e conversão dos textos em formato HTML dos servidores na internet para textos em formato .txt em nossos computadores.
Outra fonte de textos originais e suas traduções são as man pages do Linux, documentos que descrevem os comandos e funções daquele sistema operacional. As man pages possuem formatação própria, que inviabiliza seu uso diretamente, assim, desenvolvemos outro script PERL, no qual inserimos um comando de linha para o groff, um sistema de formatação de documentos, o qual transformou as man pages em documentos .txt.
As ferramentas utilizadas nessa etapa do processo e sua documentação acompanham as diversas distribuições Linux, sendo instaladas automaticamente durante a instalação do sistema operacional.

3.	O Processo [Fon03]
Com os textos originais e suas traduções disponíveis em formato .txt, iniciamos a construção dos dicionários. Empregamos um processo separado em três etapas genéricas:
1. Separar os textos em sentenças;
2. Alinhar as sentenças dos textos; e
3. Alinhar as palavras nas sentenças.
Fazemos a separação em três etapas para aumentar a eficiência, reduzindo o conjunto de possibilidades a ser pesquisado.Poderíamos pensar em combinar cada palavra do texto original com cada palavra do texto traduzido, colocar as contagens em ordem decrescente e produzir o dicionário a partir das maiores contagens, mas além do número de operações, que cresce exponencialmente com a quantidade de palavras, há outros fenômenos que pode fornecer resultados ambíguos, como a co-ocorrência, que é a ocorrência de conjuntos de palavras, os quais não são traduções, por exemplo: em textos na língua inglesa existe a palavra not, cuja tradução para língua portuguesa é não. Em alguns textos, pode ocorrer a expressão do not = don't e omodelo de tradução pode identificar do=não, ao invés de not=não.  .
Para ilustrar o processo, tomemos como exemplo a figura 1, na qual estão dois trechos de texto que, a priori, são traduções mútuas, um em inglês e outro em português.Figura 1 - Trechos de textos

3.1.	 Separar Textos em Sentenças
Inicialmente tratamos da identificação do limite das sentenças, pois a maior parte dos modelos de alinhamento que usam métodos estatísticos ou empíricos, como os propostos por Gale e Church [G&C93], Kay e Röscheisen [K&R93], Melamed [Mel96], necessitam que os textos estejam com suas sentenças separadas.
Aqui, sentenças são fragmentos de texto limitados entre dois dos seguintes sinais de pontuação: ponto ".", ponto de exclamação "!" e ponto de interrogação "?"; assim, para identificar os limites das sentenças, basta encontrar e marcar os sinais de pontuação ".", "!" e "?".
Vejamos um par de trechos de sentenças extraído dos parágrafos da figura 1:

Many so-called Public Data Networks, like Tymnet in the U.S., or Datex-P ....
... podem ser mapeados em X.25 e vice-versa, eles são simplesmente encapsulados ...

Observamos que há pontos finais ambíguos, nos trechos ... U.S. ... e ... X.25 ..., que não se referem a limites de sentenças, exigindo um refinamento na busca e marcação dos limites de sentenças.
Para tratar os sinais de pontuação ambíguos, implementamos, através de scripts PERL, um modelo de identificação de limites de sentenças proposto por Reynar e Ratnaparkhi [R&R97] para localizar e calcular a probabilidade de que um sinal de pontuação ".", "!" e "?" seja um limite de sentença, ou não, através da análise das palavras que antecedem e seguem o sinal de pontuação, produzindo uma separação do texto como a da figura 2.

Figura 2 - Trechos separados em sentenças
A implementação explora as características do PERL para manipulação de hashes, produzindo scripts de fácil entendimento, grande flexibilidade e boa precisão, com 97,5% de acerto.

3.2.	 Alinhar Sentenças
Com os textos separados em sentenças, o objetivo nessa etapa é descobrir quais grupos de sentenças são traduções mútuas, o qual, como no caso dos limites de sentenças, também não é problema simples, uma vez que os tradutores humanos, por motivos lingüísticos, estéticos e de clareza, nem sempre mantêm a distribuição de parágrafos e sentenças do texto original.
Para dar uma idéia do problema, vejamos na figura 3 o nosso exemplo com seus grupos de sentenças alinhados. O primeiro grupo tem um par de sentenças, o segundo grupo contém dois pares de sentenças e o terceiro grupo, um par de sentenças.

Figura 3 - Grupos de sentenças alinhados

Observamos que no segundo grupo, a primeira sentença do Trecho Inglês é correspondente a parte da primeira sentença do Trecho Português, enquanto que a segunda sentença do Trecho Inglês corresponde à outra parte da primeira sentença do Trecho Português e à segunda sentença do Trecho Português, de modo que o alinhamento só é correto quando os dois pares de sentenças são considerados.
Há vários modelos para alinhar sentenças; todos o fazem através de algum tipo de medida do comprimento das sentenças, isto é, medem o comprimento das sentenças em caracteres ou em palavras e determinam, através de uma função estatística ou de alguma heurística, a probabilidade de que as sentenças se alinhem, obtendo resultados similares ao da figura 3.
Neste trabalho, utilizamos scripts PERL para implementar os modelos de Gale e Church e de Melamed  para alinhamento de sentenças.
A escolha do PERL para as implementações deve-se às diversas funções para manipulação e transformação de cadeias de caracteres pois, em ambos os modelos, é necessário comparar os caracteres das palavras nas sentenças.

3.3.	 Alinhar Palavras
O último passo do processo é descobrir quais grupos de palavras no texto original correspondem a quais grupos de palavras no texto traduzido.
Há muitas maneiras de encontrar as correspondências entre as palavras, umas mais simples e diretas, outras mais elaboradas, tudo depende da aplicação. Assim, nessa etapa encontramos as correspondências entre as palavras desenvolvendo uma aplicação em tradução automática que usa sentenças alinhadas como entrada.
Os problemas para descobrir as correspondências entre as palavras são similares aos do alinhamento de sentenças. Os tradutores humanos não traduzem exatamente cada palavra do texto original, seja por motivos estéticos ou lingüísticos, como agravante, também não mantêm a ordem das palavras. 
A figura 4 apresenta uma sentença com suas correspondências entre as palavras assinaladas. Essas correspondências chamamos de alinhamento.

Figura 4 - Alinhamento de palavras
Vemos na figura 4 alguns dos problemas inerentes ao alinhamento de palavras, como palavras sem a devida correspondência, indicadas por ?????, mudança na ordem das palavras, como no par process/processo, e o caso onde um grupo de palavras em um dos textos se alinha com um grupo de palavras no outro texto.
As peculiaridades de cada idioma, mais que o tradutor, são responsáveis por estes problemas; mas há diversos modelos que os tratam e determinam a tradução de uma dada sentença, como os propostos por Brown et alli [Bro93] e Melamed [Mel00].
Em geral, os modelos encontram os alinhamentos entre as palavras como uma etapa de um processo mais elaborado, por exemplo, construir um dicionário, ou um tradutor de textos, e usam alguma função estatística ou heurística para estimar os alinhamentos, que leva em consideração:
•	A co-ocorrência, que é a contagem de ocorrências simultâneas das palavras no corpus;
•	A posição das palavras nas sentenças alinhadas; e
•	Alguma característica da palavra, como nomes próprios e termos técnicos.
Assim, ao entrar com uma sentença em um modelo de tradutor de textos, o resultado é uma provável tradução baseada naquela função.
Nossas implementações dos modelos de tradução automática propostos por Brown et alli [Bro93] são desenvolvidas com PERL, isso produziu scripts simples e flexíveis dadas as características intrínsecas do PERL para tratamento de cadeias de caracteres e  manipulação de hashes com as probabilidades de tradução de cada palavra.

4.	Resultados e Conclusões
Para testar nossas implementações, submetemos à cada etapa do processo textos planos produzidos a partir das man pages do Linux nos idiomas inglês, espanhol e português.
Obtivemos, na tabela 1, os seguintes resultados médios para cada etapa do processo.

Tabela 1 – Resultados obtidos no processo
Tais resultados são compatíveis com os encontrados em [R&R97],[G&C93] e [Bro93], e mostram que as implementações feitas com PERL e Linux podem servir como ferramentas de auxílio à tradução.
O modelo de separação de sentenças pode ser adaptado para efetuar processos de classificação diversos, como Reynar e Ratnaparkhi mostraram em [R&R97].
Os modelos de alinhamento de sentenças produzem pares de sentenças que são traduções mútuas, sendo assim, esses modelos podem implementar dicionários contextuais, nos quais o tradutor vê o contexto da palavra desejada, conforme Gale e Church descrevem em [G&C93].
Os modelos de alinhamento de palavras produzem pares de palavras equivalentes, e no nosso caso implementam um construtor de dicionários estatísticos, produzindo resultados como o da figura 5.
Figura 5 – Exemplo de dicionário estatístico
Em todos as etapas do processo, as ferramentas de software livre mostraram excelente desempenho e muita versatilidade, permitindo tratar problemas de grande complexidade com elegância e simplicidade.
As vantagens de utilizar ferramentas de software livre nesse trabalho residem na qualidade técnica dos pacotes e sua documentação, seu baixo custo (zero) e no fato de serem comuns na maioria das distribuições (ex: no nosso caso usamos o  RedHat 9.0), dispensando maiores conhecimentos para sua instalação e uso. Não encontramos  desvantagens no uso de software livre.

Bibliografia
[Bro93] Brown, P. et alli The Mathematics of Statistical Machine Translation: Parameter Estimation. Computational Linguistics, v.19 n.2 p.263-311. 1993. 
[G&c93] Gale, W.; Church, K. A Program for Aligning Sentences in Bilingual Corpora. Computational Linguistics, v.19 n.1 p.75-102. 1993.
[Fon03] Fontebasso Neto, J. Alinhamento de Corpus Bilíngüe: modelos e aplicações – Dissertação de Mestrado – Escola Politécnica da Universidade de São Paulo, 151p 2003.
[K&R93] Kay, M.; Röscheisen, M. Text-Translation Alignment. Computational Linguistics, v.19 n.1 p.121-142. 1993. 
[Mel96] Melamed, I. Dan A Geometric Approach to Mapping Bitext Correspondence. Proceedings of the First Conference on Empirical Methods in Natural Language Processing, Philadelphia, PA, 1996. Disponível em:<http://citeseer.nj.nec.com/182431.html>. Acesso em: 10/03/2002.
[Mel00] Melamed, I. Dan Models of Translational Equivalence among Words. Computational Linguistics, v. 26 n. 2 p.221-249. 2000.
[R&R97] Reynar, J.; Ratnaparkhi, A. A Maximum Entropy Approach to Identifying Sentence Boundaries. In Proceedings of the Fifth Conference on Applied Natural Language Processing, pages 16--19, Washington D.C. 1997. Disponível em : <http://citeseer.nj.nec.com/reynar97maximum.html>. Acesso em : 10/03/2002.