姜仙人

V1

2022/08/03阅读:4主题:蔷薇紫

[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)]

结论

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

分类:

后端

标签:

后端

作者介绍

姜仙人
V1