离线轻量级大数据平台Spark之MLib机器学习库Word2Vec实例
Word2Vecword2vec能将文本中出现的词向量化,可以在捕捉语境信息的同时压缩数据规模。Word2Vec实际上是两种不同的方法:Continuous Bag of Words (CBOW) 和 Skip-gram。CBOW的目标是根据上下文来预测当前词语的概率。Skip-gram刚好相反:根据当前词语来预测上下文的概率。这两种方法都利用人工神经网络作为它们的分类算法。起初,每个单词都是一个随机 N 维向量。经过训练之后,该算法利用 CBOW 或者 Skip-gram 的方法获得了每个单词的最优向量。
实例代码如下:
package sk.mlib;import java.util.Arrays;
import java.util.List;import org.apache.spark.ml.feature.Word2Vec;
import org.apache.spark.ml.feature.Word2VecModel;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.types.*;public class Word2VecDemo {public static void main(String[] args) {SparkSession spark = SparkSession.builder().appName("Word2VecDemo").getOrCreate();// Input data: Each row is a bag of words from a sentence or document.List<Row> data = Arrays.asList(RowFactory.create(Arrays.asList("Hi I heard about Spark".split(" "))),RowFactory.create(Arrays.asList("I wish Java could use case classes".split(" "))),RowFactory.create(Arrays.asList("Logistic regression models are neat".split(" "))));StructType schema = new StructType(new StructField[]{new StructField("text", new ArrayType(DataTypes.StringType, true), false, Metadata.empty())});Dataset<Row> documentDF = spark.createDataFrame(data, schema);// Learn a mapping from words to Vectors.Word2Vec word2Vec = new Word2Vec().setInputCol("text").setOutputCol("result").setVectorSize(3).setMinCount(0);Word2VecModel model = word2Vec.fit(documentDF);Dataset<Row> result = model.transform(documentDF);for (Row r : result.select("text","result").takeAsList(3)) {System.out.println(r);}spark.stop();}
}
/*执行结果:[WrappedArray(Hi, I, heard, about, Spark),[-0.028139343485236168,0.04554025698453188,-0.013317196490243079]]
[WrappedArray(I, wish, Java, could, use, case, classes),[0.06872416580361979,-0.02604914902310286,0.02165239889706884]]
[WrappedArray(Logistic, regression, models, are, neat),[0.023467857390642166,0.027799883112311366,0.0331136979162693]]*/
离线轻量级大数据平台Spark之MLib机器学习库Word2Vec实例相关推荐
- 离线轻量级大数据平台Spark之MLib机器学习库TF-IDF实例
TF-IDF(termfrequency–inverse document frequency)是TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度.字词的 ...
- 离线轻量级大数据平台Spark之MLib机器学习库线性回归实例
1.线性回归 线性回归是利用称为线性回归方程的函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析方法,只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归,在实际情况中大多数都 ...
- 离线轻量级大数据平台Spark之MLib机器学习库SVM实例
支持向量机,因其英文名为support vector machine,故一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终 ...
- 离线轻量级大数据平台Spark之MLib机器学习库概念学习
Mlib机器学习库 1.1机器学习概念 机器学习有很多定义,倾向于下面这个定义.机器学习是对能通过经验自动改进的计算机算法的研究.机器学习依赖数据经验并评估和优化算法所运行出的模型.机器学习算法尝试根 ...
- 离线轻量级大数据平台Spark之MLib机器学习库朴素贝叶斯实例
1.朴素贝叶斯介绍 表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率,公式为: 贝叶斯定理: 从已知P(A|B)获得P(B|A)值. 假设A和B代表两类互相影响的事件,如 ...
- 离线轻量级大数据平台Spark之MLib机器学习库聚类算法KMeans实例
1.KMeans算法 所谓聚类问题,就是给定一个元素集合D,其中每个元素具有n个可观察属性,使用某种算法将D划分成k个子集,要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高.其 ...
- 离线轻量级大数据平台Spark之MLib机器学习协同过滤ALS实例
1.协同过滤 协同过滤(Collaborative Filtering,简称CF,WIKI上的定义是:简单来说是利用某个兴趣相投.拥有共同经验之群体的喜好来推荐感兴趣的资讯给使用者,个人透过合作的机制 ...
- 离线轻量级大数据平台Spark之单机部署及Java开发
1.Spark平台基本介绍 Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and PeopleLab) 开发,可用来构建大型的.低延迟的数据分析应用程 ...
- 离线轻量级大数据平台Spark之JavaRDD关联join操作
对两个RDD进行关联操作,如: 1)文件post_data.txt包含:post_id\title\content 2)文件train.txt包含:dev_id\post_id\praise\time ...
最新文章
- 关于软件测试中那点小事中的大道理
- 用XCA(X Certificate and key management)可视化程序管理SSL 证书(3)--创建自己定义的凭证管理中心(Certificate Authority)...
- 神经网络中的「注意力」是什么?怎么用?
- Sql注入式攻击和一些防范技巧
- 贷款,别相信这些人!
- Id都是“とつくとき”这样的怎么爬,在线等,急
- 第15课 比尔庄园 《小学生C++趣味编程》
- Flutter基础(四)开发Flutter应用前需要掌握的Basic Widget
- Springboot2.x 集成 jedis和spring-boot-starter-data-redis的性能测试比较(Jedis完胜:附带源码)
- 【转】超现实的经典语录
- Android 控件 -------- AutoCompleteTextView 动态匹配内容,例如 百度搜索提示下拉列表功能...
- 《编译系统透视:图解编译原理》
- 解决 OCS: No schema for XXX at xx index, context <Quirks> 警告
- android dlna 小米电视盒子,小米电视DLNA投屏到电视步骤详解
- 三星真机云测平台可能是最好的云测平台,因为他免费。
- 51单片机12864液晶显示模块控制
- thingjs这个3D js库怎么样?
- 1.42 财务测量指标——静态评价法(投资回报率+投资回收期)
- 服务器安全-避免被攻击者查到服务器源 IP与对攻击者ID信息收集
- 电脑从硬盘启动计算机,BIOS怎么设置成从硬盘启动?开启计算机或重新启动
热门文章
- springboot 按钮权限验证_springboot学习之权限系统登录验证SpringSecurity
- IIS6下配置fastcgi的php的教程
- SSM 返回静态页面HTML Controller 被递归调用引起的StackOverflowError
- 使用Mysql数据库完成增删改查综合案例(JSP页面)
- C# 调用C++ dll
- bzoj2746: [HEOI2012]旅行问题
- 第八章 熟练dom的几个常用方法
- [数据库基础]——索引详解
- 在Eclipse中写第一个hibernate小例子
- (译)cocos2d-x跨androidios平台开发入门教程