使用 Azure 认知服务教授应用程序阅读
介绍
作为软件应用程序的用户,我们可以通过多种方式与技术互动。我们现在可以与计算机对话,让它理解我们所说的内容。我们可以使用计算机视觉让机器识别面部表情。但总的来说,大多数时候我们仍然使用纯文本与计算机交流。现有的大量文本数据证明了这一点。我们如何从这些文本数据中提取有意义且可操作的见解?
Azure 认知服务包括文本分析服务。这为开发人员提供了一个易于使用的 REST API,其中包含几种主流语言(包括 C#、JavaScript 和 Python)的客户端库。文本分析服务具有当今在软件应用程序中处理文本时常见的几种功能。在本指南中,我们将讨论其中三种:情绪分析、命名实体识别和语言检测。使用 Azure 认知服务时,作为开发人员的您无需了解任何有关机器学习或自然语言处理的知识。如果您可以调用 REST API 或使用语言和客户端库,则可以将文本分析集成到您的下一个项目中!本指南将演示如何将文本分析服务与 C# 客户端库一起使用。
设置
无论您需要什么功能,Azure 文本分析认知服务都具有通用设置。在 Azure 门户中,搜索文本分析服务并创建新资源。要进行实验,请在定价层中选择免费并避免产生费用。配置资源后,单击左侧的密钥和端点链接。这将向您显示访问服务所需的 API 密钥和端点。将 API 密钥视为密码!
首先,您需要将Azure.AI.TextAnalytics NuGet 包添加到项目依赖项中。截至本指南发布时的最新版本为 5.0.0。
为您的 API 密钥和端点添加变量。
static string API_KEY = "your-api-key";
static string ENDPOINT = "your-endpoint"
API 密钥用于创建AzureKeyCredential实例,该实例用于对帐户所有者进行身份验证。端点用于创建Uri实例,是基本位置。
var azureCredentials = new AzureKeyCredentials(API_KEY);
var endpoint = new Uri(ENDPOINT);
文本分析的所有功能都将使用TextAnalyticsClient类上的方法,因此我将创建一个实例:
var client = new TextAnalyticsClient(endpoint, azureCredentials);
情绪分析
本指南将讨论的文本分析服务的第一个功能是情绪分析。名称是不言自明的。该服务分析一段文本并返回情绪是积极还是消极的预测。要分析一段文本的情绪,请调用 AnalyzeSentiment方法。
DocumentSentiment sentimentAnalysisResults = client.AnalyzeSentiment("Azure Cognitive Service is fantastic when you need to add AI to an application quickly");
请注意,在我使用类型推断来声明客户端和其他类的实例的地方,我在这里明确使用了DocumentSentiment 。这是因为AnalyzeSentiment的实际返回类型是Response<DocumentSentiment>。DocumentSentiment将为所分析的文本中的每个句子提供一个SentenceSentiment。这些存储在Sentences属性中。SentenceSentiment有三个感兴趣的属性。
- 文本——句子本身
- 情绪——“积极”或“消极”的预测
- ConfidenceScores - 每种情绪的值
ConfidenceScores属性具有三个值,对于每种情绪,每个值都在 0.0 到 1.0 之间(含):
- 积极的
- 消极的
- 中性的
该文本的预测是积极情绪,其中积极得分为 1.0 ,消极和中性得分为 0.0 。
如果我将文本改为“如果你有特殊需求,那就没那么好了”,情绪的预测就是负面的,负面分数是 1.0。
命名实体识别
文本分析服务还可以从文本中解析出 14 个不同的实体。这包括美国和欧盟的人名、地理位置、电子邮件地址和电话号码。这称为命名实体识别 (NER)。使用 NER 与使用情绪分析一样简单。您只需在TextAnalyticsClient实例上调用不同的方法。只需向RecognizeEntities方法提供要分析的文本即可。
var recognizeEntitiesResult = client.RecognizeEntities("Microsoft Azure is used all over the world from the Australia to Zimbabwe.")
RecognizeEntities的返回值具有Value属性,该属性是文本中检测到的每个实体的CategorizedEntity集合。CategorizedEntity具有三个值得关注的属性:
- 文本——实体本身
- 类别- 从十四个列表中预测实体的类别
- ConfidenceScore - 介于 0.0 和 1.0 之间的值(含 0.0 和 1.0),其中 1.0 表示在预测类别中最确定
如果您查看认知服务文档中的类别列表,您会发现某些类别有子类别。此外还有一个Subcategory属性。
如果要求文本分析服务在字符串“Microsoft Azure 在全球各地使用,从澳大利亚到津巴布韦”中查找实体,它将找到三个实体:“Microsoft Azure”、“澳大利亚”和“津巴布韦”。它以较高的确定性将“澳大利亚”和“津巴布韦”识别为地理位置,分别为 0.91 和 0.87。但是,它预测“Microsoft Azure”是一个“组织”。这似乎很奇怪,因为 Azure 是一种软件产品。而且 Azure 对标签也不太确定,只有 0.51 分。如果我将文本修改为“Microsoft 在从澳大利亚到津巴布韦的世界各地销售软件”,它会预测“Microsoft”是一个组织,得分为 0.79。澳大利亚和津巴布韦的分数仍然很高。它还预测“软件”是一项技能,得分为 0.8。
语言检测
虽然本指南是用英语编写的,但它只是文本分析服务识别的众多语言之一。在TextAnalyticsClient实例上调用DetectLanguage方法将返回具有预测语言的值。我使用Microsoft Translator将字符串“Microsoft sells software all over the world”翻译成西班牙语、俄语和日语。
var spanish = "Microsoft vende software en todo el mundo.";
var russian = "Microsoft продает программное обеспечение по всему миру.";
var japanese = "マイクロソフトは世界中でソフトウェアを販売しています。";
与情绪分析一样,我必须明确声明返回值的类型。
DetectedLanguage detectSpanish = client.DetectLanguage(spanish);
DetectedLanguage detectRussian = client.DetectLanguage(russian);
DetectedLanguage detectJapanese = client.DetectLanguage(japanese);
DetectedLanguage具有Name属性,它是文本的预测语言。
如果您查看对这三个翻译句子的分析结果,您会发现 Azure 正确地预测它们是西班牙语、俄语和日语。因此 Azure 可以处理使用西方字母、俄罗斯使用的西里尔字母的语言,以及日语等字符之间差异较小的语言。
结论
应用程序可以使用 Azure 认知服务来添加情绪分析、实体识别和语言检测。文本分析服务不需要机器学习知识,每笔交易只需花费几分钱。使用 REST API 或客户端库,开发人员可以将服务集成到几乎任何语言的 Web 和移动应用程序中。困难的部分是自然语言处理由 Microsoft 处理。这比自己尝试训练机器学习模型更便宜、更可靠。这些问题之前已经解决过,因此您可以专注于让您的应用程序更出色的事情!感谢您的阅读!
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~