如何以JSON为输入使用Microsoft Translator Text API的Dynamic Dictionary功能?
用JSON调用微软翻译API的Dynamic Dictionary功能
我之前也被微软这个Dynamic Dictionary的文档绕晕过,结合你提到的那个Python示例,给你捋清楚怎么用JSON输入来实现这个功能:
核心思路
Dynamic Dictionary的作用就是强制让API把指定词汇翻译成你想要的结果,核心是在待翻译文本里加特定标签,同时告诉API要识别这些标签(通过设置textType参数)。
1. 给待翻译文本加字典标签
要指定词汇的翻译,你需要在文本里用<mstrans:dictionary>标签包裹目标词汇,格式是:
<mstrans:dictionary translation="目标语言翻译结果">源语言词汇</mstrans:dictionary>
比如你想让英文的"Contoso"翻译成中文的"康托索",待翻译文本就写成:"The <mstrans:dictionary translation=\"康托索\">Contoso</mstrans:dictionary> team is working on a new project."
2. 调整API请求的参数
因为用到了HTML标签,必须在请求的查询参数里设置textType=html,不然API会把标签当成普通文本直接翻译,起不到字典的作用。
3. 基于Translate.py示例修改代码
把原来示例里的请求体和参数做调整,下面是修改后的完整代码片段:
import requests, uuid, json # 替换成你自己的Azure翻译密钥和端点 key = "你的翻译API密钥" endpoint = "你的翻译API端点" path = '/translate' constructed_url = endpoint + path params = { 'api-version': '3.0', 'from': 'en', 'to': ['zh-Hans'], 'textType': 'html' # 关键:必须设为html才能识别字典标签 } headers = { 'Ocp-Apim-Subscription-Key': key, 'Ocp-Apim-Subscription-Region': '你的资源区域', 'Content-type': 'application/json', 'X-ClientTraceId': str(uuid.uuid4()) } # 包含Dynamic Dictionary的JSON请求体 body = [{ 'Text': 'The <mstrans:dictionary translation="康托索">Contoso</mstrans:dictionary> team is working on a new project.' }] # 发送请求并打印结果 request = requests.post(constructed_url, params=params, headers=headers, json=body) response = request.json() print(json.dumps(response, sort_keys=True, ensure_ascii=False, indent=4, separators=(',', ': ')))
4. 几个要注意的点
- 别忘把代码里的密钥、端点、区域换成你自己Azure账户里的信息,不然请求会失败。
- 如果要批量处理多个文本,直接在
body数组里添加更多{"Text": "..."}对象就行,每个文本都可以单独加字典标签。 - 标签里的
translation值一定要和你指定的目标语言匹配,比如目标语是日文就写日文翻译,别搞混了。
内容的提问来源于stack exchange,提问作者Clay
相关产品推荐
相关产品推荐

