前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NLP: Word Embedding 词嵌入(Part1: 基础和 Word2Vec)

NLP: Word Embedding 词嵌入(Part1: 基础和 Word2Vec)

作者头像
JiahuiZhu1998
修改2023-06-19 14:36:47
8980
修改2023-06-19 14:36:47
举报

离散表示 (Word Embedding)

1. OneHot

例如:[1, 0, 0, 0, 0, 0, 0, 0, 0, 0] 这个 one-dimension vector 就代表这是整个句子里的第一个词

  • 如果句子很长,那么 one-dimension vector 也会很长,对资源消耗很大
  • OneHot 方式并不能记录word 和 word 之间的关系

2. Bags-Of-Words Model 词袋模型

记录的是每个单词在一句话中出现的频率 frequency

例如:John likes to watch movies. Mary likes too; “likes” 在这句话中出现两次,vector是 [1,2,1,1,1,0,0,0,1,1]

  • 并不是一个word 的 frequency 越高,这个word的weight 就应该越大
  • Bags-Of-Words 也不能记录 word 和 word 之间的关系

3. TF-IDF (term frequency–inverse document frequency) 词频-逆文本频率指数

如果某个单词在一篇文章的出现的频率很高,同时在其他文章中很少出现,则认为该单词大概率是一个关键词

下图 是词频term frequency,代表 单词 w 在 文档 d 中出现的频率

下图是逆文档频率 inverse document frequency, 代表 单词w 在 文档数 N 中出现的比例,比例越小代表单词w越重要

N 表示文档总数,N(w) 代表含有单词w的文档个数
N 表示文档总数,N(w) 代表含有单词w的文档个数

为了防止 IDF 分母不为0,对 IDF 进行了平滑处理

TF-IDF 完整的计算公式:

4. N-gram

基于假设(来自Markov Assumption):第n个词的出现只和前n-1个词相关,和之后的词无关;整个句子出现概率=每组词出现概率相乘

  • N=1,又称 Unigram,将句子以每个单词划分 ["I","want","to","eat","chinese", "food"]
  • N=2,又称 Bigram,将句子以两个单词一组划分 ["I want", "want to", "to eat", "eat chinese", "chinese food"]
  • N=3,又称 Trigram,将句子以三个单词一组划分 ["I want to", "want to eat", "to eat chinese", "eat chinese food"]
  • 接着,我们用最大似然估计计算每组词出现的概率
  • Unigram 的 最大似然估计是 P(w_i) = C(w_i)/M ,其中C代表单词在整个语料库出现频率,M 表示count(word token)
  • Bi-gram 的 最大似然估计是
  • N-gram 的 最大似然估计是
  • 所以一个句子出现的概率计算公式如下:
P(T)=P(w1)*p(w2)*p(w3)***p(wn)=p(w1)*p(w2|w1)*p(w3|w1w2)** *p(wn|w1w2w3...)
  • 由于上述公式过于复杂,可以用Hidden Markov Chain 简化,简化后变成:
P(T) = P(w1)P(w2|w1)P(w3|w1w2)…P(wn|w1w2…wn-1)≈P(w1)P(w2|w1)P(w3|w2)…P(wn|wn-1)
  • 而 Bigram 和 Trigram 又在上述公式上做了个性化衍生:
Bi-Gram: P(T)=p(w1|begin)*p(w2|w1)*p(w3|w2)***p(wn|wn-1)
Tri-Gram: P(T)=p(w1|begin1,begin2)*p(w2|w1,begin1)*p(w3|w2w1)***p(wn| wn-1,wn-2)
  • 以 Bi-gram 为例:

分布式表示 (Word Embedding)

1. Co-Occurance Matrix 共现矩阵

如果拥有3句话I like deep learning. I like NLP. I enjoy flying. 则构成如下共现矩阵; 共现矩阵一定是对称的

共现矩阵例子
共现矩阵例子

Neural Network 表示 (Word Embedding)

1. NNLM(Neural Network Language model)

  • 目标是通过n-1个word,计算出第n个word是什么
w代表每一个word,C(w)代表word vector
w代表每一个word,C(w)代表word vector

NNLM 公式:

将 每组word 转成one-hot,再转成 C(w),再通过BP+SGD获得最好的C(w)
将 每组word 转成one-hot,再转成 C(w),再通过BP+SGD获得最好的C(w)

2. Word2Vec

把每一个词映射到一个vector, CBOW 和 skip-gram都是word2vec的一种;

通常使用 Negative Sample(负采样) 或者 Hierarchical Softmax 提高速度;

word2vec是一个两层的Neural Network 模型, 训练结果表示词和词之间的关系;

目前 word2vec 无法解决多义词关系,也无法针对特定任务做动态优化

3. CBOW (Word2Vec的变种 Continuous Bags of Words 连续词袋模型)

CBOW 通过Context预测current word

把words进行one-hot编码然后通过一个hidden layer 求和然后再通过softmax得到每一个word的生成概率

然后通过neural network 训练weight让每一个word的生成概率max

4. Skip-gram (Word2Vec的变种)

Skip-gram 通过 current word 预测 context

把 current word 作为 x, 把句子中的其他words作为y; 还是把words进行编码然后通过hidden layer 和 softmax求概率

由于一层softmax计算量大,会用多层softmax(即Hierarchical Softmax)

5. Sense2Vec (Word2Vec的变种)

能够处理更加精准的word vector, 比如 duck这个word的多义性需要多个词向量去表示

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 离散表示 (Word Embedding)
    • 1. OneHot
      • 2. Bags-Of-Words Model 词袋模型
        • 3. TF-IDF (term frequency–inverse document frequency) 词频-逆文本频率指数
          • 4. N-gram
          • 分布式表示 (Word Embedding)
            • 1. Co-Occurance Matrix 共现矩阵
            • Neural Network 表示 (Word Embedding)
              • 1. NNLM(Neural Network Language model)
                • NNLM 公式:
              • 2. Word2Vec
                • 3. CBOW (Word2Vec的变种 Continuous Bags of Words 连续词袋模型)
                  • 4. Skip-gram (Word2Vec的变种)
                    • 5. Sense2Vec (Word2Vec的变种)
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档