查看原文
其他

认知的测量 | 向量距离vs语义投影

大邓 大邓和他的Python 2022-07-09

近期活动

2022年5月16号 Python数据挖掘2022五月直播开始报名啦


词嵌入中蕴含着人类的认知信息,如类比、贫富、性别等。以往的词嵌入大多是比较一个概念中两组反义词与某对象的距离计算认知信息。

多个词语之间体现类比信息


词语体现贫富阶级、性别化信息


在昨天 使用cntext训练Glove词嵌入模型 的基础上,我们可以挖掘词向量模型中的认知信息。在文中,通过两个函数实现两个小案例

多个对象在某概念的远近,职业与性别,某个职业是否存在亲近男性,而排斥女性

- 多个对象在某概念的分量(fen,一声)的多少, 人类语言中留存着对不同动物体积的认知记忆,如小鼠大象。动物词在词向量空间中是否能留存着这种大小的记忆

使用cntext.Text2Mind类中的两种方法可以挖掘出人类认知信息

  • .Text2Mind.sematic_distance(words, c_words1, c_words2)  向量距离
  • .Text2Mind.sematic_projection(words, c_words1, c_words2)  向量投影

tm.sematic_distance(words, c_words1, c_words2)

分别计算words与c_words1、c_words2语义距离,返回距离差值。

例如

male_concept = ['male''man''he''him']
female_concept = ['female''woman''she''her']
software_engineer_concept  = ['engineer',  'programming',  'software']
d1 = distance(male_concept,  software_engineer_concept)
d2 = distance(female_concept,  software_engineer_concept)

如果d1-d2<0,说明在语义空间中,software_engineer_concept更接近male_concept,更远离female_concept。

换言之,在该语料中,人们对软件工程师这一类工作,对女性存在刻板印象(偏见)。

下载glove_w2v.6B.100d.txt链接: https://pan.baidu.com/s/1MMfQ7M0YCzL9Klp4zrlHBw 提取码: 72l0

import cntext as ct

#Note: this is a word2vec format model
tm = ct.Text2Mind(w2v_model_path='glove_w2v.6B.100d.txt')

engineer = ['program''software''computer']
mans =  ["man""he""him"]
womans = ["woman""she""her"]

#在语义空间中,工程师更接近于男人,而不是女人。
#in semantic space, engineer is closer to man, other than woman.
tm.sematic_distance(words=engineer, 
                    c_words1=mans, 
                    c_words2=womans)

Run

-0.38
-0.38 意味着工程师更接近于男人,而不是女人。

tm.sematic_projection(words, c_words1, c_words2)

语义投影, 根据两组反义词c_words1, c_words2构建一个概念(认知)向量, words中的每个词向量在概念向量中投影,即可得到认知信息。

分值越大,word越位于c_words2一侧。

下图是语义投影示例图,本文算法和图片均来自 "Grand, G., Blank, I.A., Pereira, F. and Fedorenko, E., 2022. Semantic projection recovers rich human knowledge of multiple object features from word embeddings. Nature Human Behaviour, pp.1-13."

例如,人类的语言中,存在尺寸、性别、年龄、政治、速度、财富等不同的概念。每个概念可以由两组反义词确定概念的向量方向。

以尺寸为例,动物在人类认知中可能存在体积尺寸大小差异。

animals = ['mouse''cat''horse',  'pig''whale']
smalls = ["small""little""tiny"]
bigs = ["large""big""huge"]

# In size conception, mouse is smallest, horse is biggest.
# 在大小概念上,老鼠最小,马是最大的。
tm.sematic_projection(words=animals, 
                      c_words1=smalls, 
                      c_words2=bigs)

Run

[('mouse', -1.68),
 ('cat', -0.92),
 ('pig', -0.46),
 ('whale', -0.24),
 ('horse', 0.4)]

在这几个动物尺寸的感知上,人类觉得老鼠体型是最小,马的体型是最大。


精选文章

从符号到嵌入:计算社会科学的两种文本表示

推荐 | 社科(经管)文本分析快速指南

视频专栏课 | Python网络爬虫与文本分析

案例实战 | 企业信息数据采集

使用文本相似度可以识别变化的时间点

PNAS | 文本网络分析&文化桥梁Python代码实现

tomotopy | 速度最快的LDA主题模型

在会计研究中使用Python进行文本分析

文本分析方法在《管理世界》(2021.5)中的应用

SciencePlots | 科研样式绘图库

Wow~70G上市公司定期报告数据集

YelpDaset: 酒店管理类数据集10+G  

极简浏览器启动页StartPage分享

doccano|为机器学习建模做数据标注

使用WeasyPrint自动生成pdf报告文件

推荐 | 社科(经管)文本分析快速指南

100min视频 | Python文本分析与会计

Python数据挖掘2022.05.16工作坊开始报名啦

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存