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后者。

我们需要建立一个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与文章相似度--相似度计算相关推荐

  1. 利用TF_IDF算法计算两英文文章的文本相似度 C++实现

    利用TF_IDF算法计算两英文文章的文本相似度 C++实现,仅用于应付课程小作业. 链接:利用TF_IDF算法计算两个英文文章的文本相似度(C++实现)-C++文档类资源-CSDN下载

  2. 高斯投影坐标计算例题_测量学高斯投影已知横坐标如何求在第几度带投影计算而得的?例如:...-y坐标的自然值怎么算-数学-莫囤料同学...

    概述:本道作业题是莫囤料同学的课后练习,分享的知识点是y坐标的自然值怎么算,指导老师为甘老师,涉及到的知识点涵盖:测量学高斯投影已知横坐标如何求在第几度带投影计算而得的?例如:...-y坐标的自然值怎 ...

  3. (27)第四节课:从零起步在框架中编码实现损失度Loss的计算及其可视化

    本节将从零起步在框架中编码实现损失度Loss的计算及其可视化.本节包含三部分的内容: (1)   关于Loss的思考,Loss是所有AI框架终身的魔咒. (2)   编码实现Loss实现并进行测试. ...

  4. 如何利用gretna软件计算脑网络全局属性(聚类系数,小世界属性,最短路径),局部属性指标(度,度分布,节点效率),如何理解网络稀疏度

    如何利用gretna软件计算脑网络全局属性,局部属性指标 介绍 安装gretna软件 利用gretna软件计算脑网络全局属性(聚类系数,小世界属性,最短路径),局部属性指标(度,度分布,节点效率) 在 ...

  5. 3D点云处理:平面度|平行度(增加精度的平行度优化)|平面之间的夹角|点到平面的投影点

    文章目录 1. 平面度 2. 平行度 3. 两平面之间的夹角 4. 点到平面的投影 5. 代码实现--平面度|平行度(增加精度的平行度优化)|平面之间的夹角|点到平面的投影点 1. 平面度 根据最新I ...

  6. NetworkX学习笔记03:度、平均度以及度分布

    文章目录 度 平均度 度分布 度分布直方图 度 G = nx.Graph() # 添加节点 G.add_nodes_from([1,2,3,4]) # 添加边 G.add_edges_from([(1 ...

  7. 领英1度2度3度是什么意思,如何突破领英好友人脉限制

    使用领英的人都肯定发现过一个现象,每个好友姓名右侧都会显示1度或2度或3度的标识,这些都分别是什么意思呢? 解释这个之前,首先科普一下领英的基本知识.领英是一个关系型职业社交平台.这里有个重要的特征- ...

  8. 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 ...

  9. 城 市 名 经 度 纬 度

    北京直辖市 E116°28′ N39°54′ 上海直辖市 E121°29′ N31°14′ 天津直辖市 E117°11′ N39°09′ 重庆直辖市 E106°32′ N29°32′ 香港特别行政区 ...

  10. [转帖]一直想整理下游戏中FOV的设置,结果发现网上已经有人整理过了转过来大家看~ 《FPS游戏的摄像机视场(FOV)为何选择65度75度90度?》...

    转载自:http://user.qzone.qq.com/360255016/blog/1284102648 FPS游戏的摄像机视场(FOV)为何选择65度75度90度? (上篇) 今天与朋友交流&l ...

最新文章

  1. Ecshop文章列表页显示内容摘要
  2. 最优化——对偶问题的性质(弱对偶性,强对偶性),对偶问题形式的书写(对偶规则)
  3. 文件重定向函数freopen
  4. IOS之Masonry约束的使用
  5. python列表转化为元组、集合_如何在Python中将元组列表更改为集合?
  6. cad2017怎么改变选择方式_近视手术方式这么多,到底该怎么选择?
  7. Java:PULLXML解析XML(内附jar包链接)
  8. Ubuntu 12.04.2搭建nfs服务器
  9. Java对数组的操作(二)—集合与数组的切换
  10. python 爬虫基础——淘宝评论
  11. javassist修炼笔记
  12. VS2010 正式版 破解方法详解
  13. osr matlab,DPD-Matlab-FPGA 好不容易找到的马岳林的 数字预失真 DPD仿真代码 包括 simulink 和 实现 275万源代码下载- www.pudn.com...
  14. doors需求管理导入HTML,如何利用doors进行需求管理
  15. Sql Server 2008 通用语法总结
  16. 【军事学视频课程】《战争论》的基…
  17. 程序员找工作经历,一个人在上海工作的艰辛
  18. word里表格断页怎么办?(如何处理word里面表格断页问题)【知足且坚定,温柔且上进---两牛博客】
  19. 无线传输的数据速率大小,数据包大小,带宽,网络负载,吞吐量之间的关系
  20. 让数据起飞,MySql索引

热门文章

  1. 一步步解密微商城系统开发流程
  2. python将pdf转成excel_PDF转EXCEL,python的这个技能知道吗?
  3. TCP协议的三次握手大体流程
  4. 【math】Hiden Markov Model 隐马尔可夫模型了解
  5. 机器学习做二元分类问题(二)
  6. 公众号小额打款验证_已经注册完的公众号如何进行小额打款验证。?
  7. PDFBox实现图片转PDF --JAVA
  8. 059.迪杰斯特拉(Dijkstra)算法的原理以及解决最短路径问题
  9. 按键精灵通过句柄获取窗口坐标_按键精灵怎么获取同名窗口的句柄
  10. 至高荣誉:WPS制作荣誉证书(转)