/**
  * Created by zxl on 2016/5/5.
  * 余弦相识度计算
  */

import java.sql.{Connection, DriverManager, ResultSet}
import java.text.SimpleDateFormat
import java.util.Date
;
import kafka.serializer.StringDecoder
import kafka.producer._
import org.apache.log4j.{Level, Logger}
import org.apache.spark._
import org.apache.spark.ml.feature.{HashingTF, IDF, Tokenizer}
import org.apache.spark.mllib.classification.NaiveBayes
import org.apache.spark.mllib.linalg.{Vector, Vectors,SparseVector =>SV}
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.sql.Row
import org.apache.spark.streaming._
import org.apache.spark.streaming.kafka._
import org.apache.spark.sql.Row;

object Cossimi {case class RawDataRecord(category:String,text:String)def main(args: Array[String]) {val sparkConf = new SparkConf().setAppName("cos")val sc = new SparkContext(sparkConf)val sqlContext = new org.apache.spark.sql.SQLContext(sc)import sqlContext.implicits._Logger.getRootLogger.setLevel(Level.ERROR)var srcRDD = sc.textFile("/home/spark/art.txt").map {x =>var data = x.split(",")RawDataRecord(data(0), data(1))}var trainingDF = srcRDD.toDF()trainingDF.take(2).foreach(println);
    var tokenizer = new Tokenizer().setInputCol("text").setOutputCol("words")var wordsData = tokenizer.transform(trainingDF)println("output1:")//===============hashing tf =============
    var hashingTF = new HashingTF().setNumFeatures(500000).setInputCol("words").setOutputCol("rawFeatures")
    var featurizedData = hashingTF.transform(wordsData)
    var idf = new IDF().setInputCol("rawFeatures").setOutputCol("features")var idfModel = idf.fit(featurizedData)
    val rescaledData = idfModel.transform(featurizedData)//val content_list = collection.mutable.ListBuffer[String]()
    val content_list = rescaledData.select($"category", $"features").collect().toListprintln("out put 2")
    val docSims = rescaledData.select($"category", $"features").map {case Row(id1, idf1) =>import breeze.linalg._val sv1 = idf1.asInstanceOf[SV]val bsv1 = new SparseVector[Double](sv1.indices, sv1.values, sv1.size)content_list.filter(_(0) != id1).map { case Row(id2, idf2) =>val sv2 = idf2.asInstanceOf[SV]val bsv2 = new SparseVector[Double](sv2.indices, sv2.values, sv2.size)val cosSim = bsv1.dot(bsv2).asInstanceOf[Double] / (norm(bsv1) * norm(bsv2))(id1, id2, cosSim)}}//docSims.take(5).foreach(println)
    println("insert mysql ......")docSims.foreach{cos_list =>cos_list.sortWith( _._3 >_._3).take(5).foreach{x =>val news_id = x._1val t_id = x._2val value = x._3insert_sim(news_id.toString,t_id.toString,value)}}sc.stop()}

spark 新闻相识度计算相关推荐

  1. 【推荐系统】新闻相似度计算

    文章目录 前言 一.新闻相似度计算思路 1.效果展示 2.实现思路 3.杰卡德相似系数 二.代码实现 1.分词 2.相似度计算 前言 通过结巴进行分词,通过杰卡德相似系数来计算新闻的相似程度,相似度大 ...

  2. 腾讯TDW千台Spark千亿节点对相似度计算

    本文将介绍腾讯TDW使用千台规模的Spark集群来对千亿量级的节点对进行相似度计算这个案例,通过实验对比,我们优化后的性能是MapReduce的6倍以上,是GraphX的2倍以上. 相似度计算在信息检 ...

  3. TDW千台Spark千亿节点对相似度计算

    相似度计算在信息检索.数据挖掘等领域有着广泛的应用,是目前推荐引擎中的重要组成部分.随着互联网用户数目和内容的爆炸性增长,对大规模数据进行相似度计算的需求变得日益强烈.在传统的MapReduce框架下 ...

