基于Spark的案例:同义词识别
同义词识别
- 一、业务场景
- 二、数据集说明
- 三、操作步骤
- 阶段一、启动HDFS、Spark集群服务和zeppelin服务器
- 阶段二、准备案例中用到的数据集
- 阶段三、对数据集进行探索和分析
- 阶段四、自我练习
未经许可,禁止以任何形式转载,若要引用,请标注链接地址
全文共计2844字,阅读大概需要3分钟
一、业务场景
在机器学习中,有时会遇到同义词识别问题。现需要使用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】,执行以上代码,输出内容如下:
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】,执行以上代码,输出内容如下:
上面输出表格中的”feature”列就是生成的特征列。
7、找出与Spark相似的3个单词。在notebook单元格中,输入以下代码:
1. model.findSynonyms("Spark", 3).show
同时按下【Shift+Enter】,执行以上代码,输出内容如下:
由以上输出内容可以看出,与单词”Spark”最接近的单词有”engine”、”MapReduce”和”Hive”。
8、找出与Hive相似的3个单词。在notebook单元格中,输入以下代码:
1. model.findSynonyms("Hive", 3).show
同时按下【Shift+Enter】,执行以上代码,输出内容如下:
由以上输出内容可以看出,与单词”Hive”最接近的单词有”spark”、”fading”和”engine”。
阶段四、自我练习
请使用Spark ML库,在本案例项目数据集基础上,回答以下问题:
1、请找出与SQL最接近的5个同义词。
基于Spark的案例:同义词识别相关推荐
- 【计算机大数据毕设之基于spark+hadoop的大数据分析论文写作参考案例】
[计算机大数据毕设之基于spark+hadoop的大数据分析论文写作参考案例-哔哩哔哩] https://b23.tv/zKOtd3L 目 录 一 引言1 二 系统分析2 2.1 必要性和可行性 ...
- 项目案例:基于 YOLO 的铝型材表面缺陷识别
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 针对铝型材表面缺陷快速准确检测的需求,本文提出一种基于 YO ...
- 从原理到策略算法再到架构产品看推荐系统 | 附Spark实践案例
原文链接:mp.weixin.qq.com 作者 | HCY崇远 01 前言 本文源自于前阵子连续更新的推荐系统系列,前段时间给朋友整理一个关于推荐系统相关的知识教学体系,刚好自身业务中,预计明年初 ...
- 基于Spark的用户行为路径分析的产品化实践
1. 什么是用户行为路径 用户行为路径分析是互联网行业特有的一类数据分析方法,它主要根据每位用户在App或网站中的点击行为日志,分析用户在App或网站中各个模块的流转规律与特点,挖掘用户的访问或点击 ...
- 基于Spark的银行直销电话数据探索性数据分析
基于Spark的银行直销电话数据探索性数据分析 一.业务场景 二.数据集说明 三.操作步骤 阶段一.启动HDFS.Spark集群服务和zeppelin服务器 阶段二.准备案例中用到的数据集 阶段三.对 ...
- Apache Spark+PyTorch 案例实战
Apache Spark+PyTorch 案例实战 随着数据量和复杂性的不断增长,深度学习是提供大数据预测分析解决方案的理想方法,需要增加计算处理能力和更先进的图形处理器.通过深度学习,能够利用非结 ...
- 基于Spark的机器学习实践 (九) - 聚类算法
0 相关源码 1 k-平均算法(k-means clustering)概述 1.1 回顾无监督学习 ◆ 分类.回归都属于监督学习 ◆ 无监督学习是不需要用户去指定标签的 ◆ 而我们看到的分类.回归算法 ...
- 【风控系统】风控中心—京东基于Spark的风控系统架构实践和技术细节
转自:https://www.jianshu.com/p/9de45d2d16e6 感谢博主! 背景 互联网的迅速发展,为电子商务兴起提供了肥沃的土壤.2014年,中国电子商务市场交易规模达到13.4 ...
- 【采用】【风控系统】风控中心—京东基于Spark的风控系统架构实践和技术细节
转自:https://www.jianshu.com/p/9de45d2d16e6 感谢博主! 背景 互联网的迅速发展,为电子商务兴起提供了肥沃的土壤.2014年,中国电子商务市场交易规模达到13.4 ...
最新文章
- boost thread 判断是否正在运行_java高端基础:Thread源码解读
- 【数字信号处理】傅里叶变换性质 ( 傅里叶变换线性性质 | 傅里叶变换时移性质 )
- Html5元素及基本语法
- Chrome安装路径
- chmod 777命令_Linux shell命令总结
- 【人脸识别】基于matlab小波不变矩人脸识别【含Matlab源码 1355期】
- STM32烧写程序:ST-link驱动下载和安装
- 射极跟随器实验报告数据处理_射极跟随器实验报告.doc
- 企业邮箱部署SSL证书
- 面向对象设计的新视角
- wxpython收费吗_使用wxPython开发一个简单GUI应用
- 混合正弦余弦算法和Lévy飞行的麻雀算法
- java、简单练习题
- 电锤、冲击钻和空心钻的使用方法
- “沉浸式大型线下游戏”?看看这次腾讯TGC上如何玩很大!
- USACO Section 1.2 Broken Necklace
- 翻译翻译什么叫她妈的惊喜_妈的程序员说,翻译
- 希尔伯特23个数学问题及其解决情况
- 思科模拟器教程-OSPF动态路由端口认证
- jdbc:mysql:///是什么
热门文章
- idea 中git 将 dev 分支合并到 master 分支 或将master 分支 合并到dev 分支
- 阿里云视频点播(VOD)控制台上传慢解决方案
- 互联网dns架构实现智能dns实现
- sel2000服务器自动关闭,管家婆辉煌:轻松处理SQL 2000数据库自动停止
- 7.1 Python中文件的读取和写入
- 2020中国卓越管理公司颁奖晚宴成功举办,四家香港科大EMBA校友企业获奖
- 华为手机信息不弹屏了为什么_华为微信不弹出新消息提醒 怎么办
- 小米,苹果,百度,三星等公司的智能语音识别功能如何测试?
- C++语言99个常见编程错误 常见错误7:无视基础语言的精妙之处
- 【docker问题】Client.Timeout exceeded while awaiting headers