聚类文本预处理
1. DVM_Data_Preprocess_script:keyad.sh
2. DVM_Data_Preprocess_script/sort_DocTriple: sort_DocTriple
3. Cal_cluster2cluster_similarity_hadoop:hadoop_cal_cpp.sh、cal_cluster2cluter_similarity
4. HC-FN: /HC-FN 3203464 0.90 ../corpus/d20120916_all/valid_keyad.DOCINFO ../corpus/d20120916_all/hc.doc2doc.sim.Triple4Sim.sorted ../result/HC-FN/hc.result
group信息利用
做法:利用groupid已经提供的信息对group进行聚类。
最终目的:对于已经存在的groupid,直接取其聚类结果;对于不存在的groupid,计算其文档term权重向量,将其归于其中某一类,根据阈值决定是否使用此聚类结果。
流程:group的文档表示(原始形式) --> 特征词选择 --> group的文档表示(仅含特征词) --> 构建倒排索引(词袋模型) --> 建立VSM模型 --> 聚类 --> 评价
整体流程:对广告库进行预处理得到文档向量文件 --> 聚类并输出 --> 聚类效果评价
广告库的预处理
s0: 去掉质量度低于3星的广告;去掉term中的停用词;利用行业信息;……
s1: 对广告库按照 accid-catetory-planid-groupid-kid-keyword 进行排序并提取这几列信息;
s2: 对keyword进行分词;
s3: 统计TF、term在group中的出现频率;
s4: 提取group的描述term;
s5: 生成TF文件、DF文件、字典、文档描述文件;
s6: 生成文档向量文件。
TODO
1. 语料库的选择。
sogou一般用三个语料库比较多:
(1) 字面:聚类结果比较小,聚类精确。现在用得比较少。
(2) 查询扩展:adr1的查询扩展模块,华北用过。找年华要相关资料。
(3) 同点击的信息:叶祺用过。
2. term weight的算法。
(1) TFIDF,TF、DF的计算及含义。
3. 特征词的选取。
4. 聚类算法的选择。
(1) kmeans
(2) 由于group的标准有大有小并不一致,也许应该考虑使用层次聚类。
思路
1. 将每个group的广告关键词看成一个文档,利用TFIDF来计算term权重。
2. term权重:term在这个group关键词中出现的比例(例如某个groupid下有N个广告,有M个含有term T, 则T的权重为M/N)。
文本聚类代码
数据及文本的预处理
1. 字符串基本函数(StringUtil.*): split, strip, int_to_str
2. 加载停用词表
3. 构建词袋模型(建倒排表):构建倒排表, 倒排表写入倒排索引文件, 从倒排索引文件加载倒排表到内存
4. 建立VSM(Vector Space Model)
聚类算法
1. kmeans聚类:相似度计算、选取初始类中心、聚类、重算类中心、判断是否到达停止迭代条件、聚类效果评价及各种评价指标、输出结果
2. 层次聚类:算法理解、数据结构设计、编码、聚类、评价
聚类结果评价
1. 评价指标、评价方法:参见《数据挖掘:概念与技术》第10章第6节-聚类评估。
2. kmeans对广告库进行聚类并进行效果评价。
3. 层次聚类:编码、调试、聚类、评价。
问题
1. group文档是否是欧氏空间?
浙公网安备 33010602011771号