训练中文词向量 word2vec

本文介绍了word2vec的基本概念,包括CBOW和skip-gram模型,以及Hierarchical Softmax和Negative Sampling两种优化算法。此外,还提供了从维基百科数据集构建中文词向量的实例,涉及数据预处理、opencc转换和gensim库的使用。
摘要由CSDN通过智能技术生成

理论:

embedding简单来说就是用向量表示词汇,最早使用的都是one-hot向量,一个维度代表一个单词,长度为词典的长度。优点是简单明了,缺点是占用空间大,无法表示词与词之间的相似度。2013年google提出了word2vec,主要包含两个模型CBOW(continuous bag of word)和skip-gram。通过模型将词向量减小到特定的维度,这种方法一定程度上可以通过余弦相似度等方法表示词与词的相似度。有个例子比较有名: 'king' - 'queen' 近似与 'man' - 'woman' 相等。

  • CBOW:
    CBOW考虑一个词(中心词)周围几个词(背景词)对这个词的影响,具体考虑周围几个词由窗口(window size)决定。模型的输入是这些背景词,期望的输出是中心词。
  • skip-gram:
    skip-gram与CBOW相反,希望通过中心词来预测背景词。模型输入是中心词,希望输出的是周围的背景词。

算法上的改进:

  • Hierarchical Softmax:先将所有词构造成一个霍夫曼树。CBOW将原本的DNN改成三层,输入层是窗口内的词向量,投影层是对这些词向量做平均得到X,输出层是一个霍夫曼树。skip-gram类似,没有投影层,输出层也是一个霍夫曼树,但方向相反,从根节点出发。
    当字典维度非常大时softmax计算相对困难,时间很长,Hierarchical Softmax提高了计算效率,从O(N)到O(logN)。
    但缺点是对于生僻词,计算成本仍然很高(霍夫曼树词频越高越靠近根节点)

霍夫曼树可以视为一个二分类的树,对于每一个非叶节点(即除了最低那层节点),节点的向量表示为θ,会有两个子节点,选择路径可以当做一个二分类的过程,正类为1,负类为0,用sigmoid函数判断,归为正类概率是1/[1+exp(-X^T * θ)],反之为exp(-X^T * θ) / [1+exp(-X^T * θ)]。

  • Nagative Sampling:负采样的本质思想是既然维度大,权重多,每次更新成本大,那就随机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值