首页 > 解决方案 > 如何在词嵌入中发现性别偏见?

问题描述

我有glove.twitter.27B.200d.txt词嵌入。这些嵌入GloVe格式。我w2v使用以下代码将其转换为格式:

model = KeyedVectors.load_word2vec_format(
"data/glove.twitter.27B.200d.w2v.txt", binary=False
)

len(model.vocab) == 1193514

这个词嵌入中存在性别偏见:

model.similarity("man", "kitchen") == 0.32785824

model.similarity("woman", "kitchen") == 0.40180725

我想在这个词嵌入中找到一个性别偏见方向,但不确定如何。

标签: pythonnlplinear-algebraword2vecword-embedding

解决方案


你可以使用这篇论文(Man is to Computer Programmer as Woman is to Homemaker? Debiasing Word Embeddings)方法:

为了更稳健地估计偏差,我们将汇总多个配对比较。通过组合几个方向,例如 在此处输入图像描述

g ∈ R^d确定在嵌入中很大程度上捕捉性别的性别方向。这个方向有助于我们量化单词和关联中的直接和间接偏见。

因此,首先,生成一些用于生成性别子空间的预定义配对差异。然后:

为了识别性别子空间,我们采用十个性别对差异向量并计算其主成分(PC)。如图 6 所示,有一个方向可以解释这些向量中的大部分方差。第一个特征值明显大于其余特征值。请注意,从 10 个噪声向量的有限样本中的随机性来看,人们预计特征值会减少。然而,同样如图 6 所示,由于随机抽样而观察到的下降更加渐进和均匀。因此,我们假设由单位向量 g 表示的顶部 PC 捕获了性别子空间。一般来说,性别子空间可能是更高维度的,我们所有的分析和算法(如下所述)都适用于一般子空间。

在此处输入图像描述

PC分析生成的性别子空间的生成向量g如何确定性别偏差方向。最后,测量DirectBias

为了衡量直接偏见,我们首先确定对于所讨论的应用程序应该是性别中立的词。如何生成这组性别中性词在第 7 节中描述。​​给定性别中性词,用 N 表示,以及从上面学到的性别方向 g,我们将嵌入的直接性别偏见定义为: 在此处输入图像描述


推荐阅读