spark课程资源第14课 spark 特征抽取word2vec_第1页
spark课程资源第14课 spark 特征抽取word2vec_第2页
spark课程资源第14课 spark 特征抽取word2vec_第3页
spark课程资源第14课 spark 特征抽取word2vec_第4页
spark课程资源第14课 spark 特征抽取word2vec_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Spark 特征抽取 Word2Vec 【实验名称】 Spark 特征抽取 Word2Vec 【实验目的】 (1) 了解 Spark 特征抽取 Word2Vec 方法。 (2) 掌握构建一个机器学习工作流。 【实验要求】 实验结束后,学生能够自行构建一个 Word2Vec 机器学习模型,并通过分布式词向量训练数据,利用 Word2VecModel 把文档转变成特征向量。【实验环境】 1、1 台 Centos6.8 虚拟机 2、虚拟机上安装伪分布式或者分布式 hadoop3.0 3、集群下所有虚拟机上安装 spark 2.3.1 4、一台虚拟机上安装 scala 2.12.4 【实验步骤】 1.

2、 实验原理 Word2Vec 是一种著名的词嵌入(Word Embedding)方法,它可以计算每个单词在其给定语料库环境下的分布式词向量(Distributed Representation,亦直接被称为词向量)。词向量表示可以在一定程度上刻画每个单词的语义。 如果词的语义相近,它们的词向量在向量空间中也相互接近,这使得词语的向量化建模更加精确,可以改善现有方法并提高鲁棒性。词向量已被证明在许多自然语言处理问题,如:机器翻译,标注问题,实体识别等问题中具有非常重要的作用。 Word2vec 是一个 Estimator,它采用一系列代表文档的词语来训练word2vecmodel。该模型将每个词

3、语映射到一个固定大小的向量。word2vecmodel 使用文档中每个词语的平均数来将文档转换为向量,然后这个向量可以作为预测的特征,来计算文档相似度计算等等。 Word2Vec 具有两种模型,其一是 CBOW ,其思想是通过每个词的上下文窗口词词向量来预测中心词的词向量。其二是 Skip-gram,其思想是通过每个中心词来预测其上下文窗口词,并根据预测结果来修正中心词的词向量。两种方法示意图如下图所示: 在 ml 库中,Word2vec 的实现使用的是 skip-gram 模型。Skip-gram 的训练目标是学习词表征向量分布,其优化目标是在给定中心词的词向量的情况下,最大化以下似然函数:

4、 其中,是一系列词序列,这里代表中心词,而是上下文窗口中的词。这里,每一个上下文窗口词在给定中心词下的条件概率由类似 Softmax 函数(相当于 Sigmoid 函数的高维扩展版)的形式进行计算,如下式所示,其中表示: 和分别代表当前词的词向量以及当前上下文的词向量 因为 Skip-gram 模型使用的 softmax 计算较为复杂,所以,ml 与其他经典的Word2Vec 实现采用了相同的策略,使用 Huffman 树来进行 层次Softmax(Hierachical Softmax) 方法来进行优化,使得计算的复杂度从下降到2. 实验过程 2.1 进入Spark-shell 环境 roo

5、tmaster # /opt/spark-2.3.1-bin-hadoop2.7/bin/spark-shell 2.2 导入Word2Vec 所需要的包 1. import org.apache.spark.SparkConf2. import org.apache.spark.SparkContext3. import org.apache.spark.sql.SQLContext4. import org.apache.spark.ml.feature. Word2Vec2.3 创建一个 SQLContext 并导入 sqlContext.implicits._来实现RDD 到 Data

6、frame 的隐式转换 scala val sqlContext = new SQLContext(sc) scala import sqlContext.implicits._ 2.4 创建三个词语序列,每个代表一个文档 scala val documentDF = sqlContext.createDataFrame(Seq( | Hi I heard about Spark.split( ), | I wish Java could use case classes.split( ), | Logistic regression models are neat.split( ) | ).

7、map(Tuple1.apply).toDF(text) 2.5 新建一个 Word2Vec,设置相应的参数,这里设置特征向量的维度为 3 scala val word2Vec = new Word2Vec(). | setInputCol(text). | setOutputCol(result). | setVectorSize(3). | setMinCount(0) 2.6 读入训练数据,用 fit()方法生成一个 Word2VecModel val model = word2Vec.fit(documentDF) 2.7 利用Word2VecModel 把文档转变成特征向量。 scala val result = model.transform(do

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论