word2vec训练中文词向量

记录一下自己使用gensim的word2vec训练中文字向量的实验过程,环境:windows10+python 3.6
1.准备工作

  • 安装gensim
    直接在Anaconda Prompt中输入命令
pip install gensim

我用这个方法过程中出现了一些错误,通过输入以下命令得以解决

conda install mingw libpython
pip uninstall gensim
conda install gensim
conda install mingw libpython

若安装过程中出现提示错误“无Cython模块”,需要输入命令

pip install Cython
  • 安装jieba分词工具
pip install jieba

2.训练中文数据语料
从百度上随便下载的一个夏至未至.txt小说,链接:https://pan.baidu.com/s/1Fz5pS7_58UxKVpttPbLxPA 提取码:eu8t

3.预料预处理–jieba分词

import jieba
import jieba.analyse
#from gensim.test.utils import common_texts, get_tmpfile
#from gensim.models import word2vec


jieba.suggest_freq('傅小司', True)
jieba.suggest_freq('立夏', True)
jieba.suggest_freq('陆之昂', True)
jieba.suggest_freq('遇见', True)
jieba.suggest_freq('程七七', True)
jieba.suggest_freq('段桥', True)
jieba.suggest_freq('李嫣然', True)
jieba.suggest_freq('青田', True)
jieba.suggest_freq('颜末', True)
jieba.suggest_freq('伍凯', True)
jieba.suggest_freq('罗旭', True)
jieba.suggest_freq('杰迅', True)

with open('./夏至未至.txt',encoding='utf-8') as f:
    document = f.read()

    # document_decode = document.decode('GBK')

    document_cut = jieba.cut(document)
    # print  ' '.join(jieba_cut)  //如果打印结果,则分词效果消失,后面的result无法显示
    result = ' '.join(document_cut)
    with open('./夏至未至_segment.txt', 'w',encoding="utf-8") as f2:
        f2.write(result)

将分词之后的语料结果保存在“夏至未至_segment.txt”中,部分结果如下:

