摘要

自然语言处理 (NLP) 是语言学、计算机科学和人工智能的一个子领域,涉及计算机与人类语言之间的交互 (引自维基百科)【1】。NLP 的目标是让计算机理解人类所说和所写的内容,并以同样的方式进行交流。NLP 在过去十年中一直是一个有趣的领域,伴随着人们对自动化信息提取、处理和生成业务价值的期望越来越高。通常,专业知识领域的上下文和非结构化数据会给NLP增加额外的难度。

命名实体识别(NER)是 NLP 的一类子任务,专注于信息提取、实体定位和文本分类。它用于将非结构化文本中的命名实体映射到预定义的类别,例如人名、组织、医疗代码、货币价值 【2】。NER 可用于构建语义搜索引擎并帮助提高文档的性能和索引。现在著名的 NER 平台包括 GATE、OpenNLP 和 SpaCy。

另一方面,主题模型是用来探索和提取文本主题的统计模型,而主题建模通常用于文本挖掘,以发现文本正文中隐藏的语义结 【3】。

在这篇博文中,我们演示了如何利用 NER 和主题建模将亚马逊云科技服务用于社交媒体数据分析。我们应用Amazon Comprehend 作为 NER 步骤来微调亚马逊云科技中的预训练语言模型。选择社交媒体数据的原因是为了简单起见,并避免行业(例如金融服务和医疗保健)特定术语带来的额外复杂性。事实上,对于热衷于通过社交聆听监控其品牌的企业来说,更好地了解社交媒体数据的背景和分类是至关重要的。

本文剩下的部分结构如下:

  1. 介绍Amazon Comprehend的NER和主题模型API

  2. 实验数据

  3. 系统性框架和数据流程图

  4. 结果和展望

1. Amazon Web Services

在自然语言处理的云服务

Amazon Web Services 提供了广泛的自然语言处理服务,帮助客户轻松利用基于机器学习的模型,构建 AI 应用程序,用于文本分析、聊天机器人、语言翻译、情感分析、语音识别等领域。Amazon Transcribe是一项自动将语音转换为文本的语言处理服务。它使用一种称为自动语音识别的深度学习过程,可用于为媒体资产添加字幕,将客户服务电话数字化为文本,以创建存档或开展进一步的分析。Amazon Web Services 还提供了一项名为Amazon Polly的服务,用于将文本转换为逼真的人类语音。Amazon Translate 是另一种基于深度学习的语言服务,可以支持71 种语言和变体之间的翻译。此外,Amazon Web Services 提供了功能强大的语言服务 Amazon Lex,它作为在Amazon Alexa上得到应用的底层技术,可基于其语音识别、自然语言理解和生成模型,轻松构建出成熟的聊天机器人。

除了上述服务外,Amazon Comprehend 是 Amazon Web Services 中另一项功能强大的自然语言处理服务,它使用机器学习技术来提取文本中的信息,并揭示有价值的见解。Amazon Comprehend 原生支持实体识别操作,可以检测文本中的日期、事件、位置、人物等实体。除了预设的通用实体类型外,Amazon Comprehend 还支持自定义实体识别,让用户能够创建自定义模型来识别新的实体类型。

Amazon Comprehend 还提供主题建模 API,用于将文档语料库组织成主题。通过主题建模,每个文档都是整个语料库中主题的组合,而每个主题是单词的统计分布。主题建模提供的见解在信息检索、文档分类和文档摘要等领域有重要用途。Amazon Comprehend内置了两种主题建模算法:Amazon SageMaker 神经主题模型 (NTM)Amazon SageMaker 潜在狄利克雷分配 (LDA)。在 Amazon SageMaker NTM 中,主题建模由基于神经网络的变分推理框架实现,该框架可以从语料库的单词分布中学习与文档相关的主题。

2. 实验数据

本文中选用的实验数据来自第三方工作室所提供的W-NUT17的实体识别任务数据集【4】【5】。W-NUT数据在源数据的基础上,增加了人工合成的噪声文本已满足自然语言处理的需要。其中源数据包括,社交媒体,在线评估,众筹数据,网络论坛,临床诊断以及学习笔记等等。

