同义词识别

  • 一、业务场景
  • 二、数据集说明
  • 三、操作步骤
    • 阶段一、启动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的案例:同义词识别相关推荐

  1. 【计算机大数据毕设之基于spark+hadoop的大数据分析论文写作参考案例】

    [计算机大数据毕设之基于spark+hadoop的大数据分析论文写作参考案例-哔哩哔哩] https://b23.tv/zKOtd3L 目  录 一 引言​1 二 系统分析​2 2.1 必要性和可行性 ...

  2. 项目案例:基于 YOLO 的铝型材表面缺陷识别

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 针对铝型材表面缺陷快速准确检测的需求,本文提出一种基于 YO ...

  3. 从原理到策略算法再到架构产品看推荐系统 | 附Spark实践案例

    原文链接:mp.weixin.qq.com  作者 | HCY崇远 01 前言 本文源自于前阵子连续更新的推荐系统系列,前段时间给朋友整理一个关于推荐系统相关的知识教学体系,刚好自身业务中,预计明年初 ...

  4. 基于Spark的用户行为路径分析的产品化实践

    1.  什么是用户行为路径 用户行为路径分析是互联网行业特有的一类数据分析方法,它主要根据每位用户在App或网站中的点击行为日志,分析用户在App或网站中各个模块的流转规律与特点,挖掘用户的访问或点击 ...

  5. 基于Spark的银行直销电话数据探索性数据分析

    基于Spark的银行直销电话数据探索性数据分析 一.业务场景 二.数据集说明 三.操作步骤 阶段一.启动HDFS.Spark集群服务和zeppelin服务器 阶段二.准备案例中用到的数据集 阶段三.对 ...

  6. Apache Spark+PyTorch 案例实战

    Apache Spark+PyTorch 案例实战  随着数据量和复杂性的不断增长,深度学习是提供大数据预测分析解决方案的理想方法,需要增加计算处理能力和更先进的图形处理器.通过深度学习,能够利用非结 ...

  7. 基于Spark的机器学习实践 (九) - 聚类算法

    0 相关源码 1 k-平均算法(k-means clustering)概述 1.1 回顾无监督学习 ◆ 分类.回归都属于监督学习 ◆ 无监督学习是不需要用户去指定标签的 ◆ 而我们看到的分类.回归算法 ...

  8. 【风控系统】风控中心—京东基于Spark的风控系统架构实践和技术细节

    转自:https://www.jianshu.com/p/9de45d2d16e6 感谢博主! 背景 互联网的迅速发展,为电子商务兴起提供了肥沃的土壤.2014年,中国电子商务市场交易规模达到13.4 ...

  9. 【采用】【风控系统】风控中心—京东基于Spark的风控系统架构实践和技术细节

    转自:https://www.jianshu.com/p/9de45d2d16e6 感谢博主! 背景 互联网的迅速发展,为电子商务兴起提供了肥沃的土壤.2014年,中国电子商务市场交易规模达到13.4 ...

最新文章

  1. boost thread 判断是否正在运行_java高端基础:Thread源码解读
  2. 【数字信号处理】傅里叶变换性质 ( 傅里叶变换线性性质 | 傅里叶变换时移性质 )
  3. Html5元素及基本语法
  4. Chrome安装路径
  5. chmod 777命令_Linux shell命令总结
  6. 【人脸识别】基于matlab小波不变矩人脸识别【含Matlab源码 1355期】
  7. STM32烧写程序:ST-link驱动下载和安装
  8. 射极跟随器实验报告数据处理_射极跟随器实验报告.doc
  9. 企业邮箱部署SSL证书
  10. 面向对象设计的新视角
  11. wxpython收费吗_使用wxPython开发一个简单GUI应用
  12. 混合正弦余弦算法和Lévy飞行的麻雀算法
  13. java、简单练习题
  14. 电锤、冲击钻和空心钻的使用方法
  15. “沉浸式大型线下游戏”?看看这次腾讯TGC上如何玩很大!
  16. USACO Section 1.2 Broken Necklace
  17. 翻译翻译什么叫她妈的惊喜_妈的程序员说,翻译
  18. 希尔伯特23个数学问题及其解决情况
  19. 思科模拟器教程-OSPF动态路由端口认证
  20. jdbc:mysql:///是什么

热门文章

  1. idea 中git 将 dev 分支合并到 master 分支 或将master 分支 合并到dev 分支
  2. 阿里云视频点播(VOD)控制台上传慢解决方案
  3. 互联网dns架构实现智能dns实现
  4. sel2000服务器自动关闭,管家婆辉煌:轻松处理SQL 2000数据库自动停止
  5. 7.1 Python中文件的读取和写入
  6. 2020中国卓越管理公司颁奖晚宴成功举办,四家香港科大EMBA校友企业获奖
  7. 华为手机信息不弹屏了为什么_华为微信不弹出新消息提醒 怎么办
  8. 小米,苹果,百度,三星等公司的智能语音识别功能如何测试?
  9. C++语言99个常见编程错误 常见错误7:无视基础语言的精妙之处
  10. 【docker问题】Client.Timeout exceeded while awaiting headers