[译] 使用Natural Language API分析文本的实体与情感

2023-12-13 14:58

本文主要是介绍[译] 使用Natural Language API分析文本的实体与情感,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CSDN广告邮件太多了,邮箱已经屏蔽了CSDN,留言请转SegmentFault:https://segmentfault.com/a/1190000014216330

原文:Natural Language APIでエンティティと感情を分析する

概要

使用 Cloud Natural Language API ,可以从文本中提取实体、分析情感、解析文本构成。

此次向导中,我们将针对 Natural Language API 的3个方法:analyzeEntitiesanalyzeSentimentannotateText 进行学习。

将要学习的东西

  • 构造 Natural Language API 请求,并使用 curl 发送请求
  • 使用 Natural Language API 提取文本中的实体,并进行情感分析
  • 使用 Natural Language API 对文本进行语言分析(语法、词性等)
  • 使用不同的语言构造 Natural Language API 请求

必要的准备

  • 创建Google Cloud Platform项目
  • 浏览器(Chrome、Firefox 等)

设置和一些说明

根据自己的情况进行设置

还未拥有Google账号(Gmail / Google Apps)的情况下,创建账号是必须的。登录Google Cloud Platform Console(console.cloud.google.com),创建一个新项目。

请记住项目名称。任意一个Google Cloud项目都拥有唯一的名称(上述的名称已经被使用了,所以实际上无法使用)。

Google Cloud Platform的新用户将赠与相当于$ 300的试用金。

启用Cloud Natural Language API

点击屏幕左上角的菜单图标。

在下拉菜单中选择 [API Manager]

点击 [启用API] 。

然后,在搜索框中输入「Language」。点击 [Google Cloud Natural Language API]。

点击[启用],启用 Cloud Natural Language API 。

等待数秒,API成功启用后,将显示如下。

激活Cloud Shell

Google Cloud Shell 是在云端运行的命令行环境。这台基于 Debian 的虚拟机能够加载任何您需要的开发工具(gcloud、bq、git等),并提供永久的5 GB主目录。这次教程将使用 Cloud Shell 创建对 Translation API 的请求。

点击标题栏右侧的 [激活 Google Cloud Shell] 按钮(>_),启动Cloud Shell。

Cloud Shell 将在控制台底部的新窗口中打开,并显示命令行提示符。请等待提示符 user@project:~$ 出现。

生成API Key

你将通过使用curl发送一个请求来调用 Natural Language API 。在发送请求时,你需要在 URL 中插入一个生成的 API 密钥。为了创建 API 密钥,让我们点击侧边栏的 [API Manager] 。

然后,在 [凭据] 选项卡中点击 [创建凭据] 。

在下拉菜单中选择 [API 密钥] 。

最后,复制生成好的密钥。此密钥将在向导的后半部分中用到。

你已获得API密钥,我们将其保存在环境变量中,以便每次调用API时不需要重复插入API密钥值。你可以将密钥保存在 Cloud Shell 中,下述的 <your_api_key> 请替换成之前复制的内容。

export API_KEY=<YOUR_API_KEY>

构造分析文本中实体的请求

第一个介绍的 Natural Language API 方法是 analyzeEntities 。API 使用此方法从文本中提取出实体(人物、场所、事件等)。为了试用 API 的实体分析功能,我们将引用最近新闻中的以下句子。

LONDON — J. K. Rowling always said that the seventh Harry Potter book, “Harry Potter and the Deathly Hallows,” would be the last in the series, and so far she has kept to her word.

对 Natural Language API 发出的请求可以事先保存在 request.json 文件中。首先,我们在 Cloud Shell 中生成这个文件。

touch request.json

然后,使用任意一个文本编辑器(nanovimemacs)打开生成的文件。在文件 request.json 中添加如下内容。

request.json

{"document":{"type":"PLAIN_TEXT","content":"LONDON — J. K. Rowling always said that the seventh Harry Potter book, ‘Harry Potter and the Deathly Hallows,' would be the last in the series, and so far she has kept to her word."}
}

