|
|
51CTO旗下网站
|
|
移动端
创建专栏

除了自然语言处理,你还可以用Word2Vec做什么?

这篇文章的目标是展示我们如何能够使用一种词嵌入方法,Word2Vec(2013,Mikolov 等),来把一个具有大量模态的分类特征转换为一组较小的易于使用的数字特征。

作者:机器之心编译|2017-08-17 16:50

当使用机器学习方法来解决问题的时候,拥有合适的数据是非常关键的。不幸的是,通常情况下的原始数据是「不干净」的,并且是非结构化的。自然语言处理(NLP)的从业者深谙此道,因为他们所用的数据都是文本的。由于大多数机器学习算法不接受原始的字符串作为输入,所以在输入到学习算法之前要使用词嵌入的方法来对数据进行转换。但这不仅仅存在于文本数据的场景,它也能够以分类特征的形式存在于其他标准的非自然语言处理任务中。事实上,我们很多人都在苦苦研究这种分类特征过程,那么词嵌入方法在这种场景中有什么作用呢?

这篇文章的目标是展示我们如何能够使用一种词嵌入方法,Word2Vec(2013,Mikolov 等),来把一个具有大量模态的分类特征转换为一组较小的易于使用的数字特征。这些特征不仅易于使用,而且能够成功学习到若干个模态之间的关系,这种关系与经典词嵌入处理语言的方式很相似。

Word2Vec

观其伴,知其意。(Firth, J. R. 1957.11)

上述内容准确地描述了 Word2Vec 的目标:它尝试通过分析一个词的邻词(也称作语境)来确定该词的含义。这个方法有两种不同风格的模型:CBOW 模型和 Skip-Gram 模型。在给定语料库的情况下,模型在每个语句的词上循环,要么根据当前单词来预测其邻词(语境),要么根据当前的语境来预测当前的词,前者所描述的方法被称作「Skip-Gram」,后者被称作「连续性词包,continuous bag of words(CBOW)」。每个语境中单词数目的极限是由一个叫做「窗大小,Window Size」的参数来决定的。

两种 Word2Vec 结构,其中 w(t) 代表的是当前单词,w(t-2)..w(t+2) 代表的是语境单词。(Mikolov 等人. 2013)

因此,如果你选择了 Skip-Gram 方法,Word2Vec 就会使用一个浅层的神经网络,也就是说,用一个只具有一个隐藏层的神经网络来学习词嵌入。网络首先会随机地初始化它的权重,然后使用单词来预测它的语境,在最小化它所犯错误的训练过程中去迭代调整这些权重。有望在一个比较成功的训练过程之后,能够通过网络权重矩阵和单词的 one-hot 向量的乘积来得到每一个单词的词向量。

注意:除了能够允许将文本数据进行数字表征之外,结果性嵌入还学习到了单词之间的而一些有趣的关系,可以被用来回答类似于下面的这种问题:国王之于王后,正如父亲之于......?

如果你想了解更多的关于 Word2Vec 的细节知识,你可以看一下斯坦福大学的课程(https://www.youtube.com/watch?v=ERibwqs9p38),或者 TensorFlow 的相关教程(https://www.tensorflow.org/tutorials/word2vec)。

应用

我们在 Kwyk 平台上(https://www.kwyk.fr/)上提供在线的数学练习。老师给他们的学生布置作业,每次练习完成的时候都会有一些数据被存储下来。然后,我们利用收集到的数据来评价每个学生的水平,并且给他们量身制作对应的复习来帮助他们进步。对于每一个被解答的练习作业,我们都保存了一系列的标识符来帮助我们区分以下信息:这是什么练习?作答的学生是谁?属于哪一个章节?....... 除此之外,我们还会根据学生是否成功地解答了这个题目来保存一个分数,要么是 0,要么是 1。然后,为了评价学生的分数,我们必须预测这个分数,并且从我们的分类器中得到学生成功的概率。

正如你所看到的,我们的很多特征都是可以分类的。通常情况下,当模态的数目足够小的