From 81eb41a8ec066b0f7425534dafb58862a4c5946c Mon Sep 17 00:00:00 2001 From: Tomer Iwan Date: Fri, 16 Jun 2023 16:02:11 +0200 Subject: [PATCH] feat: detect language --- NAMESPACE | 1 + R/language_detect.R | 27 +++++++++++++++++++++++++++ man/language_detect.Rd | 17 +++++++++++++++++ vignettes/Movie_Reviews.Rmd | 4 ++-- 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 R/language_detect.R create mode 100644 man/language_detect.Rd diff --git a/NAMESPACE b/NAMESPACE index 3b1dcf8..bedf6f1 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -2,6 +2,7 @@ export("%>%") export(google_translate) +export(language_detect) export(mymemory_translate) export(translate_file) importFrom(magrittr,"%>%") diff --git a/R/language_detect.R b/R/language_detect.R new file mode 100644 index 0000000..3348b52 --- /dev/null +++ b/R/language_detect.R @@ -0,0 +1,27 @@ +#' Detect Language using Google Translate API +#' +#' This function detects the language of a given text using the Google Translate API. +#' +#' @param text The text for which the language needs to be detected. +#' @return A character string representing the detected language. +#' @export +language_detect <- function(text) { + url <- "https://translate.googleapis.com/translate_a/single" + params <- list( + client = "gtx", + sl = "auto", + tl = "en", + dt = "t", + q = text + ) + + response <- httr::GET(url, query = params) + + if (httr::status_code(response) == 200) { + result <- httr::content(response, "parsed") + language <- purrr::keep(result, is.character) %>% as.character() + return(language) + } else { + stop("Language detection failed. Please check your connection and try again.") + } +} diff --git a/man/language_detect.Rd b/man/language_detect.Rd new file mode 100644 index 0000000..63c8c27 --- /dev/null +++ b/man/language_detect.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/language_detect.R +\name{language_detect} +\alias{language_detect} +\title{Detect Language using Google Translate API} +\usage{ +language_detect(text) +} +\arguments{ +\item{text}{The text for which the language needs to be detected.} +} +\value{ +A character string representing the detected language. +} +\description{ +This function detects the language of a given text using the Google Translate API. +} diff --git a/vignettes/Movie_Reviews.Rmd b/vignettes/Movie_Reviews.Rmd index da4803b..039dfa1 100644 --- a/vignettes/Movie_Reviews.Rmd +++ b/vignettes/Movie_Reviews.Rmd @@ -48,12 +48,12 @@ Now, let's translate the review column to French using the `polyglotr` package: ```{r translated} # Translate the review column to French translated_reviews <- df %>% - dplyr::mutate(french_review = purrr::map(review, ~ google_translate(.x, target_language = "fr", source_language = "en"))) + dplyr::mutate(french_review = purrr::map_chr(review, ~ google_translate(.x, target_language = "fr", source_language = "en"))) ``` -In the code snippet above, we utilize the `mutate` function from `dplyr` in conjunction with `purrr::map` to apply the google_translate function from the package to each element in the review column. The translated reviews are stored in a new column named "french_review". +In the code snippet above, we utilize the `mutate` function from `dplyr` in conjunction with `purrr::map_chr` to apply the google_translate function from the package to each element in the review column. The translated reviews are stored in a new column named "french_review". # Results