前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用python写一个翻译软件

用python写一个翻译软件

原创
作者头像
mariolu
发布2024-03-26 08:21:35
2590
发布2024-03-26 08:21:35
举报
文章被收录于专栏:Python实用主义CDN及云技术分享

一、调用腾讯云文本翻译

腾讯云文本翻译官方文档

https://console.cloud.tencent.com/api/explorer?Product=tmt&Version=2018-03-21&Action=TextTranslateBatch

这里是我们要提供的翻译参数包括Region、SourceText(源文字)、Source(源语言,填auto表示让系统自动检测)、Target(目标语言)、UntranslatedText(不让机器翻译的单词、比如说人名、地名等等)。

二、解决UntranslatedText只能配置一个问题

我试用了可以翻译,但是这里UntranslatedText只支持一个单词。官方给的建议是这个

用来标记不希望被翻译的文本内容,如句子中的特殊符号、人名、地名等;每次请求只支持配置一个不被翻译的单词;仅支持配置人名、地名等名词,不要配置动词或短语,否则会影响翻译结果。

我们用一个办法来绕过这个限制。假设我们把原来要翻译的文本

你好啊Mario,谢谢你Alice,再见Jobs

我们现在不想对着里面的Mario、Alice和Jobs进行翻译。我们重新编码这段文本为

你好%(1)s,谢谢你%(2)s,再见%(3)s

然后我们对1,2,3对应的占位符改成我们想翻译的单词。这里其实有些额外的好处,就是可以把1、2、3按照我们的意思翻译成多种语言。

比如说

  • 简体中文zh翻译成“马里奥、爱丽丝、乔布斯”,
  • 繁体中文翻译成“瑪利歐,愛麗絲,贾伯斯",
  • 日语翻译成“マリオ, アリス,ジョブズ

三、完整的程序

我们来试一下腾讯云的翻译软件接口。

代码语言:python
代码运行次数:0
复制

import json
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:
    # 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
    # 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
    # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
    cred = credential.Credential("SecretId", "SecretKey")
    # 实例化一个http选项,可选的,没有特殊需求可以跳过
    httpProfile = HttpProfile()
    httpProfile.endpoint = "tmt.tencentcloudapi.com"

    # 实例化一个client选项,可选的,没有特殊需求可以跳过
    clientProfile = ClientProfile()
    clientProfile.httpProfile = httpProfile
    # 实例化要请求产品的client对象,clientProfile是可选的
    client = tmt_client.TmtClient(cred, "ap-guangzhou", clientProfile)

    # 实例化一个请求对象,每个接口都会对应一个request对象
    req = models.TextTranslateRequest()
    params = {
        "SourceText": "Hello<1>,Thank you<2>,Good Bye<3>",
        "Source": "auto",
        "Target": "zh",
        "ProjectId": 0,
        "UntranslatedText": "Mario"
    }
    req.from_json_string(json.dumps(params))

    # 返回的resp是一个TextTranslateResponse的实例,与请求对象对应
    resp = client.TextTranslate(req)
    # 输出json格式的字符串回包
    resp_json = json.loads(resp.to_json_string())
    global target_text
    target_text=resp_json['TargetText']
    print(target_text)

except TencentCloudSDKException as err:
    print(err)

 
#这里可以把你自己的Secret配置上去,为了看程序运行结果,我直接把生成后的文字弄出来
target_text="你好%(1)s,谢谢你%(2)s,再见%(3)s"


context_json="""    
{
  "en": {
    "1": "Mario",
    "2": "Alice",
    "3": "Jobs"
  },
  "zh": {
    "1": "马里奥",
    "2": "爱丽丝",
    "3": "乔布斯"
  },
  "zh-tw": {
    "1": "瑪利歐",
    "2": "愛麗絲",
    "3": "贾伯斯"
  },
  "jp": {
    "1": "マリオ",
    "2": "アリス",
    "3": "ジョブズ"
  }
}
"""

import json
context_dict=json.loads(context_json)

my_csv = '你好%(1)s,谢谢你%(2)s,再见%(3)s'
print(my_csv % context_dict['zh'])
print(my_csv % context_dict['zh-tw'])
print(my_csv % context_dict['jp'])

运行结果如下:

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、调用腾讯云文本翻译
  • 二、解决UntranslatedText只能配置一个问题
  • 三、完整的程序
相关产品与服务
机器翻译
机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档