关于算法选择和实现的建议

时间:2017-03-02 14:17:52

标签: apache-spark machine-learning

美好的一天,

我正在研究下一个问题并且对机器学习(ML)知之甚少:

  1. 根据文章列表(A,文本格式)和搜索字符串(SQ),选择并将大多数相关文章(A)排序到搜索字符串(SQ)。
  2. 如果添加了新文章(A),则优化点#1 - 即搜索将记录新记录,下次将予以考虑。
  3. 我选择了spark作为ML计算的引擎,并找到了IDF模型(https://spark.apache.org/docs/2.0.0/ml-features.html#tf-idf)的例子。这是结果,结果是文章中术语的特征向量结束:

    (8,[0,1,4],[0.287 ...(8,[0,1,6],[0.287 ...(8,[1,3,4],[0.0,0] ...

    (抱歉截断结果)

    此时我卡住了。看起来我们可能需要为SQ计算相似的向量,并按最接近的顺序排序。不知道如何做到这一点。

    前进的道路是什么?你能否分享/指出实施的例子?

    提前谢谢你,

    的Vitaliy

1 个答案:

答案 0 :(得分:0)

这是适用于我的简短路线图(在非常小的数据集上验证):

  1. 为语料库构建TF-IDF,获取"功能"载体
  2. 为搜索字词构建IDF,获取"功能"向量
  3. 在语料库功能上训练kmeans(从步骤1开始),得到"文章ID"到群集映射。
  4. 预测搜索词群集(来自步骤2和3),获取"搜索词语"群集。
  5. 按需要的群集过滤文章(从步骤4开始)。
  6. 使用LSH过滤选定群集中的其他文章,进一步按群集中的要素与搜索词之间的距离进行排序。