数据集中包含了1000条带标注的tweets,一共65124个tokens. 评论文本来自Twitter, Stack Overflow, YouTube 以及Reddit. 命名实体的标注包括类别如下:

  1. 人名

  2. 地点 (包括地理位置和机构位置)

  3. 分组(如乐队,体育团队, 以及非企业单位)

  4. 创造性的工作 (歌曲, 电影, 书籍等等)

  5. 企业

  6. 产品(有形的产品或者定义良好的服务)

本文的开发训练样本和测试样本的划分来自2017年国际学术会议的参考文献 “Results of the W-NUT 17 Shared Task on Novel and Emerging Entity Recognition” 。具体情况如表1所示。

表 1: 命名实体数据的样本统计

3. 系统架构及流程

下图展示了解决方案的架构:

图1. 基于Amazon Comprehend 和NER的简单流程图

在此解决方案中,我们通过将 Amazon Comprehend 与 Amazon S3 用于 NLP 任务来展示其简单性。例如,我们可以将 Comprehend 函数与输入的句子字符串一起使用,如图1左上角所示。它使用内置的 Comprehend 模型来实现命名实体检测、单词标记等功能。或者,如图1左下角所示,我们可以提供 txt 或 csv 文件作为文本语料库来自定义训练模型。如图1右侧所示,返回的结果以json形式呈现以方便进一步处理。句子标记(右上)和句子 NER(右下)可以方便的进行进一步分析和建模。

使用 Amazon Comprehend 进行 NER 和主题建模相当简单,我们可以应用内置模型或自行训练模型。对于 NER 任务,我们只需提供目标句子、语言代码和区域即可使用理解检测实体Amazon NER API文档 。设置主题建模比 NER 任务稍微复杂一些,在主题建模任务中,我们需要首先使用启动主题检测作业 API ,通过指向包含请求数据的 json 文件来启动主题检测作业。或者,Amazon SDK 是另一种利用亚马逊云科技理解主题建模的方法。有关 Amazon Comprehend 主题建模服务的详细使用,请参阅Amazon 文档

  • Amazon NER API 文档:

    https://docs.aws.amazon.com/comprehend/latest/dg/get-started-api-entities.html

  • Amazon 文档:

    https://docs.aws.amazon.com/comprehend/latest/dg/get-started-topics.html#topic-python

端到端的流程如下:

  1. 将一组带有实验数据的文本文件上传到 Amazon S3。

  2. 清晰标注所有文本文档的标签。

  3. 在 Amazon Comprehend 控制台上,使用 Amazon Lambda 生成的数据集启动自定义 NER 训练作业

  4. 在 Amazon Comprehend 控制台上,启动自定义主题建模作业。

4.结论

我们开发了一个可以根据 Amazon Comprehend 指南来注释训练集的脚本。该注释内容一共有5列(如下图),其中包括了标明在 Amazon S3 上训练集文件名的‘File’,标明在训练集中具体第几行的‘Line’,标明在对应行上entity字段起始位置的‘Begin Offset’,同样标明在对应行上entity字段结束位置的‘End Offset’以及说明entity类型的‘Type’列。更多有关注释格式的信息,可以参照Amazon 文档

  • Amazon 文档

    https://docs.aws.amazon.com/Comprehend/latest/dg/cer-annotation.html

图2.训练集数据的注释

Amazon Comprehend要求每一个类型的entity至少输入200个不用的注释。然而所用的训练集中的‘product’和‘creative-work’类型分别只有139和137个注释,因此这两个类型的注释内容被暂时的排除在我们的数据集之外。在训练集文件和注释文件被上传到 Amazon S3 之后,Amazon Comprehend下面的custom entity recognition模组会使用这两个文件来训练模型,具体的操作页面如下图。

图3.基于Amazon Comprehend 的模型训练

