算了,落后太多都不好意思说自己是搞大数据的了,最近被项目缠身都没有好好进修技术,有时候做出工作成绩与保持饥饿学习状态不应该成为矛盾,至此,加油!
自然语言理解的问题要转化为机器学习的问题,第一步肯定是要找一种方法把这些符号数学化。词向量就是用来将语言中的词进行数学化的一种方式。
一种最简单的词向量方式是 one-hot representation,就是用一个很长的向量来表示一个词,向量的长度为词典的大小,向量的分量只有一个 1,其他全为 0, 1 的位置对应该词在词典中的位置。但这种词表示有两个缺点:(1)容易受维数灾难的困扰,尤其是将其用于 Deep Learning 的一些算法时;(2)不能很好地刻画词与词之间的相似性(术语好像叫做“词汇鸿沟”)。
另一种就是你提到 Distributed Representation 这种表示,它最早是 Hinton 于 1986 年提出的,可以克服 one-hot representation 的缺点。其基本想法是:
通过训练将某种语言中的每一个词映射成一个固定长度的短向量(当然这里的“短”是相对于 one-hot representation 的“长”而言的),将所有这些向量放在一起形成一个词向量空间,而每一向量则为该空间中的一个点,在这个空间上引入“距离”,则可以根据词之间的距离来判断它们之间的(词法、语义上的)相似性了。
一种生成词向量的途径是利用神经网络算法。
统计共同出现的次数(LDA,一种贝叶斯概率模型)。
根据相似的上下文(word2vec,即NN)。
词向量后期可以怎么使用呢?