Добавление итеративно переведенного Google текста в фрейм данных - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь перевести текст, который я вычеркнул с веб-сайта, с польского на английский, в новый столбец в фрейме данных pandas.

Я использую mtranslate для использования Google Translate API. Я знаю, что Google Translate имеет ограничение в 100 000 символов на 100 секунд; колонка, которую я пытаюсь перевести, содержит почти 3 миллиона символов.

Я пытался приостановить цикл, если <100 000 символов переводятся в течение 100 секунд, где-то между 101-102 секундами, пока не будут переведены все строки (и я знаю, что в этом темпе цикл будет Итерируйся больше часа) </p>

Однако мой цикл завершается неудачно с ошибкой HTTP Error 413: Request Entity Too Large, что означает, что цикл не приостанавливается достаточно быстро, и что я превышаю ограничение API в течение 100 секунд.

Мне также было трудно добавить результаты в пустой столбец моего информационного кадра; Вот почему я прибегнул к тому, чтобы добавить свои результаты в отдельный список, который я планировал присоединить к фрейму данных после перевода всех результатов. Я бы предпочел, чтобы я мог добавить результат непосредственно в столбец назначенного информационного кадра: data ['postEn'].

from IPython.display import clear_output
import numpy as np
from time import sleep
from mtranslate import translate

translation = [] # Append translations into a separate list
data['postEn'] = '' # Append into an empty column, which is my intended target

for postPl in range(0,7286): # there are 7387 rows total

    if data.post.str.len()[postPl] > 100000:

        sleep(randint(101,102))

    else:
        clear_output(wait=True)
        trans = mtranslate(data.post[postPl],'en','pl')
        translation.append(trans)

    print("Current progress: ", np.round(postPl/len(data)*100,2),"%")

%time

Я добился успеха, вручную изменив диапазон строк и добавив все выходные данные в список, преобразованный в фрейм данных, который я затем должен был присоединить к своему основному фрейму данных (и тщательно очищенные, чтобы преобразованные записи соответствовали). Как вы можете догадаться, это было трудоемким, и что еще хуже, я потерял свой набор данных. Поэтому я надеюсь на этот раз разработать программное решение, чтобы избежать дальнейших трудностей.

...