用户热搜词相似度计算

公司实习需要做用户热搜词相似度计算以为用户搜索推荐提供相关信息,主要使用了两种算法实现词相似度计算:LDA和Word2Vector(参考spark algorithm)
    (目前Word2Vector算法效果更好,LDA对于词频较高的词会发生结果中出现次数过多的情况)

算法所需数据来源:
    1.商品信息。
    2.用户搜索历史记录。
    3.标准词表,用来补充搜索历史记录以提升结果精度。
    4.停止词表。


数据预处理:
    由于直接对商品分词效果非常差,因此使用搜索历史、标准词表和停止词表结合的方式将商品信息转为为词向量。
    对Deal_infos信息处理过程为:
        通过停止表过滤搜索历史表加标准词表中的词,其它过滤条件代码如下:

private val wordTable: Set[String] = if (searchLogPath.isEmpty) {
    Set.empty[String]
  } else {
    //根据停止表清洗搜索词表
    val stopWords = sc.textFile(stopWordPath).collect()
    //获取搜索关键词
    val searchLog = sc.textFile(searchLogPath).map { f =>
      f.split("\\|")(0)
    }
    //标准词
    val standardWord = sc.textFile(standardWordPath)
    val allWords = searchLog.++(standardWord).collect()
    val result = new ArrayBuffer[String]()
    for (line <- allWords) {
      if (!stopWords.contains(line)
        && line.length > 1
        && !line.matches("[0-9]+[.]*[0-9]*")
        && !line.endsWith("元")) {
        if (line.matches("[a-z|A-Z|0-9]+")) {
          if (line.length > 3) {
            result += line
          }
        } else {
          result += line
        }
      }
    }
    result.toSet
  }
    然后将过滤后的词表和商品信息做匹配,使用存在于商品信息中的词作为该商品的关键词。


算法上线后模块用户点击率大幅提升(与没有推荐算法相比提升3~4倍),效果良好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值