Skip to main content

使用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:

  • 认证headerheader nameOcp-Apim-Subscription-Key, 值就是翻译服务的key
  • 自定义的标识区域的headerheader nameOcp-Apim-Subscription-Region, 值是创建的区域。
  • ContentTypeapplication/json; charset=UTF-8

文本翻译

使用如下的API来使用文本翻译:

  • 请求的API/translate
  • 参数说明:

就可以直接请求一个翻译服务了,我们来测试一下,需要注意的请求的方法要是postrequest body使用如下的形式:

[
{
    "Text": "Hello, World!"
},
{
    "Text": "I am a teacher"
}
]

您可以添加多行文本。

我们这个例子里贴上一张图,为了给大家参考是如何设置postman, 之后我们就不再贴postman的图了,大家可以自行设置:

图一: postman里的环境变量的设置:


图二: postmanheader设置:


图三: postmanrequest 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: 是否支持该语言的音译, 例如中文的汉语拼音。