一定要记得数据对齐啊
文件不关闭,也会出现问题。。。。。
一:获得tagnum,keynum,以及tagkey共现的次数,都是多线程实现的。多线程的母函数叫做map_func,这个会在取得一个任务之后,依次调用get_tagnum,get_keynum,以 及mapreduce函数。
二:第二步其实还是一个reduce函数,本来也可以在第一步实现的,只不过保存文件名比较繁琐,不如用脚本传入,比如你的可执行的reduce程序叫your_exe,则可以这样:./your_exe *_reduce 就会去reduce所有以reduce结尾的文件,而如果写在一个函数中,需要额外记录,程序维护不方便,也破坏了一个函数最好只做一件事的原则。
三:第三步就可以计算贡献率了。load进三个词典,分别计算:tagkeynum/keynum tagkeynum/tagnum
subprocess.call("./filterResult food_result",shell = True);
subprocess.call("./createTagIdFile "+prefix+"_tagnum ",shell = True);
subprocess.call("./createDataFile "+prefix+"_filter_result "+prefix+"_tagidfile ",shell = True);
create_index4(prefix+"_i