先贴文档哈(http://www.yushanfang.com/portal/help/doc.html?spm=0.0.0.0.nha8ts&file=SuanFaPingTai),在文档里搜PLDA可以看到算法的一些信息。
算法是对数据进行文本聚类,咱们从数据的源头开始一步步做下来。
1,获得分词后的结果表,可以简单用这个实现:
这里的输出表1_1是一个docid+word+count的结果
2,因为上面的表的输出是word是字符串,而PLDA输入的稀疏矩阵的KV结构要求是BIGINT:DOUBLE,所以需要把String转成Bigint。这里建立一个数字和word的一一对应关系。中间怎么处理就看你实现了。可以筛选出自己认为重要的词后,用<数据预处理>里的<序列追加>组件。而Double类型的地方,在PLDA里需要传入的是单词的词频。
我这里的结果表弄成是weibo_blog_data_train_1_wid ,里面的数据结构是word(string)+rn(bigint)。
3,把结果整理成一张PLDA的输入表。文档里提到可以写MR,但是也可以用更加方便的方法(我这里用了mapjoin(b)是因为我筛选出来的b表数据比较少):
create table weibo_plda_in as
select /*+mapjoin(b) */
a.mid,WM_CONCAT(',',concat(b.rn,':',a.count)) as content
from
weibo_wc_1_1 a
join weibo_blog_data_train_1_wid b
on a.word =b.word
group by a.mid
4,用PLDA跑数据吧,哈哈。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。