作者|GUEST
编译|VK
来源|Analytics Vidhya
概述
在AWS电子病历上建立John Snow实验室的Spark NLP,并使用该库对BBC文章进行简单的文本分类。
介绍
自然语言处理是全球数据科学团队的重要过程之一。随着数据的不断增长,大多数组织已经转移到大数据平台,如apachehadoop和AWS、Azure和GCP等云产品。
这些平台不仅能够处理大数据,使组织能够对非结构化数据(如文本分类)进行大规模分析。但在机器学习方面,大数据系统和机器学习工具之间仍然存在差距。
流行的机器学习python库,如scikit-learn和Gensim,经过高度优化,可以在单节点计算机上执行,而不是为分布式环境设计的。
Apache Spark MLlib是许多帮助弥合这一差距的工具之一,它提供了大多数机器学习模型,如线性回归、Logistic回归、支持向量机、随机森林、K-means、LDA等,以执行最常见的机器学习任务。
除了机器学习算法,Spark MLlib还提供了大量的特征变换器,如Tokenizer、StopWordRemover、n-grams和countvector、TF-IDF和Word2Vec等。
虽然这些转换器和提取器足以构建基本的NLP管道,但是要构建一个更全面和生产级的管道,我们需要更先进的技术,如词干分析、词法化、词性标记和命名实体识别。
Spark NLP提供了各种注释器来执行高级NLP任务。有关更多信息,请在网站上查看注释器列表及其用法
设置环境
让我们继续看看如何在AWS EMR上设置Spark NLP。
1.在启动EMR集群之前,我们需要创建一个引导操作。引导操作用于设置其他软件或自定义群集节点的配置。以下是可用于在EMR集群上设置Spark NLP的引导操作,
#!/bin/bashsudo yum install -y python36-devel python36-pip python36-setuptools python36-virtualenvsudo python36 -m pip install --upgrade pip
#
sudo python36 -m pip install pandas
#
sudo python36 -m pip install boto3
#
sudo python36 -m pip install re
#
sudo python36 -m pip install spark-nlp==2.4.5
创建shell脚本之后,将该脚本复制到AWS S3中的一个位置。你还可以根据需要安装其他python包。
2.我们可以使用AWS控制台、API或python中的boto3库来启动EMR集群。使用Python的好处是,无论何时需要实例化集群或将其添加到工作流中,都可以重用代码。
下面是实例化EMR集群的python代码。
import boto3region_name='region_name'def get_security_group_id(group_name, region_name):
ec2 = boto3.client('ec2', region_name=region_name)
response = ec2.describe_security_groups(GroupNames=[group_name])
return response['SecurityGroups'][0]['GroupId']emr = boto3.client('emr', region_name=region_name)cluster_response = emr.run_job_flow(
Name='cluster_name', # 更新值
ReleaseLabel='emr-5.27.0',
LogUri='s3_path_for_logs', # 更新值
Instances={
'InstanceGroups': [
{
'Name': "Master nodes",
'Market': 'ON_DEMAND',
'InstanceRole': 'MASTER'