当前位置:   article > 正文

分词 数值化(词嵌入 word embeding)_char2vec

char2vec

一、word embeding 传统方式

  1. python 工具包:
  2. gensim -------- word2vec、docvec ...

0、BOW ——> TF-IDF  

  • BOW:词袋法(词的频数)    ---------   机器学习
  1. BoW 模型因为其简单有效的优点而得到了广泛的应用。其基本原理可以用以下例子来给予描述。给定两句简单的文档:
  2. 文档 1:“我喜欢跳舞,小明也喜欢。”
  3. 文档 2:“我也喜欢唱歌。”
  4. 基于以上这两个文档,便可以构造一个由文档中的关键词组成的词典:
  5. 词典={1:“我”,2:“喜欢”,3:“跳舞”,4:“小明”,5:“也”,6:“唱歌”}
  6. 这个词典一共包含6个不同的词语,利用词典的索引号,上面两个文档每一个都可以用一个6维向量表示(用整数数字0~n(n为正整数)
  7. 表示某个单词在文档中出现的 次数。
  8. 总结:用词频作为特征值
  9. 缺点:类似‘的’‘你’在模型中没有决策作用,却有着较大的特征值。
  • TF-IDF:词频逆向频率           ---------   机器学习
TF-IDF目的:解决BOW ‘的’‘你’特征值过大的问题

            TF-IDF API :文本预处理:TF-IDF API

1、onehot 向量化  

  1. onehot词向量化目的:
  2. 机器学习模型每一个词的特征值使用一个数值来代替,而神经网络输入词是一个向量的结构。
  3. onehot词向量化的两个缺点:
  4. ① 维度较高
  5. ② 没有考虑到词与词的相似性

2、word2vec  ----- 向量保存词语的近似性   ------ 语义分析、文字向量化

  1. word2vec的两个目的:
  2. ① 解决 onehot编码 维度过大问题
  3. ② 保证了词嵌入的向量具有词相似性的信息(余弦相似度)
  1. 1.word2vec 是 利用 N-gram窗口的模型进行滑动,所以它是一个 局部预测 的过程,这一点要区别 fasttext
  2. 2.Skip-gram 和 CBOW 模型
  3. 上面我们提到了语言模型
  4. 如果是用一个词语作为输入,来预测它周围的上下文,那这个模型叫做『Skip-gram 模型』
  5. 而如果是拿一个词语的上下文作为输入,来预测这个词语本身,则是 『CBOW 模型』
  1. word2vec 保证了 近似词向量 余弦相似度较近。 ----- 无监督学习
  2. word2vec 词向量 是否相似的 评判指标:
  3. 两个向量夹角余弦相似度,向量夹角余弦值越大,相似度越高

3、语言模型   ------ 由已知词语序列 推测当前序列的下一个单词的概率

  1. 1、语言模型有什么用?
  2. 语言模型在自然语言处理中占有重要的地位,在语音识别,机器翻译,汉语自动分词和句法分析等都有应用。 因为这些模型
  3. 都会有噪声,都会有几种不同的结果等着我们去选择,这时候就需要知道每种结果的概率,来帮助我们选择。
  4. 2、为什么叫“语言模型”?
  5. 因为这是统计学意义上的模型,又跟语言相关,所以叫语言模型。统计模型指一系列分布,参数模型指一系列可用有限个参
  6. 数表示的模型。word2vec就是一种参数模型,它的参数是矩阵的所有cell。
  7. 3、n-gram的应用场景:
  8. ① n-gram 是一种基于马尔科夫的文本处理思想,在很多模型中都用到这种思想,不是单独存在。例:CBOW、char2vec、text-CNN..
  9. ② n-gram 可以解决 中文语义消岐、中文分词消岐(原理:利用分词词典双向匹配、统计模型HMM等多种分词手段 获取多种
  10. 分词结果,这时就可以用N-gram计算最大概率的分词方式)
  11. 分词方法、分词问题讲解查看链接: https://blog.csdn.net/qq_16555103/article/details/95625946
  12. ③ 句法纠错,即 文本相关性判断(指的是同一句话中前后是否连贯)。 例:相关:我 出生 在 中国 ;
  13. 不相关(语序不通):我 出生 在 看书
  14. ④ 多序列输出模型 中 确定最佳概率的输出序列

 

  1. 语言模型:语言模型的质量评估是基于它们对词语用概率分布的表征能力。攻坚的任务就是已有一串词语序列,预测下一个出现的
  2. 词语将会是什么。
  3. n-gram、bert ....
  4. 1、n-gram:马尔科夫假设,模型输出多个序列时,计算出概率最大的序列。用途很多,常常用于中文词义消歧。
  5. 2、实际 n-gram 统计训练的过程与 tf-idf 相似,需要加上平滑项(拉普拉斯平滑等..)

 

二、 word2vec  ------ 词  > 向量、语义分析

  1. 0、word2vec 是 利用 N-gram窗口的模型进行滑动。
  2. 1、word2vec的作用(比较传统onehot的两个优点):
  3. 单词数值化为词向量,该词向量相比于 onehot 有两个优点:
  4. ① word2vec 词向量的维度不是很高,而onehot词向量的维度 == 去重单词的个数。
  5. 总结:相比于onehot word2vec 具有降维的作用
  6. ② word2vec 词向量 因为用到 n-gram 的思想,根据上下文预测中间词的方式,词向量之间保留了 近义词 的相似
  7. 度(余弦相似度较大)。而onehot的词向量没有保存近义词相似的信息。
  8. 例如: seq1:中国的魔都很繁华
  9. seq2:中国的上海很繁华 >>>>>>>>>> word2vec 词汇表中 上海与魔都 词向量的相似度
  10. 应该很近
  11. 2、word2vec 保证了 近似词向量 余弦相似度较近。 ----- 无监督学习
  12. word2vec 词向量 是否相似的 评判指标:
  13. 两个向量夹角余弦相似度,向量夹角余弦值越大,相似度越高
  14. 3、word2vec 有两种结构:
  15. 如果是用一个词语作为输入,来预测它周围的上下文,那这个模型叫做『Skip-gram 模型』
  16. 而如果是拿一个词语的上下文作为输入,来预测这个词语本身,则是 『CBOW 模型』
  17. 注:下面只介绍 CBOW 结构

1、word2vec 工作过程,即浅层神经网络

        CBOW

2、word2vec 上述浅层神经网络优化,即使用'one-hot 索引' 查词向量

3、word2vec针对FC层的两种优化手段

(1)哈夫曼树 --- 二叉树

  •     构建 Huffman树的过程
huffman树 可以最少搜索次数。

  •     CBOW中 huffman树 的softmax 更新词嵌入表的参数

  1. 1、huffman树的缺点:
  2. 当CBOW中间词太过生僻(VC表中出现频率很低)时,huffman树可能会很深。

(2)负采样    ------- 对负例进行下采样

  •           softmax Loss 构建

  1. softmax Loss 总结为一句话:
  2. 模型迭代趋向于:将softmax正例的概率尽可能接近 1,其他负例更新尽可能接近 0
  •         负采样的softmax损失函数Loss
  1. 1、负采样softmax的原因:
  2. 由于此汇表中词的个数通常是较大的,FC softmax Loss的正例只有一个,而负例却有 VC表 - 1 个:
  3. ① 首先,如果不进行负采样,CBOW的最后一层就要用到FC,参数量较大
  4. ② 假设不考虑FC参数量的问题,FC 层的softmax 考虑的负例样本数是 VC表 - 1 个,计算量太大了。

  (3)负采样TensorFlow代码API

  1. 负采样的实现:
  2. 1. tf.nn.nce_loss --> _compute_sampled_logits-->candidate_sampling_ops.log_uniform_candidate_sampler

 

三、char2vec  ----- 字符  > 向量

            pass

四、doc2vec    ------  语义分析、文本分类/聚类

  1. doc2vec 词向量 是否相似的 评判指标:
  2.     两个doc向量夹角余弦相似度,doc向量夹角余弦值越大,相似度越高 
  1. 1、doc2vec 的构建过程理解:
  2. doc2vec 构建过程与 word2vec构建过程极其相似,仅仅 多了 最后将句子每个embeding词向量合并为一个 句子的embeding向量。
  3. doc2vec 是在 word2vec 的结构上进行的延伸,因此和word2vec一样,doc2vec也有两种结构(DM,DBOW),doc2vec
  4. 是模型中间的产物,它是无监督学习;将 sentence/doc 转化为向量后 可以进行 有监督学习(分类),也可以进行
  5. 无监督学习(聚类)。
  6. 2、doc2vec 的作用:提取句子特征相似性向量,这个向量需要满足:如果两个句子语义越接近,那么他们向量的夹角余弦值越大。
  7. 利用这个提取出来的向量可以用于以下场景:
  8. ① 做语义分析(或者叫语义理解)。 原因:因为doc2vec模型每个相近句子向量的夹角余弦值较小,可以跟据
  9. 这个特点来判断 待测试句子序列 与 历史句子序列 的相似性大小。
  10. ② 做分类问题(有监督的模型训练)。原因: KNN、SVM、LR XGboost 等等 原本使用 句子 TF-IDF 的值作为特征,但
  11. 是该方式没有考虑到词与词相关性的信息,同样也没考虑到句子与句子之
  12. 间的相关性信息;现在用 句子embeding 作为样本,可以使得样本的F1值提升。
  13. ③ 做聚类问题(无监督学习)。原因:Kmeans、密度聚类 等 使用的还是 TF-IDF特征,换做 doc2vec 向量 可以
  14. 使得模型的效果提升。
  15. 3、什么是语义分析理解?
  16. 语义分析是问答系统中 对 用户 输入的序列 进行分析理解,寻找问答库中 与其相似的问答对进行回答。
  17. 因此对于语义理解做问答系统需要知道以下几点:
  18. ① 对用户 输入的序列 ‘理解’ 后,搜索 数据库中最适合的 QA进行回答,所以语义理解的答案并非类
  19. 似 seq2seq + attention 模型 现在编译的,而是与答案直接匹配的。

 

1

五、fasttext、cw2vec

1、FastText 

  1. 1、FastText 与word2vec中CBOW的结构非常相似,不同的是:
  2. ① FastText 中的 embeding词(英文)是 由单词 与 该单词的n-gram向量融合而成的,融合的方式为 求和取平均
  3. ② FastText 使用的是全局 n-gram
  4. ③ FastText 训练过程是有监督学习,针对label进行训练,Word2vec训练为无监督学习,CBOW预测的是中间的词。
  5. 2、中文词汇不可拆解,因此FastText只适合英文 embeding
  1. • 在词向量的训练过程中,增加了subwords特性,其实就是一个词 的character-level的n-gram,比如单词”hello”,长度
  2. 至少为3character-level的ngram的'hel', 'ell', 'llo', 'hell', 'ello'以及'hello',每个 ngram都可以
  3. 使用一个dense的向量zg表示,故最终一个单词可以 表示为: 

                

  1. • FastText在分类中也增加了N-gram的特征,主要是为了通过增加 N-Gram的特征信息来保留词序信息(因为隐层是通过简单的求
  2. 和 平均得到的),比如:某篇文档有3个词,w1、w2、w3,N-gram 取N为2,w1、w2、w3以及bigram w12、w23是新的embe
  3. dding向 量,那么文章的隐层表示为:

            

 

2、cw2vec

1、中文embeding,利用的是FastText的思想

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/344165
推荐阅读
相关标签
  

闽ICP备14008679号