学习
实践
活动
工具
TVP
写文章
专栏首页功不唐捐【玩转腾讯云】【腾讯云机器翻译TMT】机器翻译入门
原创

【玩转腾讯云】【腾讯云机器翻译TMT】机器翻译入门

通过本文你可以学到什么

  1. 如何调用机器翻译接口
  2. 通过API 3.0 Explore体验机器翻译
  3. 通过API 3.0 SDK调用机器翻译接口
  4. 通过自行鉴权调用机器翻译接口及类似API3.0接口

前置准备

我们在准备调用机器翻译接口前,需要一些准备工作,主要包括

  1. 注册腾讯云账号
  2. 开通机器翻译服务
  3. 申请安全凭证 以下为各步骤的详细功能

1. 注册腾讯云账号

通过https://cloud.tencent.com/register注册腾讯云账号

截屏2020-05-02 下午4.17.57.png

2. 开通机器翻译服务

在机器翻译控制台https://console.cloud.tencent.com/tmt开通机器翻译服务

因笔者已经开通机器翻译服务,所以截取了语音合成的控制台,机器翻译的开通界面类似。

勾选我已同意,选择免费试用即可,若免费额度用完,需要开通付费,到时开通即可

截屏2020-05-02 下午4.20.39.png

3. 申请安全凭证

申请安全凭证即SecretId和SecretKey

参考该链接的https://cloud.tencent.com/document/api/213/15693的第一步即可

截屏2020-05-02 下午4.26.06.png

通过API 3.0 Explore体验机器翻译

API 3.0 Explore是腾讯云提供的一个在线API测试工具,该工具提供了在线调用、签名验证、SDK 代码生成和快速检索接口等能力,可以让你快速体验产品功能,显著降低使用难度

通过该链接https://console.cloud.tencent.com/api/explorer?Product=tmt&Version=2018-03-21&Action=TextTranslate&SignVersion=可以直接前往机器翻译的文本翻译界面

截屏2020-05-02 下午4.45.19.png

左侧可以选择产品和相应接口,我们选择机器翻译和它的文本翻译接口

在线调用

通过API Explore,我们可以快速的进行在线调用,以体验API功能

我们先在右侧选择参数说明,以了解文本翻译的参数及意义

截屏2020-05-02 下午4.52.26.png

在了解了需要的参数,我们在左侧栏填写相应的值,其中最重要的是将自己前面申请的安全凭证SecretId和SecretKey填写正确,如下图所示

image.png

点击发送请求,即可拿到翻译结果

image.png

是不是很简单呀~

通过腾讯云API3.0 SDK调用接口

通过API 3.0 Explore我们可以在线测试接口的功能是不是满足自己的要求,那么要集成到自己的产品中,还是要使用代码来调用,而腾讯云为我们提供了各语言的SDK,来帮助我们调用接口

如下链接https://cloud.tencent.com/document/api/551/15619

截屏2020-05-02 下午5.12.33.png

下面我们以Python语言为例,展示如何通过Python的云API SDK来调用文本翻译接口

SDK的安装方式参考https://github.com/TencentCloud/tencentcloud-sdk-python即可

这里我们又回到API Explore,它提供了根据参数直接生成SDK代码的功能,如下图所示

image.png

我们直接将代码拷贝到本地执行

image.png

可以看到原样拷贝的代码直接执行成功了

但是自动生成的代码是通过字符串的形式生成请求体的,可能不方便我们只好自定定制,我们可以稍作改造,以结构体的方式填写参数,方便定制化

from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException 
from tencentcloud.tmt.v20180321 import tmt_client, models 
try: 
    cred = credential.Credential("你的SecretId", "你的SecretKey") 
    httpProfile = HttpProfile()
    httpProfile.endpoint = "tmt.tencentcloudapi.com"

    clientProfile = ClientProfile()
    clientProfile.httpProfile = httpProfile
    client = tmt_client.TmtClient(cred, "ap-beijing", clientProfile) 

    req = models.TextTranslateRequest()
    req.SourceText = "这里填写源文本"
    req.Source = "zh"
    req.Target = "en"
    req.ProjectId = 0

    resp = client.TextTranslate(req) 
    print(resp.to_json_string()) 

except TencentCloudSDKException as err: 
    print(err) 

自行鉴权调用文本翻译接口

有时候,我们不方便通过API 3.0 SDK集成入自己的产品来调用接口,可能是语言限制可能是平台限制等,我们希望自行调用腾讯云接口来使用其相关功能

具体腾讯云接口鉴权流程参考该链接https://cloud.tencent.com/document/api/213/30654

自行鉴权的代码流程:https://cloud.tencent.com/document/product/551/30636

以下为调用文本翻译接口的全代码

import json
import time
from datetime import datetime
import hashlib
import hmac
import requests


