Usuário com melhor resposta
Criação de um Tradutor [PT/EN] em C# [Visual Studio/MS Access]

Pergunta
-
Boa tarde pessoal,
Comecei há poucos meses a programar por iniciativa própria e pretendo agora construir um tradutor que traduza Inglês para Português e Português para Inglês.
É um desafio. Neste momento já criei uma base de dados, em Access, com cerca de 300 palavras que faz a conexão entre as duas tabelas (por exemplo, tabela portuguesa - 101 olá; tabela inglesa - 101 hello; e já estão ligadas com FK).
A conexão da base de dados ao Visual Studio já está feita e a correr lindamente. Consegui com que apareçam nas textbox a partir de uma tabela criada no Access os dois tipos de idioma que serão utilizados.
E agora chega a parte onde não consigo avançar mais e é a mais importante: a tradução da frase que não sei realmente como fazer, quer dizer, na teoria tenho uma ideia. Escrever uma querry que encontra a tradução, executá-la, ler o resultado e apresentar numa outra textbox. Alguém pode dar-me umas "luzinhas" a apontar-me na direcção correcta de como realmente fazer esta parte da tradução?
Obrigado a todos desde já.
Respostas
-
Nao é possivel deste jeito.. Para traduzir uma frase é bem mais complexa que traduzir palavras. E creio que mesmo a traduçao de palavras voce nao esta fazendo da forma correta.
No seu exemplo, sua ligaçao é 1 para 1 (hello <--> olá), mas na verdade é N para N, que sao palavras homonimas, exemplo: Morro, Leve, Caminho, etc (veja mais aqui)
No caso de Morro, qual seria a palavra em ingles? Die ou Hill? Como voce traduziria a frase: "Eu ainda morro no Morro do Boréu"?
A frase correta em ingles seria "I still die in the Boréu's Hill".. Note que a palavra morro existe em dois contextos diferentes, verbo morrer conjugado na primeira pessoa no presente do indicativo e o substantivo masculino sinonimo de montanha.
Alias essa tripo de frase é tao complexa que nem o google translator consegue traduzir (pode trentar)
Outra frase tipica: "Maria, não saia de saia", o correto seria "Maria, do not go out there wearing a dress".. e a versao do google: "Mary does not come out of exit" (errrrr.....)
Mas veja um caso bem simples: "O livro é verde", "The book is green"... facil nao, mesma quantidade de palavras (4 em ingles e em protugues). "O" traduz em "The" , livro em book, é em is, verde em green. O contrario é verdade? Não!!
The pode ser: O, A, OS, AS.. para saber qual usar voce tem que analisar o sujeito e verificar genero e numero, no caso Book é Livro que é um substinto masculino e neste caso esta no singular.
Is é a conjugaçao do verbo "To Be" na primeira pessoa do pessoa no presente, e neste caso pode ser traduzido como "é" ou "está", como saber? Mais uma vez analizando o contexto
Green é o adjetivo Verde
Agora qual é traduçao correta para "The book is green":
1- O livro é verde.
2- O livro está verde.
1 ou 2, ou 1 e 2?
Traduçao nao é somente a relaçao entre palavras entre linguas. É muito (mas muito) mais complexo que isso e nao se resolve de forma linear... para isso voce vai ter que usar logica difusa com conceitos de redes neurais.
Voce precisaria "ensinar" seu tradutor todo a gramatica e semantica das duas linguas e ainda assim voce nao alcança 100% na traduçao...
E isso nao é só um problema especifico de programaçao. De dois livros em ingles pra dois tradutores profissionais para traduzi-los em portugues. Garanto que o resultado final será diferente.
Eu começaria com algo mais simples do que isso. Se voce nunca escalou uma montanha, nao comece pelo K2.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam TrindadeModerator quarta-feira, 16 de dezembro de 2015 17:52
- Marcado como Resposta Marcos SJ quarta-feira, 16 de dezembro de 2015 18:54
Todas as Respostas
-
Nao é possivel deste jeito.. Para traduzir uma frase é bem mais complexa que traduzir palavras. E creio que mesmo a traduçao de palavras voce nao esta fazendo da forma correta.
No seu exemplo, sua ligaçao é 1 para 1 (hello <--> olá), mas na verdade é N para N, que sao palavras homonimas, exemplo: Morro, Leve, Caminho, etc (veja mais aqui)
No caso de Morro, qual seria a palavra em ingles? Die ou Hill? Como voce traduziria a frase: "Eu ainda morro no Morro do Boréu"?
A frase correta em ingles seria "I still die in the Boréu's Hill".. Note que a palavra morro existe em dois contextos diferentes, verbo morrer conjugado na primeira pessoa no presente do indicativo e o substantivo masculino sinonimo de montanha.
Alias essa tripo de frase é tao complexa que nem o google translator consegue traduzir (pode trentar)
Outra frase tipica: "Maria, não saia de saia", o correto seria "Maria, do not go out there wearing a dress".. e a versao do google: "Mary does not come out of exit" (errrrr.....)
Mas veja um caso bem simples: "O livro é verde", "The book is green"... facil nao, mesma quantidade de palavras (4 em ingles e em protugues). "O" traduz em "The" , livro em book, é em is, verde em green. O contrario é verdade? Não!!
The pode ser: O, A, OS, AS.. para saber qual usar voce tem que analisar o sujeito e verificar genero e numero, no caso Book é Livro que é um substinto masculino e neste caso esta no singular.
Is é a conjugaçao do verbo "To Be" na primeira pessoa do pessoa no presente, e neste caso pode ser traduzido como "é" ou "está", como saber? Mais uma vez analizando o contexto
Green é o adjetivo Verde
Agora qual é traduçao correta para "The book is green":
1- O livro é verde.
2- O livro está verde.
1 ou 2, ou 1 e 2?
Traduçao nao é somente a relaçao entre palavras entre linguas. É muito (mas muito) mais complexo que isso e nao se resolve de forma linear... para isso voce vai ter que usar logica difusa com conceitos de redes neurais.
Voce precisaria "ensinar" seu tradutor todo a gramatica e semantica das duas linguas e ainda assim voce nao alcança 100% na traduçao...
E isso nao é só um problema especifico de programaçao. De dois livros em ingles pra dois tradutores profissionais para traduzi-los em portugues. Garanto que o resultado final será diferente.
Eu começaria com algo mais simples do que isso. Se voce nunca escalou uma montanha, nao comece pelo K2.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam TrindadeModerator quarta-feira, 16 de dezembro de 2015 17:52
- Marcado como Resposta Marcos SJ quarta-feira, 16 de dezembro de 2015 18:54
-
Obrigado pela resposta William e por tudo o que me disse o mais certo é nem tentar criar um tradutor do estilo do Google mas apenas uma só palavra com várias definições. É algo mais fácil de realizar e poderia aproveitar a base de dados que construí, certo?