_ 分节 阅读 _ 1 
 
 1995 - 2005 夏至 未至 》 
   
       序言 : 离 夏天 最远 的 地方     
       我们 所 看见 的 世界 — — 香 樟树 是 流动 的 绿色 , 阳光 在 午后 变得 透明 , 蜿蜒 向 所有 它 可以 到达 的 地方 , 不远处 的 公交车站 传来 繁忙 的 声响 , 因为 瞌睡 而 睡着 的 人 , 投下 一 颤 一 颤 的 影子 , 蛛网 在 墙角 隐隐约约 。 空气 里 绷着 平缓 而 舒畅 的 节奏 , 像是 永远 停 在 了 这 一点 , 以至于 完全 不用 考虑 它 的 将来 会 演变 出 怎样 的 走向 。 
       我们 所 看见 的 这个 世界 , 如果 没有 遭遇 时间 的 裁量 , 如果 没有 遇见 脱轨 的 速度 , 如果 没有 被 点燃 怠尽 , 最后 如同 一 截 掉落 的 烟灰 , 吹散 在 空气 里 , 状若 无物 … … 那么 , 也许 它 将 永远 带上 香 樟树 凛冽 的 清香 , 以 一个 完美 的 截面 , 停留 在 这个 离 夏天 最近 的 地方 。 
       四维 带来 的 这 一本 《 1995 - 2005 夏至 未至 》 , 是 将 我们 送到 了 哪个 季节 , 在 那里 葬 着 怎样 的 脚印 , 遗落 了 怎样 的 琴音 , 让 我们 要 想 , 要说 , 要 形容 , 却 总 也 找 不到 合适 的 思路 。 只有 深 烙 在 大脑皮层 下 的 那些 美好 , 带上 花瓣 的 脉络 , 以 仿佛 再也不会 遭遇 冬天 般的 骄傲 , 将 我们 迷惑 进 了 这 一 整个 消失 了 季节 的 迷局 。 
       他 让 出现 在 我们 记忆 中 的 夏天 , 在 翠绿 墨绿 草绿 中 渐变 , 他 让 空气 里 膨胀 着 温暖 的 阳光 和 风信子 的 碎屑 , 有 谁 走来 轻轻 一 挥手 , 仿佛 能够 带走 些微 的 香气 , 他 让 每个 年轻 的 生命 都 在 这里 舒展 着 自己 无暇 的 身体 , 压住 哪片 绿草 的 地方 , 觉得 痒痒 起来 。 浅川 的 草 , 也许 没有 其他 地方 四季 常绿 的 名贵 , 可 它们 又会在 每年 夏天 来临 的 时候 变成 覆盖 了 整个 城市 的 音符 。 
       立夏 在 这里 走过 了 。 傅小司 夹 着 画板 看 女生 怎样 像 一艘 白色 的 小船 从 绿色 的 湖面 中 划开 长长的 一条线 , 他 的 眼神 在 无意识 中 温柔 一片 。 陆之昂 躺 在 他 脚边 , 嘴里 咬 着 半根 小草 茎 , 微微 笑 着 , 阳光 太 猛烈 的 关系 , 皱出 立体 的 眉眼 。 
       这 就是 故事 里 的 某 一天 , 轻描淡写 的 一天 而已 。 傅小司 和 陆之昂 的 继续 言语 攻击 , 立夏 拉着 遇见 的 手 说 我们 去 买 饮料 喝 好不好 。 仿佛 在 这个 被 青白色 软壳 包裹 的 世界 中 , 可以 彻底 相信 它 永远 不会 被 孵化 , 永远 可以 为 我们 描摹 着 这样 浪漫 而 温暖 的 细节 , 在 安静 的 背景 乐中 , 成为 一首 绵长 的 抒情曲 。 
       四维 将 大段 笔墨 用来 描写 这样 的 时光 , 其中 虽 伴有 轻快 的 节奏 , 却 只是 调剂 在 一出 浪漫 而 缓慢 的 底音 上 , 在 这里 我们 可以 亲眼目睹 那些 男生女生 是 怎样 一步步 地 从 他们 逐渐 清晰 的 意识 中 发现 了 彼此 的 存在 , 是 怎样 凭借 自己 的 年少 享受 了 谁 也 无法 享受 的 真实 。 仿佛 落 在 画室 里 、 走廊 上 、 楼梯口 、 学校 的 香 樟树下 的 所有 秘密 , 最后 都 能 串 成行 , 串成 完整 的 一份 心绪 。 他 让 每个 女生 的 脸红 都 带上 了 浪漫 的 原因 , 也 使 每个 男生 的 决心 都 下 得 铿锵有力 。 
       你 可以 看见 的 吧 , 那些 发生 在 他们 或者 发生 在 自己 身边 的 事情 怎么 被 书写 成 我们 心里 一个 暗暗 惊讶 的 呼喊 。 那些 在 文字 的 润饰 下 , 散发 了 别样 的 光彩 的 少年 们 , 是 怎样 以 他们 的 眼神 , 想要 找到 更远 的 将来 , 自己 的 路 。 
       这是 一段 长时间 的 陶醉 。 好象 什么 都 要 以 最 完美 的 姿态 展现 在 你 面前 , 每个 角色 的 性格 各异 , 以及 他们 的 所作所为 , 综合 在 一起 后 , 产生 了 这样 一段 青春 。 虽然 是 最 简单 的 暗恋 , 是 最 平常 的 校园 , 是 最 普遍 的 少女 情怀 , 却 又 因为 四维 的 述说 , 每个 人物 尽心 的 演绎 , 在 我们 走 到 某个 拐角 的 时候 突然 被 抓住 , 随后 动弹不得 地 在 故事 的 美丽 下 被 冲得 不成 原形 。 
       好似 他 愿意 为 我们 营造 这样 美好 的 局面 , 陆之昂 与 傅小司 两种 不同 类型 的 男生 又 同样 吸引 人 , 遇见 的 登场 就让 人 印象 深刻 , 随后 她 的 各种 所作所为 更让人 感觉 她 的 倔强 , 天在 地 在 下 , 中间 只有 她 一般 的 倔强 , 立夏 的 如同 所有 温柔 善良 的 小姑娘 一样 , 呵出 体内 的 热气 让 人 感觉 她 的 温暖 , 手拉着 朋友 摇 啊 摇 的 , 不时 掉 一掉 眼泪 。 甚至 连 短短 几场 出现 的 青田 , 也 会 用 一两句 说话 也 某个 角度 下 的 特写 让 人 揪心 。 这些 在 故事 中 附首 可见 的 塑造 笔墨 , 让 《 1995 - 2005 夏至 未至 》 给 以 了 我们 一种 欣喜 而 难以自拔 的 幻觉 。 好似 天堂 和 梦幻 原来 触手可及 , 云层 上 的 鼓音 可以 落向 地面 。 
       有些 段落 该 怎么 说 。 透着 初夏 腥辣 的 热气 , 附和 着 知 了 叫声 而 变得 无比 漫长 的 下午 , 立夏 在 傅小司 的 图画 中 寻找 她 可以 想象 的 美好 , 此刻 的 幸福感 几乎 可以 蔓延到 每个 人 身上 , 我们 也 都 乐意 相信 这个 冷淡 干净 双眼 常常 落 在 远方 的 男生 , 会 真的 和 这个 普通 而 可爱 的 女孩子 , 以 他们 的 青春 为基 , 留下 幸福 的 纹理 。 
       直到 命运 的 齿轮 在 转动 中 终于 倾覆 了 原先 的 大厦 , 让 他们 从 柔软 无害 的 生命 层中 直接 走进 人世 的 第二层 , 才 发现 “ 未来 ” 并 不是 能 对付 一切 的 挡箭牌 , 它 是 个 巨大 的 重量 , 牵着 人 悠悠 地 往下坠 。 而 想要 往 哪里 , 想要 和 谁 去 , 都 由不得 自己 来 决定 。 伸出 去 的 手 , 握到 荆棘 的 刺 , 干脆利落 地 插进 皮肤 。 
       我 不 知道 该 怎么 去 描述 那些 离开 了 校园 的 他们 , 好似 原先 听见 了 天堂 的 音鼓 , 却 只是 缓缓 飘落 向 人间 的 小小 馈赠 , 一场 雪 , 下 了 , 积了 , 最后 化 了 , 人间 依然 是 人间 。 踩下去 的 脚印 清晰 记录 你 一路 迷失 的 过程 。 
       原来 青春 就是 这样 脆弱 到 无法 挽留 的 东西 。 
       四维 终究 没有 放过 他们 , 更 没有 放过 我们 。 他 让 每个 人物 都 在 命运 的 潮水 中 偏离 了 自己 的 航道 , 而 我们 只是 以 无力 的 观看 者 在 一边 , 听见 自己 的 叹息声 , 却 还是 走过 辛酸 的 一站 , 走过 无奈 的 一站 , 走过 悲伤 的 一站 。 随之 发现自己 竟 早已 在精神上 被 施与 了 苦刑 , 灵魂 也 好似 受过 了 鞭笞 , 而 回头 看看 过去 , 那些 在 过去 的 少年 们 的 身影 , 仿佛 还 在 浅川 的 山坡 上 睡 得 像 个 小 动物 。 光线 饱满 地 停留 在 她们 的 额头 上 。 
       整个 《 1995 - 2005 夏至 未至 》 的 时间跨度 达到 十年 , 十年间 可以 发生 的 事 有 太 多 了 , 让 年轻 失去 它们 翠绿色 的 汁液 , 让 一 整个 城市 又 换 了 新 的 流行 , 让 我们 有太多 懊悔 难以 追及 , 让 每个 从 校园 中 走出 的 人 忘记 他 当时 那张 纯白 的 脸 。 而 四维 给予 立夏 他们 的 , 同样 是 一段 又 一段 大起 大伏 的 命运 。 既有 告白 的 暖意 融人 , 也 有 噩耗 的 晴天霹雳 , 在 我们 几乎 还 来不及 细细 琢磨 的 时刻 , 新 的 变动 又 来 了 , 还 来不及 治疗 旧 伤口 , 新 的 伤痕 又 添加 了 , 好似 在 飓风 中 丢掉 呼吸 , 整个 人 被 逐渐 剥夺走 了 小时候 的 信仰 。 
       四维 用 这样 明显 的 剧烈 对比 , 把 故事 放在 飞速 旋转 的 两片 风车 中间 , 气流 交错 , 小小的 纸片 进去 后变 被 撕成 碎片 。 当 我们 还 没有 做好 完全 的 心理准备 , 我们 还 停留 在 那样 脉脉 的 时光 上 , 以为 从此 都 可以 用 相同 的 幸福 来 期盼 随后 , 当 我们 看着 傅小司 坐飞机 去 了 上海 , 他 和 立夏 各分 了 一只 耳机 , 那时 我们 的 微笑 还 停留 在 嘴角 , 心里 的 潮水 还 没有 退去 , 却 浑然不知 随后 他们 将 面临 的 各种 不幸 , 究竟 有 多么 庞 
       大而 无法 

