O pacote googleLanguageR utiliza o serviço de API do Google Tradutor e nos permite traduzir textos automaticamente.
Ao trabalhar com dados, pode ser que, em algum momento, seja necessário trazer informações textuais de uma língua estrangeira para a nossa língua. Se você dominar a língua na qual o dado se encontra você pode fazer a tradução por meio da análise de cada caso, mas a situação se complica à medida que o número de observações aumenta. Se você não tiver domínio da língua, provavelmente, a melhor alternativa é utilizar uma aplicação como a do Google Tradutor para o caso a caso. Assim mesmo o processo de fazer várias traduções via Google Tradutor pode se tornar maçante.
Uma solução mais sofisticada passaria pela utilização do pacote googleLanguageR, que consulta à API de Google Tradutor para traduzir textos. De experiência própria, sabemos que o Google Tradutor não é perfeito, mas funciona bem na maioria dos casos.
Além de traduzir textos, o pacote também acessa outras APIs do Google como as de Natural Language e de Cloud Speech. A única desvantagem de usar o googleLanguageR é que você deve ativar o serviço de API para sua conta Google e isso tem um custo financeiro.
Se você estiver interessado em usar o serviço, deve completar os seguintes passos da seção Installation deste link.
Note que como os serviços do Google são pagos, você deverá fornecer dados do seu cartão de crédito para ativar os serviço de API do Google.
O exemplo que será explorado aqui é um tanto quanto simples no quesito tradução, porém serve bem o propósito de exemplificar como o pacote googleLanguageR pode ser utilizado.
Suponhamos que você precise de uma tabela de correlação com os nomes de países em português e os respectivos códigos ISO alfa-3 (ISOA)1. Suponhamos, também, que você só tenha encontrado uma correlação com nomes de países em inglês na seção sobre o ISO 3166-1 alfa-3 do Wikipédia. Por meio das técnicas de web scraping já exploradas em um post anterior, podemos trazer os dados do Wikipédia para dentro do R.
library(rvest)
library(dplyr)
link_isoa <- "https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3"
paises_ingles <- read_html(link_isoa) %>%
html_nodes(".div-col li")
isoa <- paises_ingles %>%
html_node("span") %>%
html_text()
paises <- paises_ingles %>%
html_node("a") %>%
html_attr("title")
pais_isoa <- data.frame(ISOA = isoa,
pais_ing = paises,
stringsAsFactors = FALSE)
head(pais_isoa, 10)
ISOA pais_ing
1 ABW Aruba
2 AFG Afghanistan
3 AGO Angola
4 AIA Anguilla
5 ALA Åland Islands
6 ALB Albania
7 AND Andorra
8 ARE United Arab Emirates
9 ARG Argentina
10 ARM Armenia
Considerando que o serviço da API do Google Tradutor já esteja habilitado em sua conta Google, podemos traduzir o nome dos países para, por exemplo, o português. Note que, além de ativar o serviço da API da sua conta, você pode criar, caso ainda não o tenha feito, um arquivo com o nome .Renviron
no diretório de trabalho do seu R. Nesse arquivo é preciso criar a variável GL_AUTH = “caminho do arquivo da chave API.json” e, depois, salvá-lo. Por fim, a sessão do R deve ser reiniciada para que a mudança no arquivo .Renviron
seja incorporada na sessão atual do R. Alternativamente, pode-se especificar diretamente na função gl_auth
o caminho da sua chave API do Google.
# Carregamos pacote de tradução
library(googleLanguageR)
# Autenticação para utilizar a API do Google Tradutor
# Note que GL_AUTH define o local da sua chave API e deve constar
# no arquivo .Renviron
gl_auth(Sys.getenv("GL_AUTH"))
Depois de se autenticar, utilizamos a função gl_translate
para fazer a tradução. O argumento t_string
indica a coluna que desejamos traduzir; target
é a língua para a qual queremos traduzir; format
se refere ao formato do texto para tradução; e, por fim, source
é a língua original do texto.
pais_isoa <- pais_isoa %>%
mutate(
pais_port = gl_translate(t_string = pais_ing,
target = 'pt',
format = 'text',
source = "en")$translatedText
)
Ao analisar rapidamente o resultado da tradução do Google Tradutor, encontramos alguns erros de tradução. Por exemplo, “Togo” foi traduzido para o português como “Ir” (houve uma pequena confusão com “to go” rs) e “Turkey”, como “Peru” (não podemos culpar o Google Tradutor completamente rs). Como mencionamos no início deste post, o Google Tradutor não é perfeito, mas, em regra, funciona bem e quebra um bom galho.
indice <- which(pais_isoa$pais_ing == "Togo")
indice2 <- which(pais_isoa$pais_ing == "Turkey")
# print de trecho com erros de tradução
pais_isoa[indice:(indice+9),]
# A tibble: 10 x 3
ISOA pais_ing pais_port
<chr> <chr> <chr>
1 TGO Togo Ir
2 THA Thailand Tailândia
3 TJK Tajikistan Tajiquistão
4 TKL Tokelau Tokelau
5 TKM Turkmenistan Turcomenistão
6 TLS East Timor Timor Leste
7 TON Tonga Tonga
8 TTO Trinidad and Tobago Trinidad e Tobago
9 TUN Tunisia Tunísia
10 TUR Turkey Peru
Depois do Google Tradutor ter efetuado a tradução de texto, basta corrigir manualmente os erros que identificamos, tarefa mais fácil do que fazer todas as traduções uma por uma.
# corrigir traduções erradas
pais_isoa[indice, 3] <- "Togo"
pais_isoa[indice2, 3] <- "Turquia"
rmarkdown::paged_table(pais_isoa)
Embora o exemplo para utilização do pacote googleLanguageR tenha sido simples, fica clara a utilidade potencial do pacote para tradução de dados textuais.
Se você quiser trazer a correlação aqui construída para o R, pode fazê-lo da seguinte forma:
library(data.table)
git <- "https://raw.githubusercontent.com/mgcleaver/correlacoes/master/paises_isoa.txt"
df <- fread(git, encoding = "UTF-8")
Cada país tem um código de três letras definido pelo padrão ISO 3166 da Organização Mundial para Padronização.↩
For attribution, please cite this work as
Cleaver (2019, July 31). Fulljoin: Tradução de dados textuais com googleLanguageR. Retrieved from https://www.fulljoin.com.br/posts/2019-07-31-traduo-de-dados-textuais-com-googlelanguager/
BibTeX citation
@misc{cleaver2019tradução, author = {Cleaver, Miguel}, title = {Fulljoin: Tradução de dados textuais com googleLanguageR}, url = {https://www.fulljoin.com.br/posts/2019-07-31-traduo-de-dados-textuais-com-googlelanguager/}, year = {2019} }