[Python]Word2Vec预测,如果我的'生命'中减去'爱'会剩下什么

德国诗人席勒说:“没有爱之光辉的生活一文不值”

不仅仅是席勒,在整个人类历史上,有多少人讨论过 "生命 "和 "爱 "之间的关系?

在这里,在向这些前辈的工作表示敬意的同时,我们用现代的壮举Word2Vec来问

如果从'生命'中减去'爱',还剩下什么?

Word2Vec

安装库

使用gensim

!pip install gensim
复制代码

下载经过训练的模型Word2Vec

在此下载模型:http://bit.ly/2srnKoy 解压缩并使用文件ja.bin

载入模型

import gensim
model = gensim.models.Word2Vec.load('/content/ja.bin')
复制代码

查找 "人生"的类似词

首先,我们使用Word2Vec的分布式表示法来研究人生这个词的类似词

for item, value in model.wv.most_similar('人生'):
    print(item,value)
复制代码

输出结果

不知何故,这似乎很合适

心境 0.5031609535217285
命运 0.4962955415248871
幸福 0.4731469750404358
我 0.45822054147720337
老年 0.44594892859458923
书 0.4451371133327484
半生 0.4450538754463196
思索 0.4410485029220581
永远 0.43776482343673706
一生 0.43756037950515747
复制代码

从 "生命 "中减去 "爱"

让我们实际尝试一下Word2Vec来做一些字向量算术

代码如下

model.wv.most_similar(positive=['人生'],negative=['爱'])
复制代码

输出结果

第一名是 "事业",第二名是 "金钱",以此类推

但不确定第9位的 "大联盟 "是什么意思

[('事业', 0.3442475199699402), ('金钱', 0.33152854442596436), ('机会', 0.2999703586101532), ('老年', 0.29941919445991516), ('沙利文', 0.29740941524505615), ('困难', 0.2900192439556122), ('成果', 0.286318302154541), ('理论', 0.2787232995033264), ('大联盟', 0.2783268094062805), ('压力', 0.27150285243988037)]]
复制代码

试试经典的“王”+“女人”——“男人”

model.wv.most_similar(positive=['王','女'],negative=['男'])
复制代码

输出结果

公主来了

[('公主', 0.4609297811985016), ('王位', 0.4463587999343872), ('女王', 0.440536767244339), ('王室', 0.4360467791557312), ('父王', 0.4177766740322113), ('王妃', 0.4131211042404175), ('唐朝', 0.410072922706604), ('国师', 0.4071836471557617), ('李世明', 0.404167115688324), ('……', 0.40059027075767517)]
复制代码

也用fastText来计算

下载经过训练的模型fastText

加载模型

import gensim
model = gensim.models.KeyedVectors.load_word2vec_format('/content/model.vec',binary=False)
复制代码

查找 "人生" 的类似词

在此之前,得到“人生”的特征量向量

有 300 个维度。 顺便说一下,Word2Vec有100个维度

 word = '人生'
print(f'{word}的特征向量')
print(model[word])
model[word].shape
复制代码

输出结果:

(300,)
复制代码
print(f'{word}的同义词')
for item ,value in model.most_similar(word):
    print(item,value)
复制代码

输出结果,它比Word2Vec更具体

人生的同义词
生活方式 0.643797755241394
居住 0.5911297798156738
生涯 0.5900983810424805
一生 0.5889523029327393
人生观 0.5824947953224182
活着 0.5823161602020264
幸福 0.574641227722168
青春世代 0.5740978717803955
婚后生活 0.5648994445800781
记忆 0.5635090470314026
复制代码

在 "人生" 中减去 "爱"

model.most_similar(positive=['人生'],negative=['爱'])
复制代码

输出结果

它太具体了,类似的术语也是如此

像fastText这样优秀的模型似乎并不适合粗糙的主题

[('回顾', 0.34721365571022034), ('运动员的一生', 0.32623374462127686), ('职业生活', 0.3085706830024719), ('职业', 0.30444127321243286), ('人生计划', 0.2932748794555664), ('职业生涯', 0.2895069122314453), ('生活', 0.283188134431839), ('转折点', 0.2803061604499817), ('回顾', 0.27186983823776245), ('重新开始', 0.2653588056564331)]
复制代码

结论

席勒说,没有爱之光辉的生活一文不值,但听起来不一定是没有价值

本文由mdnice多平台发布

猜你喜欢

转载自juejin.im/post/7127522865863196708