数据挖掘大家有思路吗:几十万个微博用户,几百万条微博,然后推荐相似用户?

2016-07-04 15:13:44 +08:00
 lijinma

数据挖掘新手,有以下需求:

几十万个微博用户,几百万条微博
需要给定一个用户,然后推荐相似的用户。

什么是相似?

有共同爱好

不知道如果给你这样一个需求,会怎么做?

我现在的做法特别 Low:

使用 http://bosonnlp.com/ 分词和词云来提取一个人所有微博的关键字,然后选取低频的词汇,然后通过这些词汇去找人。

但出现一些情况:

  1. 低频词很难找到匹配的人(但是如果可以找到的话,效果很好)
  2. 高频词匹配并不准确。

哎,大家有什么好的思路吗?数据挖掘新手,希望大家赐教。

5034 次点击
所在节点    程序员
29 条回复
menc
2016-07-04 17:51:47 +08:00
就你在帖子中说的词频高低,频率不能离开逆文档频率,搜索 tf idf 查看文本赋权,然而用现成的 word embedding 结果应该会更好。
word embedding 的结果可以找现成的 model 。
lijinma
2016-07-04 18:01:45 +08:00
@menc 太感谢你了,确实是新手,希望不要跑偏了。

我会按照你的建议来尝试,多谢。
mayokaze
2016-07-04 18:15:19 +08:00
@menc 嗯 LDA 确实不太适合短文本,实际上我们自己的短文本聚类都是用 w2v+sparse encoding 做的
airqj
2016-07-04 18:19:05 +08:00
现在都是用协同过滤吧
9hills
2016-07-04 20:07:16 +08:00
根据用户发布的微博去做用户推荐本身就是有问题的,因为很多人。。。基本不发微博,只看不发

根据关注关系是正道
qdk0901
2016-07-05 07:34:28 +08:00
把用户以及用户发出的信息、用户关注的人、关注用户的人,这些信息组装成一条 sentence
每个用户一条 sentence
然后扫描所有用户,得到的所有的 sentence 作为 corpus 一起扔给 word2vec 处理,得到一堆向量词
求用户的相似度,就通过计算用户对应的向量词之间的夹角(也就是归一化的欧几里德距离)得到
求与用户最相近的一组用户,也就是求离用户对应的向量词最近的一组向量词所对应的用户

我之前爬了一下 github ,收集了一部分数据,按照这个方法,得到一堆向量词后,用 tnse 进行可视化
秀一下效果,加载会有点慢,这里只挂 5000 个点的 tsne 数据
http://transing.xyz/codeatlas.html
lijinma
2016-07-05 09:55:15 +08:00
@airqj 对,应该很多都是用 协同过滤


@9hills 关注关系我会考虑,多谢,嘿嘿。


@qdk0901 谢谢你,你这个正好是我关注关系上的一个解决方案。
lijinma
2016-07-05 09:56:43 +08:00
@qdk0901 能解释下 tsne 的数据情况吗。。

多谢。
qdk0901
2016-07-05 21:43:19 +08:00
@lijinma tsne 的数据情况大概指哪方面。

corpus 大概是 1.2 亿词量,因为 github 上活跃用户和仓库的比例不高,所以我过滤剩下 140 万向量词
tsne 的计算比生成词向量花的时间多很多,所以实际只取 50 万做可视化,在我笔记本(i7 3610qm)上大概要算 6 个小时(显卡内存太小,用 cuda 加速做 tsne 运算老是爆内存,所以只能用 cpu 算),如果换成 gtx1080 ,大概会快 100 倍吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/290177

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX