Confucius e Margarita





Introdução



Existem muitas competições de aprendizado de máquina, assim como as plataformas em que são realizadas, e para todos os gostos. Mas nem sempre o tema do concurso é a língua humana e seu processamento, ainda menos frequentemente essa competição é associada ao idioma russo. Recentemente, participei de uma competição de tradução automática de chinês para russo na plataforma ML Boot Camp da Mail.ru. Não tendo muita experiência em programação competitiva, e tendo passado, graças à quarentena, todas as férias de maio em casa, consegui o primeiro lugar. Vou tentar falar sobre isso, bem como sobre as linguagens e a substituição de uma tarefa por outra no artigo.



Capítulo 1. Nunca fale chinês



Os autores deste concurso propuseram a criação de um sistema de tradução automática de uso geral, uma vez que a tradução mesmo de grandes empresas em um par chinês-russo está muito atrás de pares mais populares. Mas, como a validação ocorreu nas notícias e na ficção, ficou claro que era necessário aprender com o corpus das notícias e dos livros. A métrica para avaliar as transferências foi o BLEU padrão . Esta métrica compara a tradução humana com a tradução automática e, grosso modo, estima a similaridade dos textos em uma escala de 100 pontos com base no número de correspondências encontradas. A língua russa é rica em sua morfologia, portanto, essa métrica é sempre notavelmente mais baixa quando traduzida para ela do que em línguas com menos formas de formação de palavras (por exemplo, línguas românicas - francês, italiano, etc.).



Qualquer pessoa que faça aprendizado de máquina sabe que se trata principalmente de dados e sua limpeza. Vamos começar a procurar corpus e, ao mesmo tempo, entender os meandros da tradução automática. Então, em uma capa branca ...



Capítulo 2. Pon Tiy Pi Lat



Com um manto branco com o forro ensanguentado, um andar de cavalaria arrastado, entramos no mecanismo de busca atrás de um corpo russo-chinês paralelo. Como entenderemos mais tarde, o que encontramos não é suficiente, mas por enquanto vamos dar uma olhada em nossas primeiras descobertas (eu coletei os conjuntos de dados que encontrei, limpei e os coloquei em domínio público [1] ):





OPUS é um corpus bastante grande e linguisticamente diverso, vamos ver exemplos dele:

“O que ela e eu experimentamos é ainda mais incomum do que o que você experimentou ...”

我 与 她 的 经历 比 你 的 经历 离奇 多 了



“Vou lhe contar sobre isso.”

我 给 你 讲讲 这段 经历…



“ A pequena cidade onde nasci ... ”

我 出生 那座 小镇 ...


Como o nome sugere, trata-se principalmente de legendas para filmes e programas de TV. As legendas TED pertencem ao mesmo tipo , que, após análise e limpeza, também se transformam em um corpus completamente paralelo:



É assim que nosso experimento histórico de punição acabou:

这 就是 关于 我们 印象 中 的 惩戒 措施 的 不为人知 的 一面 os



jovens têm medo de que a qualquer momento possam ser parados, revistados, detidos.

年轻人 总是 担心 随时 会 被 截停、 搜身 和 逮捕



E não só na rua, mas também nas suas casas,

无论 是 在 街上 还是 在家
WikiMatrix são textos alinhados a LASER de páginas da Internet (o chamado rastreamento comum ) em vários idiomas, mas para a nossa tarefa são poucos e parecem estranhos:

