使用Postman调用Azure Translator接口对文本进行翻译
分类: Azure翻译服务 ◆ 标签: #Azure #翻译 #Translator ◆ 发布于: 2023-06-15 20:58:56

我们前面的文章已经简单的介绍了Azure Translator
服务, 服务主要包括三个主要的特性:
- 文本翻译
- 文档翻译
- 自定义模型翻译
文本翻译主要是以rest api
来向用户提供功能,同时需要注意的是,由于Azure Translator
也属于Azure Cognitive Service
认知服务API
的一部分,因此您也可以创建一个Azure认知服务
来使用文本翻译服务,区别在于rest api
请求的url会不一样, 这个两个url
代表的服务是一样的,如果您不仅仅需要使用翻译服务,还需要使用其他的服务,你可以创建一个认知服务实例,如果你愿意一个一个服务的创建也没有问题,看你自己的喜好。我们所有的例子创建一个单一的服务。
接下来我们使用Postman
来探索Azure
的翻译服务。
开始之前,请自行安装Postman
, 另外请注意使用postman
的时候我们需要几个信息:
- 您的翻译服务的文本翻译
API
请求的endpoint
- 您的翻译服务的
key
- 您的翻译服务的区域
同时在使用Postman
是需要额外添加如下几个header
:
- 认证
header
:header name
是Ocp-Apim-Subscription-Key
, 值就是翻译服务的key
- 自定义的标识区域的
header
:header name
是Ocp-Apim-Subscription-Region
, 值是创建的区域。 ContentType
:application/json; charset=UTF-8
文本翻译
使用如下的API
来使用文本翻译:
- 请求的
API
:/translate
- 参数说明:
api-version
: 值必须为3.0
, 例如:/translate?api-version=3.0
from
: 指定源语言是什么, 例如:/translate?api-version=3.0&from=en
, 关于语言代码,请参考文档:https://docs.microsoft.com/en-us/azure/cognitive-services/translator/language-supportto
: 指定需要翻译的语言,需要注意的是可以添加多个目标语言,例如:/translate?api-verison=3.0&from=en&to=zh-hans&to=ja
就可以直接请求一个翻译服务了,我们来测试一下,需要注意的请求的方法要是post
, request body
使用如下的形式:
[ { "Text": "Hello, World!" }, { "Text": "I am a teacher" } ]
您可以添加多行文本。
我们这个例子里贴上一张图,为了给大家参考是如何设置postman
, 之后我们就不再贴postman
的图了,大家可以自行设置:
图一: postman
里的环境变量的设置:
图二: postman
的header
设置:
图三: postman
的request body
设置:
上述的请求结果如下:
[ { "translations": [ { "text": "世界您好!", "to": "zh-Hans" }, { "text": "ハローワールド!", "to": "ja" } ] }, { "translations": [ { "text": "我是老师", "to": "zh-Hans" }, { "text": "私は教師です", "to": "ja" } ] } ]
语言检测
如果我们在上述的翻译请求中使用了translate
这个接口,但是不添加参数from
, 那么服务会自动检测语言,并在返回的结果里通过属性detectedLanguage
返回检测到的结果,需要注意的是语言检测同时有一个score
的参数,表示语言检测的精确度,1.0
表示完全无误,值范围在0-1.0
之间:
如:/translate?api-version=3.0&to=zh-hans&to=ja
通过Postman
返回的结果是:
[ { "detectedLanguage": { "language": "en", "score": 1.0 }, "translations": [ { "text": "世界您好!", "to": "zh-Hans" }, { "text": "ハローワールド!", "to": "ja" } ] }, { "detectedLanguage": { "language": "en", "score": 1.0 }, "translations": [ { "text": "我是老师", "to": "zh-Hans" }, { "text": "私は教師です", "to": "ja" } ] } ]
只检测语言不翻译
上述通过不传递from
让服务自行判断语言,但是如果仅仅只是想判断语言,而翻译,那么就需要访问接口:/detect
接口:/detect
参数:api-version
= 3.0
请求体还是一样的。
例如:request
:
[ { "Text": "Hello, World!" }, { "Text": "你好, 世界!" }, { "Text": "私は教師です" } ]
返回结果是:
[ { "language": "en", "score": 1.0, "isTranslationSupported": true, "isTransliterationSupported": false }, { "language": "zh-Hans", "score": 1.0, "isTranslationSupported": true, "isTransliterationSupported": true }, { "language": "ja", "score": 1.0, "isTranslationSupported": true, "isTransliterationSupported": true } ]
这里需要注意的是返回结果中几个值得注意的:
isTranslationSupported
: 是否支持该语言的翻译。isTransliterationSupported
: 是否支持该语言的音译, 例如中文的汉语拼音。