首页 > 代码库 > 大论文微博个性化

大论文微博个性化

1,提取出每个节目下的用户列表

2,将用户id列表与用户的profile进行对应

实现脚本如下:

  1 #/bin/sh  2   3 program_dir=/home/minelab/liweibo/raw_data  4 user_file=/home/minelab/liweibo/springNightUser/sina_user.data  5   6 program_list=`ls $program_dir`  7   8 for program in $program_list  9 do 10 #对每个节目生成两个文件 11 #节目名称_userid_times.map 字段:用户id 用户发表该节目相关的微博的次数 12 #节目名称_userid_times_profile 字段:用户id 用户提到该节目的次数    用户昵称    用户性别    用户地域    用户生日    用户关注数目        用户粉丝数目    用户发布微博数目    用户标签     13     rm -rf $program_dir/$program/$program"_userid_times.map" 14     rm -rf $program_dir/$program/$program"_userid_times_profile.map" 15     cat $program_dir/$program/$program.data| awk -F\t {print $2} | sort | uniq -c | sort -r -n | sed s/^ *//g | sed s/ /\t    /g | awk -F\t {print $2"\t"$1} | sort >$program_dir/$program/$program"_userid_times.map" 16     join -t $\t $program_dir/$program/$program"_userid_times.map" $user_file >$program_dir/$program/$program"_userid_times_prof    ile.map" 17  18     echo $program is done! 19 done 20  21 echo "all is done!"
节目用户信息处理extractUserForLargePaper.sh

3,对节目信息进行编号

#!/bin/shprogram_dir=/home/minelab/liweibo/raw_datainter_dir=/home/minelab/liweibo/inter_dataresult_file=$inter_dir/id_program.mapprogram_list=`ls $program_dir`rm -rf $result_filei=1for program in $program_listdo    echo $i"    "$program>>$result_file    i=$[$i+1]doneecho "done"
为节目赋id

得到的id_program.map文件

1    百花争妍2    倍儿爽3    春晚是什么4    答案5    扶不扶6    符号中国7    光荣与梦想8    欢歌9    剑心书韵10    卷珠帘11    康定情歌12    空空拜年13    老阿姨14    练兵舞15    玫瑰人生16    梦蝶17    魔幻三兄弟18    难忘今宵19    年味儿20    青春舞曲21    情非得已22    群发的我不回23    扰民24    人到礼到25    舌尖上的春晚26    时间都去哪儿27    说你什么好28    套马杆29    天下黄河九十九道弯30    天耀中华31    同光十三绝32    团圆饭33    万马奔腾34    万泉河水35    我的要求不算高36    我的中国梦37    我就这么个人38    想你的365天39    小马欢腾40    野蜂飞舞41    英雄赞歌42    英雄组歌43    在那遥远的地方44    站在高岗上45    张灯结彩46    最好的夜晚
id_program.map

4,建立节目id_用户矩阵

 

 #!/bin/bash#最终得到的文件格式是节目id"    "评论该节目的用户数目"  "评论该节目的用户id列表(不同id之间使用空格分开)#如果一个用户多次评论某个节目,当作一次进行处理program_dir=/home/minelab/liweibo/raw_datainter_dir=/home/minelab/liweibo/inter_dataresult_file=$inter_dir/programid_userlist.maptmp_file=$inter_dir/programid_userlist.tmpprogram_list=`ls $program_dir`rm -rf $result_filerm -rf $tmp_filei=1for program in $program_listdo    user_list=`cat $program_dir/$program/$program"_userid_times_profile.map" |  awk -F\t {printf("%s ",$1);}End{print;}`    line_num=`cat $program_dir/$program/$program"_userid_times_profile.map" | wc -l | awk {print $1}`     echo $i"    "$line_num" "$user_list >>$tmp_file    i=$[$i+1]done#根据节目流行度进行排序cat $tmp_file | sort -t $\t -k 2 -r -n > $result_filerm -rf $tmp_fileecho "done"
构建id_用户矩阵

 

 

 

5,建立用户_节目id矩阵

 

6,统计节目下节目的流行度

7,统计用户的活跃度