书蕴笔记-2-使用word2vec模型迭代获取标签

前言

整体索引在此 :书蕴——基于书评的人工智能推荐系统

之前把书评预处理并将每本书训练出了word2vec模型,本篇博客针对如何提取书籍的标签具体展开描述。

思路

索引篇也提到了,主要是通过word2vec模型,找出前a的高频词放入new_word_set,然后计算new_word_set中所有词距离最近的前5个词,并把这5个词也加入new_word_set中,重复迭代获取标签。其中的数字可以修改,以下列出不同参数的不同效果。具体步骤与伪码以及源码如下:

步骤

  1. 读取某本书的word2vec模型
  2. 该模型下vocabulary取频率最高的前3个单词放入到new_word_set中
  3. 使用该书的word2vec模型,找到new_word_set集合中每一个词距离最近的5个词,将找到的词放入temp_word_set和word_set集合中
  4. 清空new_word_set,将temp_word_set中所有的词放入new_word_set,清空temp_word_set
  5. 重复步骤3,4,重复迭代3次(或者是迭代到词的数量为某一个值时)。

伪码

1
2
3
4
5
6
7
8
9
10
def 提取标签(模型路径, new_word_set):
truefor i in range(3):
truetruefor word in new_word_set:
truetruetrue获取和word距离最近的前5个词
truetruetrue将这5个词加入temp_word_set
truetrueword_set= word_set并集temp_word_set
truetruenew_word_set清空
truetruenew_word_set的内容更新为temp_word_set的内容
truetruetemp_word_set清空
true返回word_set集合

源码

因为我把迭代获取标签和计算书籍的距离放在一个py文件里,所以这里只贴提取标签的代码。 这个代码很多参数需要重新调整,才能获得比较好的效果。 下一篇会结合整体的代码结合参数调整,对比效果综合总结一下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def extract_tag_set(model_name, new_word_set):
word2vec_base = '书评\\word2vec\\model\\'
model = Word2Vec.load(word2vec_base + model_name) # type: Word2Vec
word_set = set() # 结果集
# new_word_set = {"阿米尔"} # 新词集
temp_word_set = set() # 关联词集
for i in range(3):
for word in new_word_set:
top5 = model.wv.most_similar(word, topn=5)
for l in top5:
temp_word_set.add(l[0])
word_set = temp_word_set | word_set
new_word_set.clear()
new_word_set = temp_word_set.copy()
temp_word_set.clear()
# print(word_set)
return word_set

效果

稍微看看提取出来的标签都是些啥玩意儿吧。