  4. java算法(1)---余弦相似度计算字符串相似率

    功能需求:最近在做通过爬虫技术去爬取各大相关网站的新闻,储存到公司数据中.这里面就有一个技术点,就是如何保证你已爬取的新闻,再有相似的新闻 或者一样的新闻,那就不存储到数据库中.(因为有网站会去引用其 ...

  5. 【转】海量数据相似度计算之simhash和海明距离

    2019独角兽企业重金招聘Python工程师标准>>> 通过 采集系统 我们采集了大量文本数据,但是文本中有很多重复数据影响我们对于结果的分析.分析前我们需要对这些数据去除重复,如何 ...

  6. gensim在“中文查找(关键词)“与“txt文本“之间做相似度计算(返回最相似的文本)

    本文目的 搜索关键词,返回最相关的txt文本内容(模仿搜索引擎) 网上的例子都是一个list里面放入几句话,然后输入关键词去计算相似度. 无法在实际中应用,例如 http://blog.csdn.ne ...

  7. word2vec词向量训练及中文文本类似度计算

    本文是讲述怎样使用word2vec的基础教程.文章比較基础,希望对你有所帮助! 官网C语言下载地址:http://word2vec.googlecode.com/svn/trunk/ 官网Python ...

  8. LSF-SCNN:一种基于 CNN 的短文本表达模型及相似度计算的全新优化模型

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 本篇文章是我在读期间,对自然语言处理中的文本相似度问题研究取得的一点小成果.如果你对自然语言处理 (natural language proc ...

  9. Word2Vec与文章相似度--相似度计算

    2.7.4.2 相似度计算 目的:计算18号Python频道的文章之间相似度 步骤: 1.读取数据,进行类型处理(数组到Vector) 2.BRP进行FIT 读取数据,进行类型处理(数组到Vector ...

最新文章

  1. 项目: 双人反弹球游戏
  2. Smzzl with Greedy Snake 模拟-贪心-阅读理解
  3. Angular 动态控制 aside 标签显示和隐藏的一个例子
  4. iOS 动画绘制线条颜色渐变的折线图
  5. oracle sql 查询优化器,基于ORACLE成本优化器的SQL查询优化分析与应用
  6. Destoon源数据库配置文件在哪_数据库监控软件Lepus安装部署详解
  7. mysql5.7 undo_MySQL 5.7新特性之在線收縮undo表空間
  8. 为vs2008添加Mobile Web Forms模板
  9. Adobe软件中PS、PR、AE、AI软件如何安装【附软件下载】
  10. 创蓝253云通讯paas平台PHP短信接口demo分享
  11. 基于c语言的学生档案管理系统设计实现
  12. wpa_supplicant, wpa_cli用法
  13. Permission denied: user=dr.who, access=READ_EXECUTE, inode=/user/root:root:supergroup:drwx------
  14. Navicat中如何调试存储过程
  15. WVGA与HVGA、QVGA详细解答
  16. 牛顿(Newton)插值法的Matlab实现
  17. layabox 打印_layaair-doc/Chinese/LayaNative/LayaDcc_Tool at master · layabox/layaair-doc · GitHub...
  18. [NOIP2014]珠心算测验 T1
  19. scrap安装——Windows
  20. AndroidStudio运行报错 apk file does not exist on dis

热门文章

  1. Unity 使场景物体始终面向摄像机
  2. Vue环境搭建及第一个hello world
  3. 大二计算机专业可以进实验室吗,计算机科学论坛--关于北大CS报考、复试以及实验室综合答疑,08考生必看[原创]...
  4. crawler爬虫抓取数据
  5. 海思YOLOv3 wk模型在nnie设备上面推理
  6. 十三届双11,一部电商流量变迁史
  7. 长方体体积 java程序_Java技术解决 长方体体积 问题
  8. 以NLP技术为核心,容联云对话式AI平台入选《2022中国对话式AI采购指南》
  9. 计算机组成原理二:系统总线——知识点和知识结构图
  10. 微信小程序校验网络连接是否正常,无网络时给出提示