训练过程大概需要25分钟左右完成。在训练过程中我们发现Amazon Comprehend会返回一个entity类型识别重叠的错误值,例如像‘Jessica Simpson’ 和‘Simpson’。因此,为了确保训练集和模型质量,我们只保留了全名。Custom entity recognition模组会自动测试并选出最合适的算法和参数,因此并不需要额外输入测试数据集。下图包含了最终模型结果的精确度,召回率和F1分数。Entity类型‘corporation’ 和 ‘group’的相对较低的指标可能是因为这两种类型的样本数据也相对较少。模型的平均F1分数在0.32左右,这个结果接近和其他用了同样训练数据集的研究【6】,表明了我们模型的可靠性。

图4.模型结果的性能参数

有了训练好的custom entity recognizer模型之后,另一组没有标签的数据集被放入到模型中来做预测,会生成一份带有named-entity recognition(NER)注释的新数据集。原始数据集和带有注释的新数据集会被分别放入Amazon Comprehend下面的topic modeling模组来生成不同的结果作比较。该模组采用了基于Latent Dirichlet Allocation(LDA)算法的模型来模拟topic modeling,这是一个在类似场景中非常常用的算法。更多详细信息可以在Amazon 关于topic modeling的文档中找到。

  • topic modeling:

    https://docs.aws.amazon.com/comprehend/latest/dg/topic-modeling.html

下图是使用了带注释的数据集所生成的topic modeling 模型的前五个主题以及对应的关键词和权重。

然后下图是使用了原始数据集(不带有NER注释)所生成的topic modeling 模型的前五个主题以及对应的关键词和权重。因为LDA算法自身的特性,即便是相同的主题,每一次运行之后其对应的关键词可能会有略微的差异。尽管如此,对于使用不同数据集的两个模型, Amazon Comprehend的topic modeling还是稳定的预测出了0号主题(topic0),并且两个模型的该主题的关键词也都相同。使用带NER注释的模型所预测出的1号主题和使用不带有NER注释的模型所预测出的2号主题也都包含了相同的关键词。

使用了带NER注释的模型预测出的2号主题和另一个模型的1号主题看上去可能都是和感情有关的主题,因为他们的关键词都包括了‘love’。但是我们提议的带NER注释的模型能够预测出更具有信息性的词汇,例如‘hate’,‘pain’和‘gallifreyan’等,这可能表明了该主题其实是有关小说或者电视剧的。带NER注释的模型的3号主题和不包括注释的模型的4号主题拥有几乎相同的关键词,说明这两个主题可能非常接近。最后,带NER注释的模型的4号主题预测出了包括‘location’, ‘calgary’, ‘adelaide’ 和 ‘europe’等关键词,表明了该主题很有可能和旅游相关,然而另一个不带NER注释的模型没有办法预测出类似的主题。

参考链接

【1】

https://en.wikipedia.org/wiki/Natural_language_processing

【2】

https://en.wikipedia.org/wiki/Named-entity_recognition

【3】

https://en.wikipedia.org/wiki/Topic_model

【4】

https://github.com/juand-r/entity-recognition-

datasets/tree/master/data/WNUT17

【5】

http://noisy-text.github.io/2017/pdf/WNUT18.pdf

【6】

https://www.aclweb.org/anthology/W17-4418/

本篇作者

李钧

普华永道全球信息技术优创中心总监,解决方案架构师

他专注于数字化、新兴技术(如区块链、AR/VR、人工智能等),以及基于机器学习和深度学习的高级分析技术。他的行业经验横跨金融保险、医疗制药和高科技领域。他不仅是一位业务创新型领导者,也是云技术的热切推动者,并渴望以专注服务的理念来帮助客户成功云转型。

听说,点完下面4个按钮

就不会碰到bug了!

