Ошибка Python Google Translate API: Как перевести большой объем данных
Моя проблема
Я хотел бы использовать своего рода метод дополнения данных для НЛП, состоящий из обратного перевода набора данных.
По сути, у меня есть большой набор данных ( SNLI), состоящий из 1 100 000 английских предложений. Что мне нужно сделать, так это: перевести эти предложения на язык и перевести их обратно на английский.
Возможно, мне придется сделать это для нескольких языков. Так что у меня много переводов.
Мне нужно бесплатное решение.
Что я сделал до сих пор
Я попробовал несколько модулей Python для перевода, но из-за недавних изменений в Google Translate API, большинство из них не работают. googletrans, кажется, работает, если мы применим это решение.
Тем не менее, он не работает для большого набора данных. Google имеет ограничение в 15 КБ (как указано в этом, этом и этом). Первая ссылка показывает предполагаемый обходной путь.
Где я заблокирован
Даже если я применяю обходной путь (инициализирующий переводчик на каждой итерации), он не работает, и я получил следующую ошибку:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Я пытался использовать прокси и другие URL-адреса Google translate:
URLS = ['translate.google.com', 'translate.google.co.kr', 'translate.google.ac', 'translate.google.ad', 'translate.google.ae', ...]
proxies = { 'http': '1.243.64.63:48730', 'https': '59.11.98.253:42645', }
t = Translator(service_urls=URLS, proxies=proxies)
Но это ничего не меняет.
Заметка
Моя проблема может возникнуть из-за того, что я использую многопоточность: 100 рабочих для перевода всего набора данных. Если они работают параллельно, возможно, они используют более 15 тысяч символов вместе.
Но я должен использовать многопоточность. Если я не сделаю этого, потребуется несколько недель, чтобы перевести весь набор данных...
Мой вопрос
Как мне исправить эту ошибку, чтобы я мог перевести все предложения?
Если это невозможно, есть ли бесплатная альтернатива для получения машинного перевода на Python (не обязательно использовать Google Translate) для такого большого набора данных?
0 ответов
Миллион символов - это довольно много текста для перевода.
В настоящее время Google Cloud Translation V3 предлагает бесплатную квоту уровня, которую вы, возможно, захотите использовать (1-500 000 символов бесплатно в месяц). Так как этого недостаточно для вашего варианта использования, вам, вероятно, нужно создать более одной платежной учетной записи или подождать месяц, чтобы перевести больше текста.
Проверьте эту ссылку, чтобы узнать, как вы можете выполнить перевод текста с помощью Python.