4.word2vec训练词向量

# -*- coding: utf-8 -*-

# import jieba
# import jieba.analyse
from gensim.test.utils import common_texts, get_tmpfile
from gensim.models import word2vec

# 
# jieba.suggest_freq('傅小司', True)
# jieba.suggest_freq('立夏', True)
# jieba.suggest_freq('陆之昂', True)
# jieba.suggest_freq('遇见', True)
# jieba.suggest_freq('程七七', True)
# jieba.suggest_freq('段桥', True)
# jieba.suggest_freq('李嫣然', True)
# jieba.suggest_freq('青田', True)
# jieba.suggest_freq('颜末', True)
# jieba.suggest_freq('伍凯', True)
# jieba.suggest_freq('罗旭', True)
# jieba.suggest_freq('杰迅', True)
# 
# with open('./夏至未至.txt',encoding='utf-8') as f:
#     document = f.read()
# 
#     # document_decode = document.decode('GBK')
# 
#     document_cut = jieba.cut(document)
#     # print  ' '.join(jieba_cut)  //如果打印结果,则分词效果消失,后面的result无法显示
#     result = ' '.join(document_cut)
#     with open('./夏至未至_segment.txt', 'w',encoding="utf-8") as f2:
#         f2.write(result)
#加载语料
sentences = word2vec.LineSentence('./夏至未至_segment.txt')
#训练语料
path = get_tmpfile("word2vec.model") #创建临时文件
model = word2vec.Word2Vec(sentences,hs=1,min_count=1,window=3,size=50)
model.save("word2vec.model")

