У меня есть этот фрейм данных, который содержит 41 000 строк тегов Flickr с неанглийскими sh словами. Пример:
column1 column2 column3
amsterdam het dag calamiteit bij doen gratis dag 2015
rotterdam blijdorp groet gratis burp het ik ben 2016
Я хочу перевести все не-английские sh слова в столбце 2 в английский sh с помощью Google Translate API. Я пытался это сделать, но затем я достиг желаемого предела API Google Translate, потому что у меня 41 000 строк (такие большие данные).
К счастью, у меня есть кто-то, кто дал мне R-скрипт, который каким-то образом может перевести эти массивные слова в пределах лимита запроса API Google Translate. Я пытался преобразовать R-скрипт в Python язык как можно лучше, но мне это не удалось.
R-скрипт:
library(googleLanguageR)
library(tidyverse)
## create a tibble in the required format
tibble <- tibble
translate <- function(tibble) {
tibble <- tibble
count <- data.frame(nchar = 0, cumsum = 0) # create count file to stay within API limits
for (i in 1:nrow(tibble)) {
des <- pull(tibble[i,2]) # extract description as single character string
if (count$cumsum[nrow(count)] >= 80000) { # API limit check
print("nearing 100000 character per 100 seconds limit, pausing for 100 seconds")
Sys.sleep(100)
count <- count[1,] # reset count file
}
if (grepl("^\\s*$", des) == TRUE) { # if description is only whitespace then skip
trns <- tibble(translatedText = "", detectedSourceLanguage = "", text = "")
} else { # else request translation from API
trns <- gl_translate(des, target='en', format='html') # request in html format to anticipate html descriptions
}
tibble[i,3:4] <- trns[,1:2] # add to tibble
nchar = nchar(pull(tibble[i,2])) # count number of characters
req <- data.frame(nchar = nchar, cumsum = nchar + sum(count$nchar))
count <- rbind(count, req) # add to count file
if (nchar > 20000) { # addtional API request limit safeguard for large descriptions
print("large description (>20,000), pausing to manage API limit")
Sys.sleep(100)
count <- count[1,] # reset count file
}
}
return(tibble)
}
это самое дальнее, что я могу go конвертировать скрипт R в python:
def translate(text):
tibble = []
tibble = pd.DataFrame(tibble)
tibble = testDataset
count = []
count = pd.DataFrame(count, columns=['nchar', 'cumsum'])
count.loc[0] = 'asd'
des = []
des = pd.DataFrame(des)
grepl = []
trns = []
trns = pd.DataFrame(trns)
nchar = []
nchar = pd.DataFrame(nchar)
for i in tibble:
des = tibble['keywords'].str.split(expand=True).stack()
if len(count['cumsum']) >= 80000:
print("nearing 100000 character per 100 seconds limit, pausing for 100 seconds")
sleep(100)
count = count[0:]
Я в замешательстве, особенно с grepl , gl_translate , pull (tibble), rbind из скрипта R.
Как мне перевести их в Python код?