词嵌入技术在社会科学领域进行数据挖掘常见39个FAQ汇总
Rodriguez, Pedro L., and Arthur Spirling. "Word embeddings: What works, what doesn’t, and how to tell the difference for applied research." The Journal of Politics 84, no. 1 (2022): 101-115.
论文作者是政治学领域的, 但是词嵌入方法在社科研究是通用的,大邓觉得挺有用的,使用chatGPT进行翻译+大邓校对, 耗时约2个小时。词嵌入相关内容有
1. 什么是词嵌入?
字面上,词嵌入(Embeddings)是使用稠密向量表示一个词语的语义。学者们已经表明,通过比较这些词向量之间的距离,我们可以了解“人类”如何理解单词的含义。因此,如果我们有一个语料库,比较 税收 与 社会团体(“保守派”、“社会主义者”) 之间的距离, 按照语义,税收 应该距离 社会主义者 跟多一些,毕竟收上来的钱是为了社会大众服务,有社会主义的成分。在词嵌入空间中,词向量含有丰富的信息,例如可以做类比。西班牙之于马德里, 正如德国至于柏林、法国之于巴黎。
2. 我没有听说过它们。这是一个新的想法吗?
不是。这个想法相当古老,至少可以追溯到20世纪50年代。如果非要说「新」,变化的只是相比过去,现在可以更快、更容易获取嵌入。
3. 好的。那么这个“旧”的想法是什么?
Firth(1957)有一个人人引用的谚语:
You shall know a word by the company it keeps
通过一个单词所处的语境,我们可以了解该单词的含义。该谚语源于英国语言学家 J.R. Firth 的理论,他认为单词的含义是由其周围的语境和与之相伴的其他单词所决定的,因此我们需要通过单词出现的上下文来理解其含义。这一理论在语言学、自然语言处理等领域有着广泛的应用。
简而言之,这就是所谓的 “分布假设” 。字面上,这个想法是,出现在类似的 上下文Context 中的单词可能意味着相似的事物。如果“咖啡”和“茶”总是接近于“杯子”,那么我们可能会推断出“咖啡”和“茶”是相似的。
利用这一洞见的模型有时被称为 分布语义模型(distributional semantic models, DSMs)。
4. 在这种情况下,“上下文”字面上是什么意思?
在嵌入文献中,上下文通常是一个局部的对称窗口,围绕一个词展开。因此,假设我们的句子是:
"We then heard some nice, relaxing music that gently worked to a crescendo."
“然后我们听到一些美妙、轻松的音乐,它慢慢地推向高潮。”
这里以 music 为中心的一个对称窗口可以是 (nice, relaxing) 和 **(that, gently)**。
三个词的窗口可以是 (some, nice, relaxing) 和 ("that, gently, worked) 。窗口内music前后的词就是ta的上下文。
5. 所以所有的DSMs都使用本地窗口吗?
不是的。分布语义模型(DSMs)包括像隐含狄利克雷分配(LDA)这样的东西,政治学通常用于“主题模型”。但是它们通常不使用本地窗口。
6. 我明白了!所以嵌入模型没有做“词袋”假设?
好吧,这要看你的意思是什么。显然,本地窗口在某种意义上有助于考虑词序。但是在窗口内,模型通常将其视为词袋(即无序的)。
7. 嵌入向量与我在文本数据课程中学习的“向量空间”模型有关系吗?
有也没有。在典型的向量空间模型中,每个文档都是一个实值向量(通常是计数)。因此,“dog eat dog world”可能表示为[2, 1, 1]
,其中第一个元素表示“dog”,第二个表示“eat”,第三个表示“world”等等。在词嵌入中,每个单词都有自己的向量,而这些向量是由模型学习的。它与向量空间模型有关,因为单词在多维空间中以向量形式表示。
8. 听起来很有趣。但是使用单词嵌入有什么好处?
事实证明,以这种方式表示单词对于许多“下游”的自然语言处理和机器学习任务是有帮助的。例如,词性标注:嵌入可以帮助我们区分单词在给定上下文中使用的“意义”。更普遍地,了解概念之间的关系可能是有用的:如果我们知道在我们的语料库中,“雨伞”比“晒霜”更接近于“雨衣”,我们可能想要向那些寻找雨衣而不是晒霜的人推广雨伞。在政治学中的一个自然应用是建立词典:如果“共和党”在嵌入空间中靠近“保守派”和“新保守主义者”,那么这可能告诉我们,我们应该将所有这些都视为美国政治中右翼意识形态的例子。
有一个经典的关于嵌入的运算公式, 假设我们有以下单词的嵌入向量:“国王”,“女王”,“男人”,“女人”。对于某些规范,事实证明,大致上有:“国王”-“男人”+“女人”=“女王”。也就是说,“国王”类似于“女王”,就像“男人”类似于“女人”一样。
9. 你已经说服我了。那么如何获得这些嵌入?
你需要一个模型。有很多很多选择,从2000年初期的 **神经neural ** 网络模型开始。
10. 哇,“神经”听起来非常复杂啊?
不,实际上不是。这些模型也已经存在很长时间了(至少自1990年代末/2000年代初以来)。重申一下,它们只是因为现在算力最近变得快速,具有可扩展性。
11.我应该使用哪种模型?
由你自己决定,但最受欢迎的是:
模型 | 年份 | 资料 |
---|---|---|
Word2Vec | 2013 | 论文 https://arxiv.org/pdf/1310.4546.pdf 代码 https://code.google.com/archive/p/word2vec/ |
Glove | 2014 | 网站 https://nlp.stanford.edu/projects/glove/ |
12. 什么是 Word2Vec?
它是一种实现 词嵌入 的方法,有两种不同的类型(称为“体系结构”):
连续词袋(CBOW)。这假设您想要在给定上下文词(来自本地窗口)的情况下预测目标词(上面的“音乐”),这有点像做英文完形填空。 Skip-gram。这假设您想要预测给定特定单词(在我们的例子中为 music )的上下文词(在 music 周围的本地窗口中的内容)。
13. Word2Vec如何拟合数据?
它通过单词与单词之间进行,尝试预测目标单词或上下文,具体取决于所需的体系结构。最终,它使用神经网络模型来完成这个任务。
14. Word2Vec 是深度学习吗?
不是的。word2vec 的神经网络只有一层,所以它不是真正的 深度学习Deep Learning , 而是“浅层学习”。
15. 什么是 GloVe ?
GloVe 的全称是 Global Vectors for Word Representation, 它也是一种生成 词嵌入 的方法,字面上表示用于单词表示的全局向量。
16. GloVe 如何拟合数据?
它使用 “全局”(聚合)共现计数。请注意,Word2Vec
不会这样做:它按单词进行处理,从不将整个语料库视为一个整体。
17. 那么 GloVe 不是深度学习?
不是,但Word2Vec
也不是(参见上面)。
17. 哪个更好?GloVe 还是 Word2Vec?
没有。首先,从根本上讲,它们在所做的事情上是基本相似的。有一些证据表明,在某些任务,GloVe 更稳定,表现更好。
在我们的研究中,我们发现,“开箱即用”,相对于Word2Vec
(skipgram),GloVe
最初在建议提示词的良好最近邻方面表现更好(请参见下面的#27)。但是,一旦我们将Word2Vec
词汇子集排除了非常罕见的单词,就在人类编码器偏好方面表现几乎相同。
18. 我有一个语料库,如何使用这些模型?
你使用 word2vec 或 glove 代码, 并将文本数据(语料)导入到代码中, 运行得到词嵌入模型文件。大邓的 cntext库支持两种算法的实现,需要注意的是, glove训练速度较慢, 而斯坦福大学训练Glove使用的是C语言代码。
如果担心Glove速度,就用斯坦福的代码。 如果想简单点,不考虑速度,可以考虑大邓整理出的cntext库
https://nlp.stanford.edu/projects/glove/
19. 嗯。听起来很复杂。还有其他选择吗?
很多时候自己训练的词嵌入模型耗时耗力, 其实如果你研究对象所涉及的数据与已有研究机构使用的语料是类似的, 也可以使用研究机构公开出的 预先训练好的词嵌入模型 。
20. 如果我的语料库与维基百科完全不同怎么办?
你可以将 word2vec 或 glove 拟合到你的文本数据中。但请注意,拟合的数据越多,词嵌入模型任务表现的越好)。因此,你可能需要相当多的数据:几百M 几个G 甚至更多,而不是区区 50 份宣言文档。
21. 好的,本地训练还是使用预训练模型。还有哪些决策需要做?
回到 FAQ 18,你需要做出决策的关键参数包括:
窗口大小:也就是你的单词周围的(对称的)窗口大小。例如2、4、6、10等。 嵌入向量长度:代表单词的向量大小。例如50、100、300、450等。
需要注意的是,即使你使用 预训练的词嵌入模型,你也需要做出这些决策,因为你将根据需求下载不同的词嵌入预训练模型。