人工智能基础-机器翻译
一、介绍:
它是实现机器翻译的计算机系统,它通常包括机器词典、句法语义分析规则、原语译转换规则、译语生成规则以及翻译支援系统等.
二、代码
1.translate模块中英互译
#____________________________________________________第三方模块翻译________________________________________________________ from translate import Translator class Translate: def __init__(self, file): self.file = file def english_translate_chinese(self): """英语翻译中文""" translator = Translator(to_lang="chinese") translation = translator.translate(self.file) return translation def chinese_translate_english(self): """中文翻译英语""" translator = Translator(from_lang="chinese", to_lang="english") translation = translator.translate(self.file) return translation if __name__ == '__main__': english = Translate("laboratory coat") chinese = Translate("我好喜欢你") print(english.english_translate_chinese()) print(chinese.chinese_translate_english())
2.有道翻译
#!/usr/bin/env python # encoding: utf-8 ''' 说明:有些翻译不到需要做一次捕获 ''' #_______________________________________________有道翻译___________________________________________________________________ from urllib import request, parse import json def fy_youdao(i): '''在线调用有道翻译''' req_url = 'http://fanyi.youdao.com/translate' # 创建连接接口 # 创建要提交的数据 Form_Date = {} Form_Date['i'] = i Form_Date['doctype'] = 'json' Form_Date['form'] = 'AUTO' Form_Date['to'] = 'AUTO' Form_Date['smartresult'] = 'dict' Form_Date['client'] = 'fanyideskweb' Form_Date['salt'] = '1526995097962' Form_Date['sign'] = '8e4c4765b52229e1f3ad2e633af89c76' Form_Date['version'] = '2.1' Form_Date['keyform'] = 'fanyi.web' Form_Date['action'] = 'FY_BY_REALTIME' Form_Date['typoResult'] = 'false' data = parse.urlencode(Form_Date).encode('utf-8') # 数据转换 response = request.urlopen(req_url, data) # 提交数据并解析 html = response.read().decode('utf-8') # 服务器返回结果读取 # 可以看出html是一个json格式 translate_results = json.loads(html) # 以json格式载入 translate_results = translate_results['translateResult'][0][0]['tgt'] # json格式调取 # print(translate_results) # 输出结果 return translate_results; # 返回结果 res = fy_youdao('Saluki, gazelle hound') print(res)
3.讯飞平台翻译
#!/usr/bin/env python # -*- coding: utf-8 -*- # # 机器翻译 WebAPI 接口调用示例 # 运行前:请先填写Appid、APIKey、APISecret # 运行方法:直接运行 main 即可 # 结果: 控制台输出结果信息 # # 1.接口文档(必看):https://www.xfyun.cn/doc/nlp/xftrans/API.html # 2.错误码链接:https://www.xfyun.cn/document/error-code (错误码code为5位数字) # import requests import datetime import hashlib import base64 import hmac import json class get_result(object): def __init__(self,host,text,one,go_one): # 应用ID(到控制台获取) self.APPID = "" # 接口APISercet(到控制台机器翻译服务页面获取) self.Secret = "" # 接口APIKey(到控制台机器翻译服务页面获取) self.APIKey= "" # 以下为POST请求 self.Host = host self.RequestUri = "/v2/its" # 设置url # print(host) self.url="https://"+host+self.RequestUri self.HttpMethod = "POST" self.Algorithm = "hmac-sha256" self.HttpProto = "HTTP/1.1" # 设置当前时间 curTime_utc = datetime.datetime.utcnow() self.Date = self.httpdate(curTime_utc) # 设置业务参数 # 语种列表参数值请参照接口文档:https://www.xfyun.cn/doc/nlp/xftrans/API.html self.Text= text #表示从中文转英文 self.BusinessArgs={ "from": one, "to": go_one, } def hashlib_256(self, res): m = hashlib.sha256(bytes(res.encode(encoding='utf-8'))).digest() result = "SHA-256=" + base64.b64encode(m).decode(encoding='utf-8') return result def httpdate(self, dt): """ Return a string representation of a date according to RFC 1123 (HTTP/1.1). The supplied date must be in UTC. """ weekday = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"][dt.weekday()] month = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][dt.month - 1] return "%s, %02d %s %04d %02d:%02d:%02d GMT" % (weekday, dt.day, month, dt.year, dt.hour, dt.minute, dt.second) def generateSignature(self, digest): signatureStr = "host: " + self.Host + "\n" signatureStr += "date: " + self.Date + "\n" signatureStr += self.HttpMethod + " " + self.RequestUri \ + " " + self.HttpProto + "\n" signatureStr += "digest: " + digest signature = hmac.new(bytes(self.Secret.encode(encoding='utf-8')), bytes(signatureStr.encode(encoding='utf-8')), digestmod=hashlib.sha256).digest() result = base64.b64encode(signature) return result.decode(encoding='utf-8') def init_header(self, data): digest = self.hashlib_256(data) #print(digest) sign = self.generateSignature(digest) authHeader = 'api_key="%s", algorithm="%s", ' \ 'headers="host date request-line digest", ' \ 'signature="%s"' \ % (self.APIKey, self.Algorithm, sign) #print(authHeader) headers = { "Content-Type": "application/json", "Accept": "application/json", "Method": "POST", "Host": self.Host, "Date": self.Date, "Digest": digest, "Authorization": authHeader } return headers def get_body(self): content = str(base64.b64encode(self.Text.encode('utf-8')), 'utf-8') postdata = { "common": {"app_id": self.APPID}, "business": self.BusinessArgs, "data": { "text": content, } } body = json.dumps(postdata) #print(body) return body def call_url(self): if self.APPID == '' or self.APIKey == '' or self.Secret == '': print('Appid 或APIKey 或APISecret 为空!请打开demo代码,填写相关信息。') else: code = 0 body=self.get_body() headers=self.init_header(body) #print(self.url) response = requests.post(self.url, data=body, headers=headers,timeout=8) status_code = response.status_code #print(response.content) if status_code!=200: # 鉴权失败 print("Http请求失败,状态码:" + str(status_code) + ",错误信息:" + response.text) print("请根据错误信息检查代码,接口文档:https://www.xfyun.cn/doc/nlp/xftrans/API.html") else: # 鉴权成功 respData = json.loads(response.text) print(respData) return respData # 以下仅用于调试 code = str(respData["code"]) if code!='0': print("请前往https://www.xfyun.cn/document/error-code?code=" + code + "查询解决办法") if __name__ == '__main__': host = "itrans.xfyun.cn" text='jaguar, panther, Panthera onca, Felis onca' ###初始化类-中文->转英文 # gClass=get_result(host,text,'cn','en')#表示中文->转英文 # print('翻译结果:{}'.format(gClass.call_url()['data']['result']['trans_result']['dst'])) ###初始化类-英文->转中文 gClass=get_result(host,text,'en','cn')#表示英文->转中文 print('翻译结果:{}'.format(gClass.call_url()['data']['result']['trans_result']['dst']))
浙公网安备 33010602011771号