在这个请求文件中,保存了即将发送给 Natural Language API 的文本的相关信息。type 属性的值可以是 PLAIN_TEXTHTML 。content 中存放了将要发送给 Natural Language API 分析的文本。Natural Language API 还支持直接发送存储在 Google Cloud Storage 中的文件。直接从 Google Cloud Storage 发送文件时,请将 content 替换为 gcsContentUri,并将其值设置为云端文件的 uri 地址。

调用 Natural Language API

现在,我们将使用 curl 命令,把请求文件和之前保存好的 API 密钥环境变量一起,发送给 Natural Language API (全放在一条命令里面)。

curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" -s -X POST -H "Content-Type: application/json" --data-binary @request.json

你将得到形式如下的响应。

{"entities": [{"name": "Harry Potter and the Deathly Hallows","type": "WORK_OF_ART","metadata": {"mid": "/m/03bkkv","wikipedia_url": "https://en.wikipedia.org/wiki/Harry_Potter_and_the_Deathly_Hallows"},"salience": 0.30040884,"mentions": [{"text": {"content": "book","beginOffset": -1},"type": "COMMON"}]}],......"language": "en"
}

在响应中,我们可以看到 API 从句子里检测到了6个实体(译者:原文是4个,但实际运行时得到6个,应该是API有所改善)。对于每个实体,你将得到实体的 type 、关联的维基百科URL(如果存在)、salience (显著性)以及实体在文本中出现的位置的索引。salience (显著性)是一个0~1的数字,指的是该实体对于整个文本的突出性。对于上述文段,「Harry Potter and the Deathly Hallows」具有最高的显著性(译者:原文是「Rowling」,应该是API有所改善),这是因为这部作品是文段所表述内容的主题。Natural Language API 也可以识别用其他方式表述的相同的实体,比如说「Rowling」、「J.K.Rowling」和「Joanne Kathleen Rowling」都指向同一个维基百科页面。

使用 Natural Language API 进行情感分析

除了提取实体,Natural Language API 还可以分析文本块的情感。JSON 请求文件与之前的那个具有相同的参数,但这次我们更改一下文本,换成一段具有更强烈情感的内容。请修改 request.json 为如下内容,或者换成你喜欢的文段。

request.json

{"document":{"type":"PLAIN_TEXT","content":"I love everything about Harry Potter. It's the greatest book ever written."}
}

然后把请求发送到 API 的 analyzeSentiment 端点。

curl "https://language.googleapis.com/v1/documents:analyzeSentiment?key=${API_KEY}" -s -X POST -H "Content-Type: application/json" --data-binary @request.json

你将得到形式如下的响应。

{"documentSentiment": {"polarity": 1,"magnitude": 1.5,"score": 0.7},"language": "en","sentences": [{"text": {"content": "I love everything about Harry Potter.","beginOffset": -1},"sentiment": {"polarity": 1,"magnitude": 0.6,"score": 0.6}},{"text": {"content": "It's the greatest book ever written.","beginOffset": -1},"sentiment": {"polarity": 1,"magnitude": 0.8,"score": 0.8}}]
}

该方法将返回 polarity (极性)和 magnitude (强度)两个值(译者:原文是这两个值,但很明显现在还能看到 score 这个值)。polarity是介于-1.0 ~ 1.0之间的数值,表示文本消极或积极的程度。magnitude是介于0 ~ ∞的数值,与polarity没有关系,它表示在文本中表达的感情的权重。权重较大的文本块单是增加长度,其magnitude也会变大。上文的polarity是100%积极。「love」、「greatest」、「ever」这样的单词会影响magnitude的值。

分析语法与词性

让我们看看 Natural Language API 的第三个方法:文本注释。让我们进入文本的语言细节。annotateText方法提供了关于文本情感元素、语法元素的完整细节。使用该方法,可以知道文本中每个词语的词性(名词、动词、形容词等),以及各个单词如何与句子中的其他单词关联(是动词的原始形式,还是用来修饰语句)。

让我们通过简单的文段来使用这个方法。JSON 文件与之前的相似,但在这里我们需要添加一项 features 来告诉API你想要执行语法注释。请将request.json替换为如下内容。

request.json

{"document":{"type":"PLAIN_TEXT","content":"Joanne Rowling is a British novelist, screenwriter and film producer."},"features":{"extractSyntax":true}
}

然后把请求发送到 API 的 annotateText 端点。

