2023 python高频调用googletrans从报错到解决

因为要用googletrans来回翻译做数据增强,而且有2w条数据,来回翻译就有4w次。
在这个函数里碰到不少问题,这里就直接手把手帮大家直接搞定

是否需要换库?

一开始搜,各种让我换googletrans_new这个库,但是后面又说这个翻译的质量较差,所以本篇文章不涉及换库的,该用googletrans还是用它

1.首先确认自己能否连接

首先就是让命令行能上外网,因为就算挂了梯子,但是命令行是在网络层(可能)并不能通过梯子翻墙,所以需要操作一下设置代理
找到梯子里提供的
https_proxy=http://127.0.0.1:XXXXX
https_proxy=http://127.0.0.1:XXXXX

在命令行里可以通过命令

set https_proxy=http://127.0.0.1:XXXXX
set https_proxy=http://127.0.0.1:XXXXX

来设置临时的代理

set https_proxy=
set https_proxy=

通过上面的代码可以取消设置代理

也可以去PATH里面系统变量里添加https_proxy、https_proxy两个属性来设置永久的代理

或者是通过下面这句来设置

set all_proxy=socks5://127.0.0.1:XXXXX

命令行运行

curl www.google.com -I

来判断是否设置成功,如果返回了一个接口(很多字)则成功

另一种方法

使用谷歌的colab,在它上面进行数据预处理,再把得到的下载下来,这样也可以

2.下载新版本googletrans

pip install googletrans==4.0.0rc1

在新版本修复了3.x.x的很多bug,所以推荐使用该版本,也稳定不少。

3.报错 AttributeError: ‘Translator’ object has no attribute ‘raise_Exception’

这是由于谷歌翻译限制每秒的访问次数
可以通过try-except来重复访问,并通过sleep()来限制访问频率
(“好慢这样!!!我2w条数据互译两个小时才23%!!!!还有没有其他方法!!")
附上我的部分代码

def generate(data_dir, save_dir, n_mask = 5, n_gen = 10):
    with open(data_dir, 'r',encoding="utf-8") as f:
        data = f.readlines()
        f.close()
    translator = Translator()
    ##translator = google_translator()

    aug_sents = []
    length=len(data)
    i=0
    for sent in data:
        try:
            trans_sent = translator.translate(sent, src='en', dest='zh-cn')
        except:
            print("retry...")
            time.sleep(2)
            continue
        time.sleep(0.3)
        try:
            aug_sent = translator.translate(trans_sent.text, src='zh-cn', dest='en')
        except:
            print("retry...")
            time.sleep(2)
            continue
        time.sleep(0.15)
        ##trans_sent = translator.translate(sent,'zh')
        ##aug_sent = translator.translate(trans_sent,'en')
        aug_sent = aug_sent.text
        aug_sents.append(aug_sent)
        print("finish ",'%.3f'%(i/length*100),"%")
        i+=1


    save_data(save_dir, aug_sents)
    print("finish augmentation")

    for i in range(10):
        print("input sentence:", data[i].strip())
        print("aug sentence:", aug_sents[i])
        print()
  
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岚-岚岚岚岚岚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值