我已经在Stack Overflow上进行了彻底的搜索,但是找不到此问题的答案。我正在尝试使用适用于Python(3.6.2)的Google Translate API(googletrans 2.2.0),并试图将一组非英语文档翻译成英语。我让Google Translate进行语言检测。这是我的代码:
## newcorpus is a corpus I have created consisting of non-english documents
fileids = newcorpus.fileids
for f in fileids:
p = newcorpus.raw(f)
p = str(p[:15000])
translated_text = translator.translate(p)
print(translated_text)
sleep(10)
Run Code Online (Sandbox Code Playgroud)
我每次都要等待10秒,从而限制了对API的调用。我也一次只喂API 15k个字符,以保持在字符数限制内。
每次运行此代码,都会收到以下错误消息:
## newcorpus is a corpus I have created consisting of non-english documents
fileids = newcorpus.fileids
for f in fileids:
p = newcorpus.raw(f)
p = str(p[:15000])
translated_text = translator.translate(p)
print(translated_text)
sleep(10)
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
python google-translate python-3.x language-translation jsondecoder
我想对NLP使用一种由反向翻译数据集组成的数据增强方法。
基本上,我有一个大型数据集(SNLI),包含1100万个英语句子。我需要做的是:用一种语言翻译这些句子,然后将其翻译回英语。
我可能需要几种语言才能做到这一点。所以我要做很多翻译。
我需要一个免费的解决方案。
我尝试了几种python模块进行翻译,但是由于Google Translate API的最新更改,大多数都不起作用。如果应用此解决方案,则googletrans似乎可以正常工作。
但是,它不适用于大型数据集。Google的字符数上限为15,000个(如this,this和this所指出)。第一个链接显示了一个可能的解决方法。
即使我采用了变通方法(每次迭代都初始化Translator),也无法正常工作,并且出现了以下错误:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Run Code Online (Sandbox Code Playgroud)
我尝试使用代理和其他Google翻译URL:
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)
Run Code Online (Sandbox Code Playgroud)
但这并没有改变任何东西。
我的问题可能来自我使用多线程的事实:100个工作人员用于转换整个数据集。如果它们并行工作,也许它们一起使用超过15k个字符。
但是我应该使用多线程。如果没有,翻译整个数据集将需要几周的时间...
如何解决此错误,以便翻译所有句子?
如果不可能的话,对于这么大的数据集,是否有免费的替代方法可以使用Python获得机器翻译(不是必须使用Google Translate)?
python translation google-translate dataset data-augmentation
我正在使用该googletrans包。
我今天一整天都使用它翻译了很多文本。
正如文档所暗示的那样,我已将文本拆分为少于 15k 个字符的标记,并且我Translator()在每种情况下都重新实例化了它们。
(实际上只是提一下,如果我没有遗漏某些内容,我必须将文本分割成小于 15k 字符的令牌,例如 2k,因为我认为即使使用 10k 字符令牌之类的东西,该包也会返回错误 - 我不知道为什么会发生这种情况)。
现在我执行以下操作:
from googletrans import Translator
translator = Translator()
response = translator.translate('Is this working?', dest='fr')
print(response.text)
Run Code Online (Sandbox Code Playgroud)
我直接得到以下错误:
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?
是因为(不成文的 - 我没有在文档中看到)该软件包的每日使用限制还是我的 IP 被永久阻止?
我在这里看到了相关讨论:GoogleTrans API Error - Expecting value: line 1 column 1 (char 0)。