快速入门:使用 Python 通过文本翻译 API 来确定句子长度

本快速入门介绍如何使用 Python 和文本翻译 REST API 来确定句子长度(以字符数为单位)。

此快速入门需要包含文本翻译资源的 Azure 认知服务帐户。 如果没有帐户,可以使用试用帐户获取订阅密钥。

先决条件

本快速入门需要:

  • Python 2.7.x 或 3.x
  • 适用于文本翻译的 Azure 订阅密钥

创建一个项目并导入必需的模块

使用最喜欢的 IDE 或编辑器创建新的 Python 项目。 然后,将此代码片段复制到项目的名为 sentence-length.py 的文件中。

# -*- coding: utf-8 -*-
import os, requests, uuid, json

Note

如果尚未使用这些模块,则需在运行程序之前安装它们。 若要安装这些包,请运行 pip install requests uuid

第一个注释告知 Python 解释器使用 UTF-8 编码。 然后导入必需的模块,以便从环境变量读取订阅密钥、构造 HTTP 请求、创建唯一标识符,以及处理文本翻译 API 返回的 JSON 响应。

设置订阅密钥、基 URL 和路径

此示例将尝试从环境变量 TRANSLATOR_TEXT_KEY 读取文本翻译订阅密钥。 如果不熟悉环境变量,则可将 subscriptionKey 设置为字符串并注释掉条件语句。

将以下代码复制到项目中:

# Checks to see if the Translator Text subscription key is available
# as an environment variable. If you are setting your subscription key as a
# string, then comment these lines out.
if 'TRANSLATOR_TEXT_KEY' in os.environ:
    subscriptionKey = os.environ['TRANSLATOR_TEXT_KEY']
else:
    print('Environment variable for TRANSLATOR_TEXT_KEY is not set.')
    exit()
# If you want to set your subscription key as a string, uncomment the line
# below and add your subscription key.
#subscriptionKey = 'put_your_key_here'
#region = 'put_your_region_here'

文本翻译全局终结点设置为 base_urlpath 设置 breaksentence 路由并确定我们需使用 API 的版本 3。

此示例中的 params 用于设置所提供文本的语言。 params 不是 breaksentence 路由所需的。 如果不包含在请求中,此 API 会尝试检测所提供文本的语言,并会在响应中提供此信息以及置信度分数。

Note

有关终结点、路由和请求参数的详细信息,请参阅文本翻译 API 3.0:语言

base_url = 'https://api.translator.azure.cn'
path = '/breaksentence?api-version=3.0'
params = '&language=en'
constructed_url = base_url + path + params

添加标头

若要对请求进行身份验证,最容易的方法是将订阅密钥作为 Ocp-Apim-Subscription-Key 标头传入,这是我们在此示例中使用的方法。 替代方法是交换订阅密钥来获取访问令牌,将访问令牌作为 Authorization 标头传入,以便对请求进行验证。 有关详细信息,请参阅身份验证

将以下代码片段复制到项目中。

headers = {
    'Ocp-Apim-Subscription-Key': subscriptionKey,
    'Ocp-Apim-Subscription-Region': region,
    'Content-type': 'application/json',
    'X-ClientTraceId': str(uuid.uuid4())
}

创建一个用于确定句子长度的请求

定义需要确定其长度的句子:

# You can pass more than one object in body.
body = [{
    'text': 'How are you? I am fine. What did you do today?'
}]

接下来,请使用 requests 模块创建一个 POST 请求。 它使用三个参数:串联的 URL、请求标头和请求正文:

request = requests.post(constructed_url, headers=headers, json=body)
response = request.json()

最后一步是输出结果。 以下代码片段通过将密钥排序、设置缩进以及声明项和密钥分隔符来美化结果。

print(json.dumps(response, sort_keys=True, indent=4, ensure_ascii=False, separators=(',', ': ')))

将其放在一起

就是这样,你已构建了一个简单的程序。该程序可以调用文本翻译 API 并返回 JSON 响应。 现在,可以运行该程序了:

python sentence-length.py

如果希望将你的代码与我们的进行比较,请查看 GitHub 上提供的完整示例。

示例响应

[
    {
        "sentLen": [
            13,
            11,
            22
        ]
    }
]

清理资源

如果已将订阅密钥硬编码到程序中,请确保在完成本快速入门后删除该订阅密钥。

后续步骤

另请参阅

了解如何使用文本翻译 API 执行以下操作: