教程:采用 Azure AI 服务的文本分析 您所在的位置:网站首页 做文本分析的软件 教程:采用 Azure AI 服务的文本分析

教程:采用 Azure AI 服务的文本分析

2024-01-02 01:50| 来源: 网络整理| 查看: 265

你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

教程:采用 Azure AI 服务的文本分析 项目 07/28/2023

文本分析是一项 Azure AI 服务,通过它可使用自然语言处理 (NLP) 功能执行文本挖掘和文本分析。 在本教程中,你将学习如何使用文本分析在 Azure Synapse Analytics 上分析非结构化文本。

本教程演示如何将文本分析和 SynapseML 结合使用来实现以下目的:

在句子或文档级别检测情感标签 标识给定文本输入的语言 识别文本中包含指向已知知识库的链接的实体 从文本中提取关键阶段 标识文本中的不同实体并将它们归类到预定义的类或类型中 标识并标记给定文本中的敏感实体

如果没有 Azure 订阅,请在开始之前创建一个免费帐户。

先决条件 Azure Synapse Analytics 工作区,其中 Azure Data Lake Storage Gen2 存储帐户配置为默认存储。 你需要成为所使用的 Data Lake Storage Gen2 文件系统的存储 Blob 数据参与者。 Azure Synapse Analytics 工作区中的 Spark 池。 有关详细信息,请参阅在 Azure Synapse 中创建 Spark 池。 在 Azure Synapse 中配置 Azure AI 服务教程中所述的预配置步骤。 入门

打开 Synapse Studio 并创建新笔记本。 若要开始,请导入 SynapseML。

import synapse.ml from synapse.ml.cognitive import * from pyspark.sql.functions import col 配置文本分析

使用在配置前的步骤中配置的链接文本分析。

ai_service_name = "" 文本情绪

文本情绪分析提供了一种在句子和文档级别检测情绪标签(如“消极”、“中性”和“积极”)和置信度分数的方法。 有关已启用语言的列表,请参阅文本分析 API 中支持的语言。

# Create a dataframe that's tied to it's column names df = spark.createDataFrame([ ("I am so happy today, its sunny!", "en-US"), ("I am frustrated by this rush hour traffic", "en-US"), ("The Azure AI services on spark aint bad", "en-US"), ], ["text", "language"]) # Run the Text Analytics service with options sentiment = (TextSentiment() .setLinkedService(linked_service_name) .setTextCol("text") .setOutputCol("sentiment") .setErrorCol("error") .setLanguageCol("language")) # Show the results of your text query in a table format results = sentiment.transform(df) display(results .withColumn("sentiment", col("sentiment").getItem("document").getItem("sentences")[0].getItem("sentiment")) .select("text", "sentiment")) 预期结果 text 情绪 今天天气晴朗,我真高兴! 积极 交通高峰期让我很郁闷 消极 Spark 上的 Azure AI 服务还不错 积极 语言检测程序

语言检测程序评估每个文档的文本输入,并返回带有指示分析强度分数的语言标识符。 此功能对于用于收集语言未知的任意文本的内容存储非常有用。 有关已启用语言的列表,请参阅文本分析 API 中支持的语言。

# Create a dataframe that's tied to it's column names df = spark.createDataFrame([ ("Hello World",), ("Bonjour tout le monde",), ("La carretera estaba atascada. Había mucho tráfico el día de ayer.",), ("你好",), ("こんにちは",), (":) :( :D",) ], ["text",]) # Run the Text Analytics service with options language = (LanguageDetector() .setLinkedService(linked_service_name) .setTextCol("text") .setOutputCol("language") .setErrorCol("error")) # Show the results of your text query in a table format display(language.transform(df)) 预期结果 实体检测程序

实体检测程序返回已识别实体的列表,其中包含指向已知知识库的链接。 有关已启用语言的列表,请参阅文本分析 API 中支持的语言。

df = spark.createDataFrame([ ("1", "Microsoft released Windows 10"), ("2", "In 1975, Bill Gates III and Paul Allen founded the company.") ], ["if", "text"]) entity = (EntityDetector() .setLinkedService(linked_service_name) .setLanguage("en") .setOutputCol("replies") .setErrorCol("error")) display(entity.transform(df).select("if", "text", col("replies").getItem("document").getItem("entities").alias("entities"))) 预期结果

关键短语提取程序

“关键短语提取”可以计算非结构化的文本,并返回关键短语列表。 如果需要快速确定文档集中的要点,此功能十分有用。 有关已启用语言的列表,请参阅文本分析 API 中支持的语言。

df = spark.createDataFrame([ ("en", "Hello world. This is some input text that I love."), ("fr", "Bonjour tout le monde"), ("es", "La carretera estaba atascada. Había mucho tráfico el día de ayer.") ], ["lang", "text"]) keyPhrase = (KeyPhraseExtractor() .setLinkedService(linked_service_name) .setLanguageCol("lang") .setOutputCol("replies") .setErrorCol("error")) display(keyPhrase.transform(df).select("text", col("replies").getItem("document").getItem("keyPhrases").alias("keyPhrases"))) 预期结果 text keyPhrases Hello world. 这是我喜欢的一些输入文本。 "["Hello world","input text"]" Bonjour tout le monde "["Bonjour","monde"]" La carretera estaba atascada. Había mucho tráfico el día de ayer. "["mucho tráfico","día","carretera","ayer"]" 命名实体识别 (NER)

命名实体识别 (NER) 是指识别文本中不同实体,并将它们分入预定义类或类型(例如:人员、位置、事件、产品和组织)的能力。 有关已启用语言的列表,请参阅文本分析 API 中支持的语言。

df = spark.createDataFrame([ ("1", "en", "I had a wonderful trip to Seattle last week."), ("2", "en", "I visited Space Needle 2 times.") ], ["id", "language", "text"]) ner = (NER() .setLinkedService(linked_service_name) .setLanguageCol("language") .setOutputCol("replies") .setErrorCol("error")) display(ner.transform(df).select("text", col("replies").getItem("document").getItem("entities").alias("entities"))) 预期结果

个人身份信息 (PII) V3.1

PII 功能是 NER 的一部分,可以识别和标记文本中与个人相关的敏感实体,例如:电话号码、电子邮件地址、邮寄地址、护照号码。 有关已启用语言的列表,请参阅文本分析 API 中支持的语言。

df = spark.createDataFrame([ ("1", "en", "My SSN is 859-98-0987"), ("2", "en", "Your ABA number - 111000025 - is the first 9 digits in the lower left hand corner of your personal check."), ("3", "en", "Is 998.214.865-68 your Brazilian CPF number?") ], ["id", "language", "text"]) pii = (PII() .setLinkedService(linked_service_name) .setLanguageCol("language") .setOutputCol("replies") .setErrorCol("error")) display(pii.transform(df).select("text", col("replies").getItem("document").getItem("entities").alias("entities"))) 预期结果

清理资源

为了确保关闭 Spark 实例,请结束任何已连接的会话(笔记本)。 达到 Apache Spark 池中指定的空闲时间时,池将会关闭。 也可以从笔记本右上角的状态栏中选择“停止会话”。

后续步骤 查看 Synapse 示例笔记本 SynapseML GitHub 存储库


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有