乐趣区

关于ml:自然语言处理实战巧用-Amazon-Comprehend-分析社交媒体数据

摘要

自然语言解决 (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/c…
  • Amazon 文档:
    https://docs.aws.amazon.com/c…

端到端的流程如下:

  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/C…


图 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/c…

下图是应用了带正文的数据集所生成的 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…

【2】
https://en.wikipedia.org/wiki…

【3】
https://en.wikipedia.org/wiki…

【4】
https://github.com/juand-r/en…

datasets/tree/master/data/WNUT17

【5】
http://noisy-text.github.io/2…

【6】
https://www.aclweb.org/anthol…

本篇作者


李钧
普华永道寰球信息技术优创核心总监,解决方案架构师
他专一于数字化、新兴技术(如区块链、AR/VR、人工智能等),以及基于机器学习和深度学习的高级剖析技术。他的行业教训横跨金融保险、医疗制药和高科技畛域。他不仅是一位业务创新型领导者,也是云技术的热切推动者,并渴望以专一服务的理念来帮忙客户胜利云转型。

退出移动版