这样word2vec词向量训练完成。
5.加载模型

model = word2vec.Word2Vec.load("word2vec.model")

6.word2vec训练的词向量4个简单应用:

1.输出某一个词对应的字向量表示

print(model.wv['傅小司'])

这里训练字向量维度是50,因此输出一个1*50维度的向量列表形式

[ 0.02614833  0.62730306 -0.08763303 -0.86082494 -0.6132983   0.26367593
  0.13664652  0.30541402  0.13677499 -0.8614811   0.28373545 -1.1140975
 -0.79072624  0.53347707 -1.6480855   0.37601948 -1.7206652  -1.1474216
 -0.7762522   1.1137716   0.21274179 -0.17867644 -0.39348873  0.26208463
 -0.2918493   0.45645487  0.6006337   0.4919964  -1.1038567   1.1408666
  0.22714685  0.00733417 -0.3033878   0.7466161  -0.8410811   0.6223441
 -0.34520924  0.4519869  -0.12482037 -0.7459157   0.9827534  -0.4562803
  0.26689863  0.7035787   0.27264267  0.81484836 -0.01554343  1.354976
  0.03141693  0.71394193]
  1. 在所给的几个词中找出最不同的一个词
print(model.wv.doesnt_match(u"傅小司 立夏 陆之昂 夏天".split()))

word2vec完成的很好,输出“夏天”。前三个词均是小说主人公名字,准确识别出“夏天”不同于其他三个。

  1. 输出和所给词最相似的三个词
req_count = 3
for key in model.wv.similar_by_word('傅小司', topn =100):
    if len(key[0]) > 1:
        req_count -= 1
        print(key[0], key[1])
        if req_count == 0:
            break

结果:

陆之昂 0.984142005443573
遇见 0.9545912742614746
立夏 0.947914719581604

都是小说中的角色名,后面的小数是两个词之间的相似度。

  1. 查看两个词向量的相近程度
print(model.wv.similarity('傅小司', '陆之昂'))
print(model.wv.similarity('可乐', '立夏'))

用了两个例子,一对都是人名,另一对是人名和物名,结果如下:

0.9841419586152907
0.807439792185031

很明显,都是人名相似度比人名和物名之间的相似度高得多。over~

  • 1
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值