shell spark 导入包_用Spark-NLP建立文本分类模型

论坛 期权论坛     
选择匿名的用户   2021-6-2 17:50   312   0
<div style="font-size:16px;">
<div class="pgc-img">
  <img alt="1bd68764b67abbe36dc66702d1ea6abf.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-723c2442b83e8c5cf1b66727335a4918.png">
</div>
<h1 class="pgc-h-arrow-right">介绍</h1>
<p>自然语言处理是全球数据科学团队的重要过程之一。随着数据的不断增长,大多数组织已经转移到大数据平台,如apachehadoop和AWS、Azure和GCP等云产品。</p>
<p>这些平台不仅能够处理大数据,使组织能够对非结构化数据(如文本分类)进行大规模分析。但在机器学习方面,大数据系统和机器学习工具之间仍然存在差距。</p>
<p>流行的机器学习python库,如scikit-learn和Gensim,经过高度优化,可以在单节点计算机上执行,而不是为分布式环境设计的。</p>
<p>Apache Spark MLlib是许多帮助弥合这一差距的工具之一,它提供了大多数机器学习模型,如线性回归、Logistic回归、支持向量机、随机森林、K-means、LDA等,以执行最常见的机器学习任务。</p>
<p>除了机器学习算法,Spark MLlib还提供了大量的特征变换器,如Tokenizer、StopWordRemover、n-grams和countvector、TF-IDF和Word2Vec等。</p>
<p>虽然这些转换器和提取器足以构建基本的NLP管道,但是要构建一个更全面和生产级的管道,我们需要更先进的技术,如词干分析、词法化、词性标记和命名实体识别。</p>
<p>Spark NLP提供了各种注释器来执行高级NLP任务。有关更多信息,请在网站上查看注释器列表及其用法</p>
<p>https://nlp.johnsnowlabs.com/docs/en/annotators。</p>
<h1 class="pgc-h-arrow-right">设置环境</h1>
<p>让我们继续看看如何在AWS EMR上设置Spark NLP。</p>
<p>1.在启动EMR集群之前,我们需要创建一个引导操作。引导操作用于设置其他软件或自定义群集节点的配置。以下是可用于在EMR集群上设置Spark NLP的引导操作,</p>
<pre class="blockcode"><code>#!/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&#61;&#61;2.4.5</code></pre>
<p>创建shell脚本之后,将该脚本复制到AWS S3中的一个位置。你还可以根据需要安装其他python包。</p>
<p>2.我们可以使用AWS控制台、API或python中的boto3库来启动EMR集群。使用Python的好处是,无论何时需要实例化集群或将其添加到工作流中,都可以重用代码。</p>
<p>下面是实例化EMR集群的python代码。</p>
<pre class="blockcode"><code>import boto3region_name&#61;&#39;region_name&#39;def get_security_group_id(group_name, region_name):    ec2 &#61; boto3.client(&#39;ec2&#39;, region_name&#61;region_name)    response &#61; ec2.describe_security_groups(GroupNames&#61;[group_name])    return response[&#39;SecurityGroups&#39;][0][&#39;GroupId&#39;]emr &#61; boto3.client(&#39;emr&#39;, region_name&#61;region_name)cluster_response &#61; emr.run_job_flow(        Name&#61;&#39;cluster_name&#39;, # 更新值        ReleaseLabel&#61;&#39;emr-5.27.0&#39;,        LogUri&#61;&#39;s3_path_for_logs&#39;, # 更新值        Instances&#61;{            &#39;InstanceGroups&#39;: [                {                    &#39;Name&#39;: &#34;Master nodes&#34;,                    &#39;Market&#39;: &#39;ON_DEMAND&#39;,                    &#39;InstanceRole&#39;: &#39;MASTER&#39;,                    &#39;InstanceType&#39;: &#39;m5.2xlarge&#39;, # 根据要求进行变更                    &#39;InstanceCount&#39;: 1 #对于主节点高可用性,设置计数大于1                },                {                    &#39;Name&#39;: &#34;Slave nodes&#34;,                    &#39;Market&#39;: &#39;ON_DEMAND&#39;,                    &#39;InstanceRole&#39;: &#39;CORE&#39;,                    &#39;InstanceType&#39;: &#39;m5.2xlarge&#39;, # 根据要求进行变更                    &#39;InstanceCount&#39;: 2                }            ],            &#39;KeepJobFlowAliveWhenNoSteps&#39;: True,            &#39;Ec2KeyName&#39; : &#39;key_pair_name&#39;, # 更新值            &#39;EmrManagedMasterSecurityGroup&#39;: get_security_group_id(&#39;ElasticMapReduce-master&#39;, region_name&#61;region_name)            &#39;EmrManagedSlaveSecurityGroup&#39;: get_security_group_id(&#39;ElasticMapReduce-master&#39;, region_name&#61;region_name)        },        BootstrapActions&#61;[    {                    &#39;Name&#39;:&#39;install_dependencies&#39;,                    &#39;ScriptBootstrapAction&#39;:{                            &#39;Args&#39;:[],                            &#39;Path&#39;:&#39;path_to_bootstrapaction_on_s3&#39; # 更新值                            }                }],        Steps &#61; [],        VisibleToAllUsers&#61;True,        JobFlowRole&#61;&#39;EMR_EC2_DefaultRole&#39;,        ServiceRole&#61;&#39;EMR_DefaultRole&#39;,        Applications&#61;[            { &#39;Name&#39;: &#39;hadoop&#39; },            { &#39;Name&#39;: &#39;spark&#39; },            { &#39;Name&#39;: &#39;hive&#39; },            { &#39;Name&#39;: &#39;zeppelin&#39; },
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP