大家好,欢迎来到IT知识分享网。
使用预训练模型时经常会涉及到中英文互译,总结一下方法
1、translate库
安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple translate
使用
#中文翻译成英文 translator = Translator(from_lang='chinese',to_lang='english') result = translator.translate("你好,世界!") #英文翻译成中文 translator = Translator(from_lang='english', to_lang='chinese') result = translator.translate("hello,world!")
但是翻译稍微复杂的语句就会报错:
RuntimeError: generator raised StopIteration
tran=translate.Translator(from_lang="ZH",to_lang="EN")
此外,这个东西有个缺点,它免费的数量每天有定额,我不知道定额是多少,但是反正不够我处理一个数据集的。
2、有道翻译API
# 您的应用ID APP_KEY = '' # 您的应用密钥 APP_SECRET = '' def createRequest(q): ''' note: 将下列变量替换为需要请求的参数 ''' # q = '待翻译文本' lang_from = 'zh-CHS' lang_to = 'en' # vocab_id = '您的用户词表ID' 这个东西可以不要,好像是对应专业词汇的, # 如果需要把它也加入到下面的data里 data = {
'q': q, 'from': lang_from, 'to': lang_to} addAuthParams(APP_KEY, APP_SECRET, data) header = {
'Content-Type': 'application/x-www-form-urlencoded'} res = doCall('https://openapi.youdao.com/api', header, data, 'post') # print(str(res.content, 'utf-8')) res_json = res.json() return res_json['translation'][0] def doCall(url, header, params, method): if 'get' == method: return requests.get(url, params) elif 'post' == method: return requests.post(url, params, header) def addAuthParams(appKey, appSecret, params): q = params.get('q') if q is None: q = params.get('img') q = "".join(q) salt = str(uuid.uuid1()) curtime = str(int(time.time())) sign = calculateSign(appKey, appSecret, q, salt, curtime) params['appKey'] = appKey params['salt'] = salt params['curtime'] = curtime params['signType'] = 'v3' params['sign'] = sign return params def calculateSign(appKey, appSecret, q, salt, curtime): strSrc = appKey + getInput(q) + salt + curtime + appSecret return encrypt(strSrc) def encrypt(strSrc): hash_algorithm = hashlib.sha256() hash_algorithm.update(strSrc.encode('utf-8')) return hash_algorithm.hexdigest() def getInput(input): if input is None: return input inputLen = len(input) return input if inputLen <= 20 else input[0:10] + str(inputLen) + input[inputLen - 10:inputLen]
补充:短时间内多次调用api会报错:
requests.exceptions.ProxyError: HTTPSConnectionPool(host='openapi.youdao.com')
每次调用前空几秒:
import time time.sleep(5)
问题解决。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/139956.html