1
2
3
4
5
6
7
8
9
10
11
model_seg_三体 中的标签为:
{'面对', '人类文明', '书名', '移居', '消亡', '招募', '萌芽', '2', '融入', '逃避', '异常', '试', '不可避免', '行走', '注定', '三册', '集体', '更何况', '悟', '解答', '赤裸裸', '艰难', '对外', '引出', '不禁', '相通', '异化', '处于', '隐隐约约', '探寻', '一瞬间', '科学界', '剿灭', '代价', '警方', '轻松', '变革', '好奇', '知晓', '初衷', '接触', '相遇', '开发', '子孙', '忠实', '残酷', '外部', '慢', '并未', '斗争', '不算', '迫使', '守护', '说起', '里', '争当', '潜意识', '当做', '悄然', '产物', '慢慢', '异类', '期盼', '刷', '一切都是', '尾', '外力', '灭亡', '作出', '融合', '名', '一员', '审问者', '住', '插叙', '精神领袖', '狂妄', '后半段', '在精神上', '第三本', '灾难', '适宜', '推演', '如饥似渴', '看待', '宇宙空间', '介入', '对此', '终于', '最深', '第一步', '打开', '统治', '困难', '堕落', '跳出', '逃过', '降临到', '分为', '第二本', '一遍', '打算', '改善', '中三体', '反抗', '残忍', '说到底', '交代', '防卫', '参透', '重如泰山', '斥', '开启', '自相残杀', '终将', '出路', '监督', '拉开', '张力', '演化', '美妙', '未必', '无可', '一口气', '路上', '无关', '稍微', '顽强', '面纱', 'lt', '支配', '一共', '星人', '厌恶', '之中', '巧合', '一度', '不值一提', '伏笔', '审视', '本性', '终结', '留恋', '覆灭', '罪恶', '怪物', '安全感', '流浪', '现状', '面前', '正义', '悲惨', '做法', '星期', '哭', '寄希望于', 'gt', '众生', '丧失', '起源', '稳藏', '是否是', '意志', '不利于', '网游', '相', '要义', '暗示', '一页', '好奇心', '揭开', '全局', '一周', '两本', '初步', '寻求', '一段时间', '了爱', '可谓', '开端', '恶劣', '抑制', '派别', '语', '款', '条件', '状态', '截然不同', '曙光', '珍贵', '关乎', 'boss', '引向', '短', '思绪', '详细', '从头到尾', '日子', '挫败', '刚刚', 'PS', '淘汰', '地方', '至极', '共鸣', '没想到', '第一次', '抱', '重复', '揭晓', '结尾', '弱者', '光明', '信徒', '一章', '后续', '意识', '处境', '后果', '舒适', '愿望', '翻开', '演变', '民众', '正式', '讽刺', '持续', '救赎', '映射', '所有人', '三者', '世界末日', '引子', '野蛮', '4.', '几天', '解脱', '蛮荒', '透露', '和平共处', '登陆', '主观', '守护者', '不用说', '博弈', '画卷', '或者说', '一幕', '外来', '浮现', '24.', '灿烂', '搏杀', '消除', '困境', 'high', '生态系统', '疑问', '安德', '前提', '人权', '想着', '忠诚', '生死存亡', '生死', '奇异', '挽救', '推向'}
正在提取 model_seg_三体Ⅲ 中的标签…
model_seg_三体Ⅲ 中的标签为:
{'理由', '小儿科', '最为', '漂流瓶', '消亡', '贯穿', '举动', '瓜葛', '诡谲', '人类文明', '高潮迭起', '料到', '定格', '局面', '复杂性', '归宿', '重启', '安利', '了前', '显而易见', '苟延残喘', '版本', '续集', '鱼缸', '意图', '共同努力', '看不见', '无边', '数量', '留在', '临界值', '百年', '一抹', '大同', '看作', '暗黑', '归于', '抛弃', '回归', '可知', '接触', '恐慌', '沧海一粟', '回应', '超出', '跨', '功夫', '求生', '折磨', '愤怒', '平淡', '消化', '时刻', '不复存在', '生死', '总体', '当作', '记录', '归零', '重生', '微不足道', '应对', '足够', '笼罩', '灭亡', '所处', '两本书', '保卫战', '狂妄', '灾难', '终点', '领袖', '倒计时', 'I', '视为', '招来', '回顾', '全宇宙', '证据', '遭受', '忠于', '浩劫', '众矢之的', '一具', '光锥', '领导者', '自信', '还给', '冒失', '中三体', '罪人', '达成', '孕育', '死尸', '反抗', '公斤', '旧', '至高无上', '盲目', '走到', '存亡', '无可救药', '想来', '球', '拍成电影', '自相残杀', '战胜', '完结', '长时间', '如果说', '初次', '尘埃', '绝境', '有害', '数次', '生态', '已然', '自大', '浮云', '直至', '新生', '足以', '归还给', '蝗虫', '怨恨', '无垠', '之中', '亿万', '直面', '唏嘘', '漫长', '刷新', '罪恶', '选择题', '新', '潘多拉', '外形', '防备', '上看', '挣扎', '气势磅礴', '短视', '一款', '权利', '寄希望于', '摆脱', '这时候', '看成', '深意', '严锋', '俗套', '危难', '跨入', '循环', '序', '简介', '一小', '引来', '一页', '暗无天日', '初步', '光亮', '抗争', '寻求', '回到', '号召', '物竞天择', '点睛之笔', '小事', '浅', '忘却', '压力', '卑微', '输给', '数量级', '关乎', '赶上', '自取灭亡', '繁衍', '轮回', '惊讶', '不为过', '误读', '启示', '紧张', '无能为力', '定位', '刚刚', '忽视', 'NB', '赢得', '怜悯', '以求', '庞大', '归还', '弱者', '媲美', '诞生', '后续', '亿万年', '贴切', '抵抗', '高于', '死去', '热寂', '预言', '气势', '辛苦', '后记', '翻开', '惊喜', '正式', '已有', '救赎', '催生出', '灭绝', '娓娓道来', '疑点', '衰亡', '奇迹', '和平共处', '超凡脱俗', '灭顶之灾', '一二', '失效', '渴望', '面临', '希冀', '最让人', '远方', '搏杀', '疏忽', '临时', '送向', '生死存亡', '五公斤', '跳跃', '挽救'}
正在提取 model_seg_红楼梦 中的标签…
model_seg_红楼梦 中的标签为:
{'玉宝钗', '三次', '第三十一回', '哭哭啼啼', '绝妙', '惜墨如金', '可不是', '早知如此', '放心', '后期', '打趣', '后事', '虎狼', '穿插', '出场', '生平', '心意', '此话', '成亲', '正册', '暧昧', '醪曲', '着力', '假寐', '几十回', '房中', '爱哭', '留得', '提醒', '解答', '淋漓尽致', '贴心', '邢岫烟', '冷笑', '不理', '乱说', '极妙', '谜', '淘气', '留在', '场面', '晓得', '脑海中', '差点', '雪雁', '金锁', '无处', '吃醋', '硬', '青梅竹马', '提及', '走进', '无不', '仿佛', '哭泣', '模仿', '并未', '里', '顺序', '爱黛玉', '宝', '终归', '堵', '一下子', '第二回', '阿Q', '俯拾皆是', '独独', '十二支', '寻觅', '臭男人', '混帐', '象', '可说', '晚年', '图册', '关切', '小心眼', '有没有', '好歹', '生分', '多半', '体谅', '湘云', '心直口快', '说出', '口里', '和黛玉', '你好', '槛', '隐晦', '听见', '一名', '好像', '回来', '十二钗', '小性', '面貌', '反面', '伤感', '言语', '不明', '胡说', '没意思', '咬', '聪明伶俐', '细致', '后悔', '多处', '传神', '妨碍', '吟诗', '亲姐姐', '交代', '着墨', '宝琴', '惋惜', '奢华', '删掉', '猜测', '冤', '心病', '第五回', '口气', '相爱', '笔法', '不见得', '推', '推之于', '不至', '懂事', '列', '平空', '听到', '第十三回', '无可', '越发', '伴侣', '一口气', '要说', '言情', '曲折', '走出', '尖酸刻薄', '热闹', '闺阁', '篇幅', '情敌', '计较', '不该', '厕所', '心碎', '疑惑', '发现自己', '难过', '回去', '说不出来', '脸谱化', '岔开', '包容', '倒像', '心爱', '半天', '林姑娘', '提示', '黛玉', '小人物', '外', '摔', '之口', '说错', '感激', '心目', '真情', '联诗', '通考', '曲笔', '敬重', '不远', '宝钗', '问道', '多早晚', '夸', '周到', '大方', '中', '表白', '混账', '猫', '黛', '正面', '写到', '由来', '撒谎', '妹纸', '之时', '貌似', '颇为', '回到', '小气', '开端', '神秘', '书外', '吵架', '心中', '开心', '谜团', '说道', '多行', '不信', '作诗', '抢', '围绕', '要紧', '当初', '褒贬', '册', '信息', '第三回', '见到', '没人', '细微', '许', '出口', '小性儿', '点头', '这话', '仅凭', '柜', '站住', '说完', '出入', '刻薄', '问问', '一流', '坏', '出彩', '那段', '学诗', '婶子', '试探', '真性情', '饱满', '册页', '在意', '判曲', '取笑', '安慰', '瞧', '怔', '哄', '剧中', '太多太多', '和宝钗', '矫情', '儒林外史', '多疑', '亲密', '宝贝', '玩笑话', '好好', '留神', '紫鹃'}
正在提取 model_seg_追风筝的人 中的标签…
model_seg_追风筝的人 中的标签为:
{'惨死', '阿米尔', '头发', '不顾', '蠕动', '维护', '天空', '无怨无悔', '捍卫', '好受', '风险', '飞翔', '飞', '学会', '骗子', '冷淡', '停止', '无私', '久久', '落地', '放飞', '一同', '阿桑', '一只', '忠实', '兼', '追', '守护', '离去', '伙伴', '追回', '掉落', '当做', '最出色', '理所当然', '冠军', '天上', '塞尔', '祝你好运', '占有', '领养', '喉结', '线', '坏孩子', '冬天', '米尔', '奋力', '空中', '吞咽', '毫无保留', '宠爱', '羞辱', '亲密无间', '弟弟', '挺身', '动摇', '掠起', '亲人', '命中注定', '打败', '斗', '情同手足', '隐忍', '那年', '情同', '欺凌', '无动于衷', '激怒', '阿赛夫', '伤', '怨恨', '上书', '玻璃', '忠心耿耿', '深爱', '遇上', '他家', '人世', '相仿', '包容', '至死', '哈桑', '哈森', '荣耀', '直视', '人能', '逆来顺受', '疼爱', '赢回', '忠心', '不肯', '翱翔', '出头', '对手', '胜利', '冬日', '坠落', '竟是', '无条件', '揍', '关爱', '1975', '大赛', '求', '赢得', '捡', '比赛', '胜利者', '死去', '后记', '服侍', '陪伴', '割断', '亲兄弟', '上前', '亲', '但他却', '侵犯', '高手', '玩伴', '亲生', '佣人', '合', '手足', '长长的', '奉献', '灿烂', '爱和', '奴仆', '追到', '亲密', '参加', '抚养'}

总结

别骂我,为什么是这些词……

有些词比较正常,有些词比如“中”显然就是停用词没有去除好的锅。 毕竟停用词是直接用得别人的停用词表,当然效果不好。

再者就是迭代的思路需要改进一下,应该以广度而非深度为核心,比如高频词的top10词,然后迭代次数少一点。 之前是5次迭代,top5,效果……下一篇总结的时候好好讲一讲。

另外,确实需要一个好一点的评测手段了,光这样看……主观直觉并不能证明这些词就ok阿,得算距离来看,嗯。 下一篇结合不同参数的不同效果来看看吧。

没什么好总结的,我特么再不好好学习,真的就没救了。

最后我要保持神秘感。


欢迎分享

码字不易,请我喝杯咖啡呗?