美文网首页
自然语言处理(NLP)知识整理及概述(三)

自然语言处理(NLP)知识整理及概述(三)

作者: JudeArcturus | 来源:发表于2019-01-03 20:04 被阅读4次

Vector representation and models for word embedding

Vector space model

为了能用数学的方式处理解决NLP问题,必须将language model 向量化、数值化。
方法有: one-hot, 用0和1 标识句子里某个单词出现与否。此时每一个单词可以用一个长度为V(语料库中vocabulary 的数目)的向量来表示。 在此基础上,将一个句子中每个单词的向量相加,就得到了 词袋模型
词袋模型虽然过去用的比较广泛,但现在已经很大程度上被 word embedding 取代了。

Word embedding

词袋模型的问题在于无法知道不同单词之间是否存在关联, 而单词的意思往往与上下文相关。 例如: buy a car, purchase a car, get a car。 buy, purchase, get都与 a car 结合在一起使用,因此可以认为 这三个词有着类似的意思。基于这一事实, 可以建立一个 co-occurrence matrix 来判断不同单词之间的联系。
建立方式:

  1. 给定一个text或corpus 作为输入,以其vocabulary的总数目N 建立一个N×N的矩阵
  2. 设置一个偏移量 Δ, 用以表示 co-occurrence 的距离
  3. 对于矩阵的每一个元素 wij, 其值对于 第 i 个单词, 第j个单词在偏移距离Δ内出现的次数统计。
  4. 将第 i 行的所有值作为一个向量 vi, 若向量 vi1与 vi2 越相似(向量长度及向量夹角), 那么说明对应的两个词越相近。

然而,这种方法最大的问题在于矩阵非常庞大,而且非常稀疏。因此必须进行SVD降维处理。

Word2vec 和Glove

由于SVD存在很多限制:例如不能更新模型,一旦有新词加入,只能重新训练。此外, SVD的时间复杂度也很高,而且结果矩阵依然可能维度过高且稀疏。
因此,当前state-of-the-art 是word2vec 和glove。

word2vec

包含两种训练方法:

  • Continuous bag of words model (CBOW): 根据上下文, 预测某一个单词出现的概率
  • Skip gram model: 给定一个单词 ,预测它的上下文可能是什么。


word2vec的问题在于没有考虑data中重复数据的情况,也即是说,模型可能在反复学习同一句话的过程中,把部分词的权重加得过高,导致模型偏差。

Glove

与 word2vec思路相似, 采用了 count-based的方法, 并使用 matrix factorization 进行降维。

由于采用了与 co-occurrence matrix 类似的思路,因此可以应对corpus中重复数据的现象。但训练时只考虑不为零的部分。

相关资源

文本分类

应用实例: 垃圾邮件分类、文本主题划分、情绪分析、语言识别

分类方法

  • rule-based classifiers
  • 有监督分类

有监督分类训练流程

以twitter sentiment analysis为例,将twitter 分为 positive、negative、 neutral 三类。


sentiment analysis.png

相关阅读

Text classification with TensorFlow
Sentiment Analysis for reviews using IMDB Dataset with CNN and LSTM
Another Twitter sentiment analysis with Python

相关文章

网友评论

      本文标题:自然语言处理(NLP)知识整理及概述(三)

      本文链接:https://www.haomeiwen.com/subject/qucqrqtx.html