基于 Amazon Machine Learning Bot 的 Named-entity Recognition 快速解决方案
Amazon Machine Learning Bot(以下称为 Amazon ML bot)为用户提供了一种快速的开箱即用的解决方案,其底层基于 Amazon SageMaker 将机器学习模型的定制及部署实现了高效的自动化。并且,Amazon ML bot 提供了可视化、易操作的 Web User Interface 界面。用户可以上传具体应用场景的图片或文字数据,快速完成从数据标注,模型训练到模型效果评估的全部流程。
本文重点介绍了如何运用 Amazon ML 的命名实体识别(name entity recognition)来快速构建自然语言处理 Amazon API 功能。具体内容如下:
Amazon Machine Learning Bot 框架介绍
Amazon ML bot 是一个一键式打包封装的机器学习解决方案,它提供了多种不同类型的原始机器学习模型,并且可以根据需求通过互相交互来评价模型。在一键式应用的基础上,Amazon ML bot 也确保了数据的安全性,基于亚马逊云科技云技术的加密和授权,用户可以把数据储存在亚马逊云科技的云端并直接导入到 Amazon ML bot 的模型当中。Amazon ML bot 不仅拥有用户友好的人性化交互界面,也为用户提供了实时更新的最新机器学习模型。
本文中我们采用了 Amazon ML bot 下的命名实体识别模型(NER)。命名实体识别是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。命名实体识别是信息提取、问答系统、句法分析、机器翻译等应用领域的重要基础工具,作为结构化信息提取的重要步骤,该模型可以在后续阶段通过对不同文本内容的分析然后被应用于快速消费品,金融和医疗等领域中。
数据集说明
为了在 Amazon ML bot 上展示我们的模型,我们采用了从社交媒体上采集来的包含命名实体的公开数据集作为我们的训练集。该数据集中的文本采用 UTF-8 进行编码,每行为一个段落标注,共包括 2000 段落。所有的实体以如下的格式进行标注:{{实体类型:实体文本}}
标注的实体类别包括以下六种:time: 时间 location: 地点 person_name: 人名 org_name: 组织名 company_name: 公司名 product_name: 产品名。
例:此次{{location:中国}}个展,{{person_name:苏珊菲利普斯}}将与她 80 多岁高龄的父亲一起合作,哼唱一首古老的{{location:威尔士}}民歌{{product_name:《白蜡林》}}。届时在{{location:画廊大厅}}中将安放 6 个音箱进行播放,艺术家还特意回到家乡{{location:格拉斯哥}},同父亲一起在{{org_name:中国音乐学院}}里为作品录制了具有{{location:中国}}元素的音乐片段。
Amazon Machine Learning Bot 的 Named-entity Recognition (NER)使用步骤
由于我们大部分的数据都存储在亚马逊云科技海外区的 Amazon Simple Storage Service(S3)中,本文将着重介绍通过海外区亚马逊云科技来部署 Amazon ML bot,详细的步骤可以参考 Amazon ML bot 的 documentations。首先,我们需要在 Amazon CloudFormation 上创建一个新的堆栈,并导入预先设置好 Amazon ML bot 的模板。
Amazon ML bot 的 Documentations
http://ml-bot.s3-website.cn-north-1.amazonaws.com.cn/deploy/
Amazon CloudFormation
随后在 Amazon Cloud9 控制台里面,为刚刚创建好的堆栈新建一个环境,在新建过程始终保持使用默认配置并在完成后为该环境赋予一个具有 administrator access 的 Amazon identity and access management(IAM) role,有关 Amazon Web Service 的详细信息可以参考相关的 Amazon documentations(https://aws.amazon.com/iam/)。
Cloud9 控制台
https://console.aws.amazon.com/cloud9/home
最后,在亚马逊云科技的 Cognito 用户池中找到与之前创建的堆栈相同 UserPoolId 的用户池,在该用户池的配置页面中选择“用户和组”并点击“创建用户”,输入用户名和密码等必要信息之后进行邮件确认。从 Amazon Cloudformation 下找到创建好的堆栈并在 Outputs 标签下找到 CloudFrontDomain,点击进入该页面并使用刚刚设置好的用户名和密码登录并开始使用 Amazon ML bot。
Cognito
https://console.aws.amazon.com/cognito/users/
在 Amazon ML bot 的主页面下选择“Get Started”并在下一个页面中选中“Named Entity Recognition”模型,上传训练用的数据集所在的 Amazon S3 地址。
点击“Start Model Training”并等待模型训练完成,在训练过程中可以通过点击“View logs in CloudWatch”来查看模型的训练情况及 accuracy 的评分(如下图),Amazon ML bot 的 NER 模型在使用我们提供的 training data 下,accuracy 基本稳定在 0.9 以上并在训练过程中逐渐向 1.0 接近,说明该模型相对比较稳定。
训练完成的模型可以使用任意的中文文本字段来进行测试,具体结果如下图。经过训练的 Amazon ML bot 的 NER 模型成功学习了并预测和提取出了时间和组织名相关的命名实体。该条测试用的文本来自于当天的热门新闻。
Amazon API 部署及测试
在 Amazon ML bot 的 NER 模型结果页面的右下角的“Deploy to SageMaker Endpoint”选项可以一键把已经训练好的 NER 模型部署到 Amazon SageMaker Endpoint 上作为可调用的 Amazon API 使用,具体的调用方法和结果如下图所示。对比直接在 Amazon ML bot 网站使用 NER 模型,将模型打包成 Amazon API 使得模型具有更多的灵活性,可以将封装好的模型作为命名实体预测的环节来嵌入到不同的模型流水线中。这一套逻辑和流程不仅操作简单,代码实现也较容易,更可以被应用于多样化的业务场景中,具有一定的普适性。
结论
本文介绍了如何运用 Amazon ML bot 来快速建立 NER 模型。用户可以把数据安全的储存在 Amazon S3 上并导入到该模型中来实现机器学习模型的训练。训练完成的模型在预测准确度上表现良好。模型的调用不仅可以在简易操作的 Amazon ML bot 页面上直接实现,也可以部署到 Amazon Sagemaker Endpoint 上作为一个独立的 Amazon API 来调用。我们认为该套方案在具备易操作和易实现的前提下,更具有非常广泛的适用性,能够很好的解决一些企业需要机器学习解决方案同时又缺乏相关领域技术经验与积累的商业痛点。
本篇作者
Andy Li
现任 PwC U.S. Acceleration Center Shanghai Office 的 Director
是一位专注于数字化、新兴技术(例如:区块链,增强现实/虚拟现实,人工智能)和基于机器学习以及深度学习的高级分析的创新型领袖。行业经验包括金融服务,医疗和高科技领域。同时也是云技术的积极倡导者,热衷于为客户提供领先的服务交付。
Sean Li
现任 PwC U.S. Acceleration Center Shanghai Office 的 Senior Data Scientist 大数据开发工程师
在解决复杂大数据问题方面的经验丰富同时热衷于研究学习最前端的人工智能技术。
评论