работа в гугл переводе api запрошенный лимит - PullRequest
0 голосов
/ 17 января 2020

У меня есть этот фрейм данных, который содержит 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 код?

...