Word2Vec与文章相似度--相似度计算
2.7.4.2 相似度计算
- 目的:计算18号Python频道的文章之间相似度
- 步骤:
- 1、读取数据,进行类型处理(数组到Vector)
- 2、BRP进行FIT
读取数据,进行类型处理(数组到Vector)
from pyspark.ml.linalg import Vectors
# 选取部分数据做测试
article_vector = w2v.spark.sql("select article_id, articlevector from article_vector where channel_id=18 limit 10")
train = articlevector.select(['article_id', 'articleVector'])def _array_to_vector(row):return row.article_id, Vectors.dense(row.articleVector)train = train.rdd.map(_array_to_vector).toDF(['article_id', 'articleVector'])
BRP进行FIT
- class pyspark.ml.feature.BucketedRandomProjectionLSH(inputCol=None, outputCol=None, seed=None, numHashTables=1, bucketLength=None)
- inputCol=None:输入特征列
- outputCol=None:输出特征列
- numHashTables=1:哈希表数量,几个hash function对数据进行hash操作
- bucketLength=None:桶的数量,值越大相同数据进入到同一个桶的概率越高
- method:
- approxSimilarityJoin(df1, df2, 2.0, distCol='EuclideanDistance')
- 计算df1每个文章相似的df2数据集的数据
from pyspark.ml.feature import BucketedRandomProjectionLSHbrp = BucketedRandomProjectionLSH(inputCol='articleVector', outputCol='hashes', numHashTables=4.0, bucketLength=10.0)
model = brp.fit(train)
计算相似的文章以及相似度
similar = model.approxSimilarityJoin(test, train, 2.0, distCol='EuclideanDistance')similar.sort(['EuclideanDistance']).show()
2.7.4.3 问题3
对于计算出来的相似度,是要在推荐的时候使用。那么我们所知的是,HIVE只适合在离线分析时候使用,因为运行速度慢,所以只能将相似度存储到HBASE当中
- hbase
2.7.5 文章相似度存储
目的:将所有文章对应相似度文章及其相似度保存
步骤:
- 调用foreachPartition
- foreachPartition不同于map和mapPartition,主要用于离线分析之后的数据落地,如果想要返回新的一个数据DF,就使用map后者。
- 调用foreachPartition
我们需要建立一个HBase存储文章相似度的表
create 'article_similar', 'similar'# 存储格式如下:key:为article_id, 'similar:article_id', 结果为相似度
put 'article_similar', '1', 'similar:1', 0.2
put 'article_similar', '1', 'similar:2', 0.34
put 'article_similar', '1', 'similar:3', 0.267
put 'article_similar', '1', 'similar:4', 0.56
put 'article_similar', '1', 'similar:5', 0.7
put 'article_similar', '1', 'similar:6', 0.819
put 'article_similar', '1', 'similar:8', 0.28
定义保存HBASE函数,确保我们的happybase连接hbase启动成功,Thrift服务打开。hbase集群出现退出等问题常见原因,配置文件hadoop目录,地址等,还有
- ntpdate 0.cn.pool.ntp.org或者ntpdate ntp1.aliyun.com
- hbase-daemon.sh start thrift
def save_hbase(partition):import happybasepool = happybase.ConnectionPool(size=3, host='hadoop-master')with pool.connection() as conn:# 建议表的连接table = conn.table('article_similar')for row in partition:if row.datasetA.article_id == row.datasetB.article_id:passelse:table.put(str(row.datasetA.article_id).encode(),{"similar:{}".format(row.datasetB.article_id).encode(): b'%0.4f' % (row.EuclideanDistance)})# 手动关闭所有的连接conn.close()similar.foreachPartition(save_hbase)
Word2Vec与文章相似度--相似度计算相关推荐
- 利用TF_IDF算法计算两英文文章的文本相似度 C++实现
利用TF_IDF算法计算两英文文章的文本相似度 C++实现,仅用于应付课程小作业. 链接:利用TF_IDF算法计算两个英文文章的文本相似度(C++实现)-C++文档类资源-CSDN下载
- 高斯投影坐标计算例题_测量学高斯投影已知横坐标如何求在第几度带投影计算而得的?例如:...-y坐标的自然值怎么算-数学-莫囤料同学...
概述:本道作业题是莫囤料同学的课后练习,分享的知识点是y坐标的自然值怎么算,指导老师为甘老师,涉及到的知识点涵盖:测量学高斯投影已知横坐标如何求在第几度带投影计算而得的?例如:...-y坐标的自然值怎 ...
- (27)第四节课:从零起步在框架中编码实现损失度Loss的计算及其可视化
本节将从零起步在框架中编码实现损失度Loss的计算及其可视化.本节包含三部分的内容: (1) 关于Loss的思考,Loss是所有AI框架终身的魔咒. (2) 编码实现Loss实现并进行测试. ...
- 如何利用gretna软件计算脑网络全局属性(聚类系数,小世界属性,最短路径),局部属性指标(度,度分布,节点效率),如何理解网络稀疏度
如何利用gretna软件计算脑网络全局属性,局部属性指标 介绍 安装gretna软件 利用gretna软件计算脑网络全局属性(聚类系数,小世界属性,最短路径),局部属性指标(度,度分布,节点效率) 在 ...
- 3D点云处理:平面度|平行度(增加精度的平行度优化)|平面之间的夹角|点到平面的投影点
文章目录 1. 平面度 2. 平行度 3. 两平面之间的夹角 4. 点到平面的投影 5. 代码实现--平面度|平行度(增加精度的平行度优化)|平面之间的夹角|点到平面的投影点 1. 平面度 根据最新I ...
- NetworkX学习笔记03:度、平均度以及度分布
文章目录 度 平均度 度分布 度分布直方图 度 G = nx.Graph() # 添加节点 G.add_nodes_from([1,2,3,4]) # 添加边 G.add_edges_from([(1 ...
- 领英1度2度3度是什么意思,如何突破领英好友人脉限制
使用领英的人都肯定发现过一个现象,每个好友姓名右侧都会显示1度或2度或3度的标识,这些都分别是什么意思呢? 解释这个之前,首先科普一下领英的基本知识.领英是一个关系型职业社交平台.这里有个重要的特征- ...
- tan5度用计算机怎么算,tan5度(tan5度怎么求)
tan^2α-(1+根号3)tanα+根号3=0 (tana-1)(tana-根号3)=0 tana=1或tana=根号3 由于a是锐角,则a=45度或60度.请采纳回答 tan5°=0.087488 ...
- 城 市 名 经 度 纬 度
北京直辖市 E116°28′ N39°54′ 上海直辖市 E121°29′ N31°14′ 天津直辖市 E117°11′ N39°09′ 重庆直辖市 E106°32′ N29°32′ 香港特别行政区 ...
- [转帖]一直想整理下游戏中FOV的设置,结果发现网上已经有人整理过了转过来大家看~ 《FPS游戏的摄像机视场(FOV)为何选择65度75度90度?》...
转载自:http://user.qzone.qq.com/360255016/blog/1284102648 FPS游戏的摄像机视场(FOV)为何选择65度75度90度? (上篇) 今天与朋友交流&l ...
最新文章
- Ecshop文章列表页显示内容摘要
- 最优化——对偶问题的性质(弱对偶性,强对偶性),对偶问题形式的书写(对偶规则)
- 文件重定向函数freopen
- IOS之Masonry约束的使用
- python列表转化为元组、集合_如何在Python中将元组列表更改为集合?
- cad2017怎么改变选择方式_近视手术方式这么多,到底该怎么选择?
- Java:PULLXML解析XML(内附jar包链接)
- Ubuntu 12.04.2搭建nfs服务器
- Java对数组的操作(二)—集合与数组的切换
- python 爬虫基础——淘宝评论
- javassist修炼笔记
- VS2010 正式版 破解方法详解
- osr matlab,DPD-Matlab-FPGA 好不容易找到的马岳林的 数字预失真 DPD仿真代码 包括 simulink 和 实现 275万源代码下载- www.pudn.com...
- doors需求管理导入HTML,如何利用doors进行需求管理
- Sql Server 2008 通用语法总结
- 【军事学视频课程】《战争论》的基…
- 程序员找工作经历,一个人在上海工作的艰辛
- word里表格断页怎么办?(如何处理word里面表格断页问题)【知足且坚定,温柔且上进---两牛博客】
- 无线传输的数据速率大小,数据包大小,带宽,网络负载,吞吐量之间的关系
- 让数据起飞,MySql索引
热门文章
- 一步步解密微商城系统开发流程
- python将pdf转成excel_PDF转EXCEL,python的这个技能知道吗?
- TCP协议的三次握手大体流程
- 【math】Hiden Markov Model 隐马尔可夫模型了解
- 机器学习做二元分类问题(二)
- 公众号小额打款验证_已经注册完的公众号如何进行小额打款验证。?
- PDFBox实现图片转PDF --JAVA
- 059.迪杰斯特拉(Dijkstra)算法的原理以及解决最短路径问题
- 按键精灵通过句柄获取窗口坐标_按键精灵怎么获取同名窗口的句柄
- 至高荣誉:WPS制作荣誉证书(转)