自然语言处理实战——巧用 Amazon Comprehend 分析社交媒体数据相关推荐

  1. Salesforce发布人工智能工具分析社交媒体内容

    至顶网软件频道消息:就在Crimson Hexagon推出一项采用人工智能分析发布在社交网络上的媒体内容一周时间后,另外一个重要参与者也加入其中. Salesforce.com今天推出了一款名为Eis ...

  2. [实战] 用Python进行可视化分析LOL战队数据

    摘要:通过python进行数据分析实战 这是涛哥给你推荐的第8篇好文 来源:数据管道 作者:爱德宝器 摘要: LPL(League of Legends Pro League),中国大陆最高级别的英雄 ...

  3. 数据分析实战:python热门音乐分析 附代码+数据 +论文(PCA 主成分分析,sklearn 机器学习,pytorch 神经网络,k-means 聚类,Librosa 音频处理,midi 音序)

    项目概述: 本选取了抖音当下最热门的 400 首音乐,通过一系列方法提取每首歌的波形特征,再经过降维以及机器学习等手段,进行无监督学习对音乐数据进行聚类的同时训练并使用监督学习分类器进行音乐流派分类, ...

  4. 自然语言处理实战:机器学习常见工具与技术

    许多自然语言处理都涉及机器学习,所以理解机器学习的一些基本工具和技术是有益处的.有些工具已经在前几章中讨论过,有些还没有,但这里我们会讨论所有这些工具. D.1 数据选择和避免偏见 数据选择和特征工程 ...

  5. 【Python 实战基础】如何绘制直方图分析张三成绩数据

    目录 一.实战场景 二.主要知识点 文件读写 基础语法 字符串处理 文件生成 数据构建 三.菜鸟实战 1.创建 python 文件 2.运行结果 一.实战场景 实战场景:如何绘制直方图分析张三成绩数据 ...

  6. Spark项目实战—电商用户行为分析

    文章目录 一.[SparkCore篇]项目实战-电商用户行为分析 前言:数据准备 1.数据规则如下: 2.详细字段说明: 3.样例类 (一)需求1:TOP10热门品类 1.需求说明 2.代码实现方案1 ...

  7. Python数据分析实战:降雨量统计分析报告分析

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于菜J学Python ,作者小小明 最近遇到一个有点烧脑的需求,其实也不算烧pytho ...

  8. 需求分析与建模最佳实践_社交媒体和主题建模:如何在实践中分析帖子

    需求分析与建模最佳实践 主题建模的实际使用 (Practical use of topic modeling) There is a substantial amount of data genera ...

  9. redshift 数据仓库_您如何使用Amazon Redshift Spectrum访问“暗数据”

    redshift 数据仓库 by Lars Kamp 通过拉斯·坎普 您如何使用Amazon Redshift Spectrum访问"暗数据" (How you can acces ...

最新文章

  1. 使用码云给同事地址地址注意事项
  2. 我花了三个小时写了一道题的六千字题解....(POJ 2888 Magic Bracelet)
  3. 前端有啥好用的手机模拟软件吗_隐藏应用,软件双开,一个APP就解决了
  4. 大华webplugin控件无法安装_大华监控平台SmartPSS如何上电视墙,一文包你学会
  5. c语言将字母的acsaii,C语言上机实验 答案
  6. oracle修改成olap模式,的Oracle OLAP Java实现 - 正确源加入
  7. json数据在js中的常见操作
  8. HDU 1253.胜利大逃亡
  9. log4net用法实例
  10. 使用数据分析工具的注意事项
  11. MySQL数据库删除数据(有外键约束)
  12. linux高级编程进程,linux高级编程(五、进程)
  13. 阿古斯机器人_炉石传说三选一卡池全部卡牌一览 挑战之旅冒险模式攻略
  14. yarn.lock、package-lock.json、npm-shrinkwrap.json的理解
  15. 华为手机为何能反超小米?
  16. international journal of remote sensing投稿经历给我的感悟
  17. stm32调试内存越界情况
  18. Android开发知识(二十三)从源码角度分析ListView的滑动复用机制
  19. 风控体系及政策设计介绍
  20. [-128,127]内十进制转二进制

热门文章

  1. linux下回收站无法清空 解决
  2. qt中的toUtf8, toLatin1, Local8bit编码问题
  3. 单独使用bable插件
  4. 玩转【斗鱼直播APP】系列之界面分析
  5. csapp lab3 attack 《深入理解计算机系统》实验3攻击超详细0基础解析
  6. 魔术师usm安装服务器系统,魔术师u盘一键装系统
  7. 深入浅出——MVP模式
  8. js调用高德地图API接口——返回坐标和省市区地理位置信息
  9. Airbnb如何应用AARRR策略成为全球第一民宿平台
  10. pythoneducoder苹果梨子煮水的功效_荸荠和梨子一起煮的好处