def get_sign(host, timestamp, service, req_payload, secret_key, secret_id):
    service = service
    algorithm = "TC3-HMAC-SHA256"
    timestamp = int(timestamp)
    # timestamp = 1551113065
    date = datetime.utcfromtimestamp(timestamp).strftime("%Y-%m-%d")
    content_type = "application/json; charset=utf-8"
    signed_headers = "content-type;host"

    # ************* 步骤 1:拼接规范请求串 *************
    http_request_method = "POST"
    canonical_uri = "/"
    canonical_querystring = ""

    canonical_headers = "content-type:%s\nhost:%s\n" % (content_type, host)
    hashed_request_payload = hashlib.sha256(req_payload.encode("utf-8")).hexdigest()
    canonical_request = (http_request_method + "\n" +
                         canonical_uri + "\n" +
                         canonical_querystring + "\n" +
                         canonical_headers + "\n" +
                         signed_headers + "\n" +
                         hashed_request_payload)
    print(canonical_request)

    # ************* 步骤 2:拼接待签名字符串 *************
    credential_scope = date + "/" + service + "/" + "tc3_request"
    hashed_canonical_request = hashlib.sha256(canonical_request.encode("utf-8")).hexdigest()
    string_to_sign = (algorithm + "\n" +
                      str(timestamp) + "\n" +
                      credential_scope + "\n" +
                      hashed_canonical_request)
    print(string_to_sign)

    # ************* 步骤 3:计算签名 *************
    # 计算签名摘要函数
    def sign(key, msg):
        return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest()

    secret_date = sign(("TC3" + secret_key).encode("utf-8"), date)
    secret_service = sign(secret_date, service)
    secret_signing = sign(secret_service, "tc3_request")
    signature = hmac.new(secret_signing, string_to_sign.encode("utf-8"), hashlib.sha256).hexdigest()
    print(signature)

    # ************* 步骤 4:拼接 Authorization *************
    authorization = (algorithm + " " +
                     "Credential=" + secret_id + "/" + credential_scope + ", " +
                     "SignedHeaders=" + signed_headers + ", " +
                     "Signature=" + signature)
    print("authorization:", authorization)
    return authorization


secret_id = "你的SecretId"
secret_key = "你的SecretKey"
host = "tmt.tencentcloudapi.com"
content_type = "application/json; charset=utf-8"
signed_headers = "content-type;host"

translate_url = "https://" + host

print("text translate url: %s" % translate_url)

Action = "TextTranslate"
Version = "2018-03-21"
Region = "ap-beijing"
Source = "zh"
Target = "en"
ProjectId = 0
q = "这里填写源文本"

post_data = {
    "Source": Source,
    "Target": Target,
    "ProjectId": ProjectId,
    "SourceText": q,
}

payload = json.dumps(post_data)
timestamp = time.time()
Authorization = get_sign(host, timestamp, "tmt", payload, secret_key, secret_id)
headers = {"X-TC-Action": Action,
           "X-TC-Region": Region,
           "X-TC-Timestamp": str(int(timestamp)),
           "X-TC-Version": Version,
           "Authorization": Authorization,
           "Content-Type": content_type,
           "host": host,
           "SignedHeaders": signed_headers}

r = requests.post(translate_url, headers=headers, verify=False, data=payload)
print(r)
print(r.content)

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

登录 后参与评论
0 条评论

相关文章

  • 【玩转腾讯云】对腾讯云机器翻译的初认识

    说到腾讯的翻译大家都不陌生,QQ和微信聊天平台上的翻译,QQ浏览器上的翻译全页等功能都是由腾讯云的机器翻译提供强大支持的,但腾讯云的机器翻译到底是啥?它和百...

    用户7194368
  • 【玩转腾讯云】机器翻译之初体验

    近年来随着以深度学习为代表的人工智能技术的迅速发展,使得人们对于人机共生、万物互联的美好生活愿景更加憧憬。其中,自然语言处理技术,作为人工智能产品中最具挑战的任...

    张小磊
  • 腾讯云API:用Python使用腾讯云API(机器翻译实例)

    腾讯云API地址:https://cloud.tencent.com/document/api

    None-xiaomi
  • 【玩转腾讯云】云开发WEB入门实践

    这个项目是我参加腾讯云云开发实战营【web云开发赛道-FILES存储】时开发的,因为网上云开发web实战很少,所以我整理了代码上传到GitHub上并写了这篇文章...

    王秀龙
  • 【玩转腾讯云】Hexo博客部署腾讯云

    在腾讯云中创建ssh,并将本地的id_rsa.pub中的文件内容全部复制到authorized_keys中

    柠檬y
  • 【玩转腾讯云】腾讯云函数SCF初探

    前不久的微信开发者大会上在推他们的Serverless架构,即他们的产品腾讯云函数SCF。

    槽痞
  • 【玩转腾讯云】快速入门之SaaS

    SaaS,即Software-as-a-Service,意思为软件即服务,即通过互联网向客户提供软件服务。 SaaS平台供应商会将应用软件统一部署在自己的服务器...

    Vict_w
  • 玩转腾讯云CDN

    加速区域选择为中国境内或全球时,需要先完成 ICP 备案,若您的域名尚未完成 ICP 备案,您可以使用腾讯云网站备案。

    杜志强
  • 玩转腾讯云CDN

    还在为怎么使用CDN发愁吗? 看了文字版 https://cloud.tencent.com/developer/article/1744628 不够过瘾吗? ...

    陈志杰
  • 【玩转腾讯云】征文活动获奖名单公布

    由云+社区联合腾讯云免费体验馆及各产品团队举办【玩转腾讯云】征文活动,吸引入驻作者积极参加,非常感谢各位作者的参与。经过评委老师从产品创新性、实用性、可借鉴性、...

    腾讯云开发者社区
  • 【玩转腾讯云】如何用腾讯云搭建typecho博客

    物价清单:域名注册(老用户常规:55¥/年or新用户23¥/首年)+腾讯云新用户(香港1核1G1M 50G硬盘)三年合计428¥+宝塔(免费版)+typecho...

    浮生长恨欢娱少
  • 【玩转腾讯云】用eclipse跑通腾讯云JavaSDK

    https://www.oracle.com/java/technologies/javase-jdk13-downloads.html

    大大大黑白格子

扫码关注腾讯云开发者

领取腾讯云代金券