NLP笔记(word embedding)
针对NLP中的一些基本概念和知识,做一些摘记
word embedding
语言表示
语言表示研究的是如何把自然语言文本转化为可以被算法模型处理的数据
目前使用得比较多的语言表示方法被称为:“基于词的分布式表示(distributed representation)”
- Harris 在 1954 年提出的分布假说( distributional hypothesis)为这一设想提供了理论基础:上下文相似的词,其语义也相似。
- Firth 在 1957 年对分布假说进行了进一步阐述和明确:词的语义由其上下文决定( a word is characterized by thecompany it keeps)
语言模型
常见的语言模型包括:N元文法模型(N-gram Model)、unigram model、bigram model、trigram model等等
词的分布式表示
词的分布式表示方法一般分为3类,分别是:基于矩阵的分布式表示,基于聚类的分布式表示,基于神经网络的分布式表示
常见到的Global Vector 模型( GloVe模型)是一种对“词-词”矩阵进行分解从而得到词表示的方法,属于基于矩阵的分布表示
基于神经网络的分布表示又称为词向量、词嵌入,神经网络词向量模型与其它分布表示方法一样,均基于分布假说,核心依然是上下文的表示以及上下文与目标词之间的关系的建模。
word2vec
Word2Vec是由Tomas Mikolov 等人在《Efficient Estimation of Word Representation in Vector Space》一文中提出,是一种用于有效学习从文本语料库嵌入的独立词语的统计方法。其核心思想就是基于上下文,先用向量代表各个词,然后通过一个预测目标函数学习这些向量的参数。Word2Vec 的网络主体是一种单隐层前馈神经网络,网络的输入和输出均为词向量。
该算法给出了两种训练模型,CBOW (Continuous Bag-of-Words Model) 和 Skip-gram (Continuous Skip-gram Model)。CBOW将一个词所在的上下文中的词作为输入,而那个词本身作为输出,也就是说,看到一个上下文,希望大概能猜出这个词和它的意思。通过在一个大的语料库训练,得到一个从输入层到隐含层的权重模型;而Skip-gram它的做法是,将一个词所在的上下文中的词作为输出,而那个词本身作为输入,也就是说,给出一个词,希望预测可能出现的上下文的词,2-gram比较常用。
以前的word嵌入方法在今天仍然很重要
Word2Vec和GLoVE是在2013年左右出现的。随着所有的新研究,你可能认为这些方法不再相关,但你错了。Francis Galton爵士在19世纪后期提出了线性回归的方法,但作为许多统计方法的核心部分,它今天仍然适用。
类似地,像Word2Vec这样的方法现在是Python NLP库(如spaCy)的标准部分,在spaCy中它们被描述为“实用NLP的基石”。如果你想快速分类常见的文本,那么word嵌入就可以了。
Word2Vec等方法的局限
- 每个词只能嵌入一个向量
- 它们很难在大型数据集上训练
- 你无法调整它们。为了使他们适合你的领域,你需要从零开始训练他们
- 它们不是真正的深度神经网络。他们被训练在一个有一个隐藏层的神经网络上
参考: