NLP词向量
词的向量表征,也称为word embedding,词向量是自然语言处理中常见的一个操作,是搜索引擎、广告系统、推荐系统等互联网服务背后常见的基础技术。
实际应用:
比较两个词或者两段文本之间的相关性,把词表现为计算机适合处理的方式,最自然的方式就是向量空间模型(vector space model),在这种方式里,每个词都被表示成一个实数向量(one-hot vector),其长度为字典大小,每个维度对应字典的每个词,除了对应维度上的值是1,其他元素都是0.
辨识两个词之间的关系的啥时候,One-hot vector 之间的距离由于其向量正交,每个词的信息量都太小,所以我们需要更多的信息-从大量数据里通过机器学习方法归纳出来的知识。
在机器学习领域中,词向量模型(word embedding model)就是其中的一类,通过词向量模型可将one-hot vector映射到一个唯独更低的实数向量(embedding vector),如embedding(母亲节)=[0.3,4.2,-1.5,...],embedding(康乃馨)=[0.2,5.6,-2.3,...]。在这个映射到的实数向量中,我们会用概率模型、共生矩阵或神经网络模型(词向量模型)
在神经网络求词向量前,传统的做法是统计一个词语的共生矩阵(即词与词之间一块出现的值分布)X,X是一个|V|×|V|大小的矩阵,表示在所有语料中,词汇表V(vocabulary)中第i个词和第j个词同时出现的次数,|V|为词汇表的大小。对X做矩阵分解(如奇异值分解),得到的U即视为所有词的词向量:
缺点:
1;由于很多词没有出现(比如网络新兴词),导致矩阵极其稀疏,因此需要对词频做额外处理来达到好的矩阵分解效果;
2;矩阵非常大,维度太高(通常达到×的数量级);
3;需要手动去掉停用词(如although,a,...),不然这些频繁出现的词也会影响矩阵分解的效果;
基于神经网络的模型不需要计算和储存一个在全语料上统计产生的大表,而是通过学习语义信息得到词向量。
语言模型:
语言模型旨在为语句的联合概率函数建模,其中表示句子中的第i个词,语言模型的目标是,希望模型对有意义的句子赋予大概率,对没有意义的句子赋予小概率,
N-gram nerual model:
n-gram是一种重要的文本表示方法,表示一个文本中连续的n个项,基于具体的应用场景每一项可以使一个字母、单词或者音节。n-gram模型也是统计语言模型中的一个重要方法,用哪个n-gram训练语言时,一般用每个n-gram的历史n-1个词语组成的内容来预测第n个词。
文本中的神经概率语言模型(Nerual Network Language Model, NNLM)通过一个线性映射和一个非线性隐层连接,同事学习了语言模型和词向量,即通过大量语料得到词语的向量表达,通过这些向量得到整个句子的概率。因所有的词语都通一个低维向量来表示,用这种学习语言模型可以克服维度灾难