Zbranki (ucraniano

但 被 其 否认。



Mas é melhor você rápido, se ao menos soubesse!

斋戒 对于 你们 更好 , 如果 你们 知道。



Ele rejeitou essa afirmação.

后来 这个 推论 被 否认。
Após o primeiro estágio de recuperação de dados, surge uma questão com nosso modelo. Quais são as ferramentas e como abordar a tarefa?



Há um curso de PNL de que gostei muito do MIPT on Stepic [2] , que é especialmente útil quando se está online, onde os sistemas de tradução automática também são compreendidos em seminários, e você mesmo os escreve. Lembro-me do deleite que a rede, escrita do zero, depois de estudar no Colab, produziu uma tradução russa adequada em resposta ao texto alemão. Construímos nossos modelos na arquitetura de transformadores com um mecanismo de atenção, que em um momento se tornou uma ideia inovadora [3] .



Naturalmente, o primeiro pensamento foi “apenas dar ao modelo dados de entrada diferentes” e já ganhar. Mas, como qualquer aluno chinês sabe, não há espaços no script chinês, e nosso modelo aceita conjuntos de tokens como entrada, que são palavras nele. Bibliotecas como a jieba podem quebrar o texto chinês em palavras com alguma precisão. Incorporando a tokenização de palavras no modelo e executando-o nos corpus encontrados, obtive um BLEU de cerca de 0,5 (e a escala é de 100 pontos).



Capítulo 3. Tradução automática e sua exposição



Uma linha de base oficial (solução de exemplo simples, mas funcional) foi proposta para a competição, que foi baseada no OpenMNT . É uma ferramenta de aprendizagem de tradução de código aberto com muitos hiperparâmetros para torção. Nesta etapa, vamos treinar e inferir o modelo por meio dele. Vamos treinar na plataforma kaggle, pois dá 40 horas de treinamento em GPU gratuitamente [4] .



Refira-se que nesta altura o número de participantes na competição era tão reduzido que, uma vez inscrito, era possível figurar de imediato entre os cinco primeiros, e havia motivos para tal. O formato da solução era um contêiner docker, no qual as pastas eram montadas durante o processo de inferência e o modelo tinha que ler de uma e colocar a resposta em outra. Como a linha de base oficial não começou (eu pessoalmente não montei imediatamente) e estava sem pesos, decidi coletar a minha própria e colocá-la em domínio público [5]. Depois disso, os participantes começaram a se inscrever com um pedido para montar corretamente a solução e geralmente ajudar com o docker. Moralmente, os containers são o padrão no desenvolvimento de hoje, use-os, orquestre e simplifique a sua vida (nem todos concordam com a última afirmação).



Agora vamos adicionar mais alguns aos corpos encontrados na etapa anterior:





O primeiro é um enorme corpus de documentos legais das reuniões da ONU. Está disponível, aliás, em todos os idiomas oficiais desta organização e está alinhado de acordo com as propostas. O segundo é ainda mais interessante, pois se trata diretamente de um corpus noticioso com uma peculiaridade - é o chinês-inglês. Este fato não nos incomoda, porque a tradução automática moderna do inglês para o russo é de altíssima qualidade, e são usados ​​Amazon Translate, Google Translate, Bing e Yandex. Para completar, mostraremos exemplos do que aconteceu.



Documentos da ONU

.

它是一个低成本平台运转寿命较长且能在今后进一步发展。



.

报告特别详细描述了由参加者自己拟订的若干与该地区有关并涉及整个地区的项目计划。


UM-Corpus



O Facebook fechou um acordo para comprar a Little Eye Labs no início de janeiro.

1 月初 脸 书 完成 了 对 Little Eye Labs 的 收购 ,



Quatro engenheiros em Bangalore lançaram o Little Eye Labs há cerca de um ano e meio

一年 半 以前 四位 工程师 在 班加罗尔 创办 了



Empresa desenvolve ferramentas de software para aplicativos móveis, negócio custará entre $ 10 e $ 15 milhões.

该 公司 开发 移动 应用 软件 工具 , 这次 交易 价值 1000 到 1500 万 美元 ,


Então, nossos novos ingredientes: OpenNMT + caixas de alta qualidade + BPE (você pode ler sobre a tokenização BPE aqui ). Treinamos, montamos em um contêiner e, após depuração / limpeza e truques padrão, obtemos BLEU 6.0 (a escala ainda é de 100 pontos).



Capítulo 4. Manuscritos paralelos não queimam



Até aqui vimos aprimorando nosso modelo passo a passo, e o maior ganho veio com a utilização do news corpus, um dos domínios de validação. Além das notícias, seria bom ter um corpo de literatura. Depois de passar um bom tempo, ficou claro que as traduções automáticas de livros chineses sem sistema popular não podem fornecer - Nastasia torna-se algo como Nostosi Filipauny e Rogozhin - Rogo Wren . Os nomes dos personagens geralmente constituem uma porcentagem bastante grande de todo o trabalho e frequentemente esses nomes são raros, portanto, se o modelo nunca os viu, então provavelmente não será capaz de traduzi-los corretamente. Devemos aprender com os livros.



Aqui, substituímos a tarefa de tradução pela tarefa de alinhamento de texto. Devo dizer desde já que gostei mais desta parte, porque eu própria gosto de estudar línguas e textos paralelos de livros e contos, esta é, na minha opinião, uma das formas de aprendizagem mais produtivas. Havia várias ideias para alinhamento, a mais produtiva acabou sendo traduzir sentenças em espaço vetorial e calcular a distância cosseno entre os candidatos para uma correspondência. Traduzir algo em vetores é chamado de incorporação, neste caso é uma incorporação de frase . Existem várias bibliotecas boas para este propósito [6] . Ao visualizar o resultado, percebe-se que o texto chinês escorrega um pouco devido ao fato de que frases complexas em russo costumam ser traduzidas como duas ou três em chinês.







Tendo encontrado tudo o que é possível na Internet, e nivelando os livros nós mesmos, nós os adicionamos ao nosso corpus.



Ele estava em um terno cinza caro, estrangeiro, na cor de seu terno, sapatos.

他 穿 一身 昂贵 的 灰色 西装 , 脚上 的 外国 皮鞋 也 与 西装 西装 颜色 十分 协调。



Ele ficou famoso por torcer uma boina cinza na orelha e carregava uma bengala preta com um botão em

forma de poodle .



Ela parece ter mais de quarenta anos.

看 模样 年纪 在 四十 开外。


Após o treinamento no novo prédio, o BLEU cresceu para 20 em um conjunto de dados público e para 19,7 em um privado. Também desempenhou o papel do fato de que trabalhos de validação obviamente entraram no treinamento. Na verdade, isso nunca deve ser feito, é chamado de vazamento, e a métrica deixa de ser indicativa.



Conclusão



A tradução automática percorreu um longo caminho, desde métodos heurísticos e estatísticos até redes neurais e transformadores. Estou feliz por ter conseguido encontrar tempo para me familiarizar com este tópico, ele definitivamente merece atenção da comunidade. Gostaria de agradecer aos autores do concurso e aos outros participantes pela comunicação interessante e novas ideias!



[1] Corpora russo-chinês paralelo

[2] Curso sobre processamento de linguagem natural do MIPT

[3] Artigo inovador Atenção é tudo que você precisa

[4] Laptop com um exemplo de aprendizagem no kaggle

[5] Base docker pública

[6] Biblioteca para frase multilíngue embeddings



All Articles