我的问题
我想使用一种数据增强方法来处理自然语言处理,即通过回译数据集的方式进行。
基本上,我有一个包含了110万个英文句子的大型数据集(SNLI),我需要做的是:把这些句子翻译成其他语言,再把它们翻译回英语。
我可能需要为多种语言做这个操作。所以我需要 大量 的翻译工作。
我需要一个免费的解决方案。
到目前为止我做了什么
我尝试了几个 Python 翻译模块,但由于 Google 翻译 API 最近的更改,大部分模块都无法正常工作。只有googletrans 似乎可以通过应用这个解决方案来工作。
然而,对于大型数据集,它并不起作用。Google 翻译有一个15K字符的限制(如此处,此处 和 此处 所指出)。第一个链接显示了一个所谓的解决方法。
我被卡在哪里了
即使我应用了这个解决方法(在每次迭代中初始化 Translator),它仍然不起作用,并且我得到了以下错误:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我尝试使用代理和其他谷歌翻译网址:
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个工作线程用于翻译整个数据集。如果它们并行工作,可能会一起使用超过15k个字符。
但我应该使用多线程。如果不这样做,将需要几周时间才能翻译整个数据集...
我的问题
如何修复此错误以便我可以翻译所有句子?
如果不可能,是否有任何免费替代方案,在Python中获取机器翻译(不强制使用Google Translate),用于这样一个大的数据集?