curl "https://language.googleapis.com/v1/documents:annotateText?key=${API_KEY}" -s -X POST -H "Content-Type: application/json" --data-binary @request.json

响应中,对于句子中的每一个标记(token),会返回以下对象。

{"text": {"content": "Joanne","beginOffset": -1},"partOfSpeech": {"tag": "NOUN","aspect": "ASPECT_UNKNOWN","case": "CASE_UNKNOWN","form": "FORM_UNKNOWN","gender": "GENDER_UNKNOWN","mood": "MOOD_UNKNOWN","number": "SINGULAR","person": "PERSON_UNKNOWN","proper": "PROPER","reciprocity": "RECIPROCITY_UNKNOWN","tense": "TENSE_UNKNOWN","voice": "VOICE_UNKNOWN"},"dependencyEdge": {"headTokenIndex": 1,"label": "NN"},"lemma": "Joanne"
},

让我们详细看看返回值。从 partOfSpeech 可以看到「Joanne」是一个名词。dependencyEdge 包含可用于创建依存句法分析树(依存構文木/Dependency-based parse trees)的数据。这个语法树是一个图表,用来显示句中各单词之间的关系。上述文段的依存句法分析树如下所示。

**注:**使用下面的 demo ,你可以在浏览器中创建自己的依存句法分析树。

https://cloud.google.com/natural-language/

上述返回值中, headTokenIndex 是指具有指向「Joanne」的圆弧的标记(token)的索引。文段中的每一个标记(token)都可以看作是数组中的一个单词,「Joanne」的 headTokenIndex 值是1,表示依存句法分析树中连接了「Rowling」这个单词。 NN (修饰语句 noun compound (名词复合词)的略称)这个标签表示该词在改句子中的作用。「Joanne」是这个句子的主语「Rowling」的修饰词。 lemma 是这个单词的规范化形式。比如,runrunsranrunning 这些单词的 lemma 都是 run 。lemma 有助于你调查大量文本中某一单词的出现频率。

其他语言的自然语言处理

Natural Language API 还支持其他很多语言的实体分析和语法注释。现在我们以日语为例,尝试进行日语文段的实体分析。

request.json

{"document":{"type":"PLAIN_TEXT","content":"日本のグーグルのオフィスは、東京の六本木ヒルズにあります"}
}

(译者:句意是“日本的谷歌办公大楼在东京的六本木新城。”)

我们不必告诉 API 这个文段是什么语言,API 能够自动检测出来。我们以相同的方式发送 API 请求。

curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" -s -X POST -H "Content-Type: application/json" --data-binary @request.json

你将得到形式如下的响应。

{"entities": [{"name": "日本","type": "LOCATION","metadata": {"wikipedia_url": "https://en.wikipedia.org/wiki/Japan","mid": "/m/03_3d"},"salience": 0.23854347,"mentions": [{"text": {"content": "日本","beginOffset": -1},"type": "PROPER"}]},{"name": "グーグル","type": "ORGANIZATION","metadata": {"mid": "/m/045c7b","wikipedia_url": "https://en.wikipedia.org/wiki/Google"},"salience": 0.21155767,"mentions": [{"text": {"content": "グーグル","beginOffset": -1},"type": "PROPER"}]},............],"language": "ja"
}

恭喜!

通过此次向导,我们尝试执行了实体提取、情感分析和语法注释,学会了如何使用 Natural Language API 进行文本分析。

学到的东西

  • 构造 Natural Language API 请求,并使用 curl 发送请求
  • 使用 Natural Language API 提取文本中的实体,并进行情感分析
  • 使用 Natural Language API 对文本进行语言分析(语法、词性等)
  • 使用不同的语言构造 Natural Language API 请求

下一步

  • 浏览 Natural Language API 文档的向导。
  • 尝试使用 Vision API 、Speech API 。

这篇关于[译] 使用Natural Language API分析文本的实体与情感的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/488880

相关文章

关于MyISAM和InnoDB对比分析

《关于MyISAM和InnoDB对比分析》:本文主要介绍关于MyISAM和InnoDB对比分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录开篇:从交通规则看存储引擎选择理解存储引擎的基本概念技术原理对比1. 事务支持:ACID的守护者2. 锁机制:并发控制的艺

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解