Dividir posts grandes para tradução bem-sucedida

Eu uso o plugin Tradutor com o serviço da Microsoft. Se o post for grande o suficiente, ele não pode ser traduzido com o seguinte erro:

Esta postagem é muito longa para ser traduzida pelo tradutor.

Você poderia implementar um recurso de tradução por parágrafo para contornar esse problema?

2 curtidas

Isso é uma parte normal do Google Tradutor e acredito que o limite de palavras seja algo em torno de 500.

Se você frequentemente recebe algo maior que isso, vejo algumas opções:

  1. Analisar manualmente o conteúdo em blocos de texto menores que 500 palavras (ou o que for o limite).
  2. Utilizar outra API do Google que faça tradução de documentos (não tenho certeza, mas acho que eles têm uma; você precisa perguntar lá).
  3. Usar outro site que faça tradução de documentos e torcer para que eles ofereçam APIs.

Não se esqueça de nos dizer o que funcionou.

Eu uso a API da Microsoft, não do Google.
Parece que a Microsoft tem um limite de 10.000 caracteres por solicitação única: Service limits - Translator - Foundry Tools | Microsoft Learn

Acho que o mais fácil seria dividir a postagem por parágrafos (“\r\n\r\n” ou

), assumindo que o parágrafo não será maior que 10.000 caracteres?

1 curtida

Ainda não usei o Microsoft Translate, então você está à frente nesse ponto — embora suspeite que, em teoria, os métodos seriam os mesmos.

Gosto da sua ideia de analisar as quebras de parágrafo, embora não tenha certeza de que deveria assumir que todo documento tenha terminação de linha CR/LF. O Unix usa apenas o caractere LF. O Mac usa apenas o caractere CR. O Windows usa ambos. Outros documentos podem usar um byte nulo como caractere de fim de linha.

O Unicode também traz seus próprios problemas, já que cada caractere tem dois bytes de comprimento.

Solução possível: Analise a terminação de linha na primeira ou nas duas primeiras frases, armazene-a como um valor e, em seguida, converta todas as terminações de linha para apenas “\n” antes de analisar o documento. Após concluir o processamento do documento, você pode redefinir automaticamente para a terminação de linha correta.

Um método seria varrer o texto para frente até atingir 10.000 palavras e, em seguida, varrer para trás em busca de uma quebra de parágrafo. Posicione um ponteiro de início no início do bloco atual, avance a varredura e, ao encontrar a última quebra de parágrafo antes das 10.000 palavras, posicione um ponteiro de fim. Recorte esse bloco, traduza-o, mova-o para o documento de resultado, ajuste o ponteiro de início para a posição do ponteiro de fim e continue.

==============================

De passagem, softwares de tradução podem ser terríveis, pois muitas vezes a tradução é extremamente sensível ao contexto, contém gírias ou usa jargão. Da mesma forma, termos técnicos ou palavras específicas de uma determinada profissão ou habilidade — que não deveriam ser traduzidas em muitos casos — são estragados de forma horrível. Documentos jurídicos, médicos e de engenharia/técnicos são exemplos clássicos.

Enviei um documento médico complexo (o relatório cirúrgico de uma cirurgia cerebral de alguém) por meio de dois tradutores diferentes — Google e Yandex — tentando traduzi-lo para o russo. O resultado de ambas as traduções foi mais parecido com uma lasanha ruim do que com um documento legível!

@jharris1993, assumo que você esteja sugerindo que eu implemente o recurso. Infelizmente, não tenho experiência com Ruby, e isso levaria muito mais tempo do que levaria para uma pessoa experiente.
Claro, posso fazer uma implementação rápida, mas ela não será mesclada.

No meu fórum, a tradução mais solicitada é de posts técnicos do russo para o inglês. A Microsoft faz um trabalho muito bom nisso.

1 curtida

Que legal!

Que fórum é esse, por favor me diga. Se ele conseguir fazer inglês => russo, talvez eu envie meu próximo documento longo e complexo por ele!

A tradução é realizada com o plugin discourse-translator. Achei que havia criado este tópico na categoria de plugins, mas ele ficou sem categoria.

1 curtida