前言
整体索引在此 :书蕴——基于书评的人工智能推荐系统
之前把书评预处理并将每本书训练出了word2vec模型,本篇博客针对如何提取书籍的标签具体展开描述。
思路
索引篇也提到了,主要是通过word2vec模型,找出前a的高频词放入new_word_set,然后计算new_word_set中所有词距离最近的前5个词,并把这5个词也加入new_word_set中,重复迭代获取标签。其中的数字可以修改,以下列出不同参数的不同效果。具体步骤与伪码以及源码如下:
步骤
- 读取某本书的word2vec模型
- 该模型下vocabulary取频率最高的前3个单词放入到new_word_set中
- 使用该书的word2vec模型,找到new_word_set集合中每一个词距离最近的5个词,将找到的词放入temp_word_set和word_set集合中
- 清空new_word_set,将temp_word_set中所有的词放入new_word_set,清空temp_word_set
- 重复步骤3,4,重复迭代3次(或者是迭代到词的数量为某一个值时)。
伪码
1 | def 提取标签(模型路径, new_word_set): |
源码
因为我把迭代获取标签和计算书籍的距离放在一个py文件里,所以这里只贴提取标签的代码。 这个代码很多参数需要重新调整,才能获得比较好的效果。 下一篇会结合整体的代码结合参数调整,对比效果综合总结一下。
1 | def extract_tag_set(model_name, new_word_set): |
效果
稍微看看提取出来的标签都是些啥玩意儿吧。
1 | model_seg_三体 中的标签为: |
总结
别骂我,为什么是这些词……
有些词比较正常,有些词比如“中”显然就是停用词没有去除好的锅。 毕竟停用词是直接用得别人的停用词表,当然效果不好。
再者就是迭代的思路需要改进一下,应该以广度而非深度为核心,比如高频词的top10词,然后迭代次数少一点。 之前是5次迭代,top5,效果……下一篇总结的时候好好讲一讲。
另外,确实需要一个好一点的评测手段了,光这样看……主观直觉并不能证明这些词就ok阿,得算距离来看,嗯。 下一篇结合不同参数的不同效果来看看吧。
没什么好总结的,我特么再不好好学习,真的就没救了。
最后我要保持神秘感。