基于Spark的案例:同义词识别

简介: 基于Spark的案例:同义词识别

一、业务场景

在机器学习中,有时会遇到同义词识别问题。现需要使用Spark ML库来解决同义词识别问题。

二、数据集说明

本案例所使用的数据集为纯文本文件,说明如下:

  数据集路径:/data/dataset/ml/synonymous.txt

三、操作步骤

阶段一、启动HDFS、Spark集群服务和zeppelin服务器

1、启动HDFS集群

  在Linux终端窗口下,输入以下命令,启动HDFS集群:

1.  $ start-dfs.sh

2、启动Spark集群

  在Linux终端窗口下,输入以下命令,启动Spark集群:

1.  $ cd /opt/spark
2.  $ ./sbin/start-all.sh

3、启动zeppelin服务器

  在Linux终端窗口下,输入以下命令,启动zeppelin服务器:

1.  $ zeppelin-daemon.sh start

4、验证以上进程是否已启动

  在Linux终端窗口下,输入以下命令,查看启动的服务进程:

1.  $ jps

如果显示以下6个进程,则说明各项服务启动正常,可以继续下一阶段。

1.  2288 NameNode
2.  2402 DataNode
3.  2603 SecondaryNameNode
4.  2769 Master
5.  2891 Worker
6.  2984 ZeppelinServer

阶段二、准备案例中用到的数据集

1、将本案例要用到的数据集上传到HDFS文件系统的/data/dataset/目录下。在Linux终端窗口下,输入以下命令:

1.  $ hdfs dfs -mkdir -p /data/dataset
2.  $ hdfs dfs -put /data/dataset/ml/synonymous.txt /data/dataset/

2、在Linux终端窗口下,输入以下命令,查看HDFS上是否已经上传了该数据集:

1.  $ hdfs dfs -ls /data/dataset/

这时应该看到数据集文件synonymous.txt已经上传到了HDFS的/data/dataset/目录下。

阶段三、对数据集进行探索和分析

1、新建一个zeppelin notebook文件,并命名为”tyc_project”。

  2、加载数据集。在notebook单元格中,输入以下代码:

1.  val filePath = "hdfs://localhost:9000/data/dataset/synonymous.txt"
2.  val synonymousRDD = sc.textFile(filePath)
3.  synonymousRDD.collect.foreach(println)

同时按下【Shift+Enter】键,执行以上代码,输出内容如下:

Unified data analytics engine Spark
People use Hive for data analytics
MapReduce is not fading away
mysql sqlserver and oracle all is sql

3、将数据集从RDD转换为DataFrame。在notebook单元格中,输入以下代码:

1.  // 从RDD转换为DataFrame
2.  val documentRDD = synonymousRDD.map(line => line.split(" "))
3.  val documentDF = documentRDD.toDF("word")
4.       
5.  // 显示
6.  documentDF.show(false)

同时按下【Shift+Enter】,执行以上代码,输出内容如下:

f3c70002c3d9463cbc69ac744f15f090.png

4、需要使用Word2Vec estimator来计算单词的嵌入和发现类似的单词(识别同义词)。在notebook单元格中,输入以下代码,构造一个Word2Vec,并指定输入列和生成的特征列:

1.  // 使用Word2Vec estimator来计算单词的嵌入和发现类似的单词(识别同义词)
2.  import org.apache.spark.ml.feature.Word2Vec
3.       
4.  val word2Vec = new Word2Vec().setInputCol("word").
5.                                setOutputCol("feature").
6.                                setVectorSize(3).
7.                                setMinCount(0)

同时按下【Shift+Enter】,执行以上代码,输出内容如下:

word2Vec: org.apache.spark.ml.feature.Word2Vec = w2v_1aa5649a64e5

5、使用上一步得到的estimator来拟合数据,得到一个模型对象。在notebook单元格中,输入以下代码:

1.  val model = word2Vec.fit(documentDF)

同时按下【Shift+Enter】,执行以上代码,输出内容如下:

model: org.apache.spark.ml.feature.Word2VecModel = w2v_1aa5649a64e5

由以上输出内容可以看出,在拟合数据后,得到一个Word2VecModel的模型对象。

6、使用得到的模型对DataFrame documentDF进行转换,得到特征列。在notebook单元格中,输入以下代码:

1.  val result = model.transform(documentDF)
2.  result.show(false)

同时按下【Shift+Enter】,执行以上代码,输出内容如下:


db987f675e6c44ca99f167e82d59ad1b.png

上面输出表格中的”feature”列就是生成的特征列。


7、找出与Spark相似的3个单词。在notebook单元格中,输入以下代码:


1.  model.findSynonyms("Spark", 3).show

同时按下【Shift+Enter】,执行以上代码,输出内容如下:

b84ece603b4f40eeb891f9644bc2b583.png

由以上输出内容可以看出,与单词”Spark”最接近的单词有”engine”、”MapReduce”和”Hive”。

8、找出与Hive相似的3个单词。在notebook单元格中,输入以下代码:

1.  model.findSynonyms("Hive", 3).show

同时按下【Shift+Enter】,执行以上代码,输出内容如下:

38a0723da3164661b142af9f05033e3a.png

由以上输出内容可以看出,与单词”Hive”最接近的单词有”spark”、”fading”和”engine”。

阶段四、自我练习

请使用Spark ML库,在本案例项目数据集基础上,回答以下问题:

1、请找出与SQL最接近的5个同义词。

相关文章
|
6月前
|
SQL 分布式计算 数据可视化
Spark SQL案例【电商购买数据分析】
Spark SQL案例【电商购买数据分析】
|
SQL 分布式计算 资源调度
线上 hive on spark 作业执行超时问题排查案例分享
线上 hive on spark 作业执行超时问题排查案例分享
|
1月前
|
分布式计算 大数据 Java
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
50 5
|
1月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
50 3
|
1月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
63 0
|
1月前
|
分布式计算 大数据 Spark
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
40 1
|
1月前
|
设计模式 数据采集 分布式计算
企业spark案例 —出租车轨迹分析
企业spark案例 —出租车轨迹分析
78 0
|
1月前
|
消息中间件 分布式计算 Kafka
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
56 0
|
1月前
|
SQL 分布式计算 大数据
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(一)
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(一)
31 0
|
1月前
|
存储 分布式计算 大数据
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(二)
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(二)
46 0

热门文章

最新文章

下一篇
无影云桌面