您好,欢迎来到尔游网。
搜索
您的当前位置:首页项目实战(三) - - 实现词向量模型Word2vec

项目实战(三) - - 实现词向量模型Word2vec

来源:尔游网

1. 词向量模型–Word2vec

词向量模型认为如果两个词相似,那么他们周围的词很有可能也是相似的,或者如果中心词的周围词相似那么这个中心词可能也是相似的

2. 两种网络结构

2.1 CBOW

2.1.1 算法任务

CBOW 的目标是根据上下文出现的词语来预测当前词的生成概率
具体来说,不考虑上下文的词语输入顺序,CBOW是用上下文词语的词向量的均值来预测当前词。CBOW的好处是对上下文词语的分布在词向量上进行了平滑,去掉了噪声,因此在小数据集上很有效

2.1.2 算法步骤

随机生成一个大小为(vocabulary_size, embedding_size)的embedding矩阵(即所有单词的词向量矩阵,每一个行对应一个单词的向量)
对于某一个单词(中心词),从embedding矩阵中提取其周边单词的词向量
求周边单词的词向量的均值向量
在该均值向量上使用logistic regression进行训练,softmax作为激活函数
期望logistic regression得到的概率向量可以与真实的概率向量(即中心词的one-hot编码向量)相匹配。
缺点:均值处理未考虑语序

2.2 Skip-gram

2.2.1 算法任务

Skip-gram 是根据当前词来预测上下文中各词的生成概率

2.2.2 算法步骤

随机生成一个大小为(vocabulary_size, embedding_size)的embedding矩阵(即所有单词的词向量矩阵,每一个行对应一个单词的向量)
对于某一个单词,从embedding矩阵中提取单词向量
在该单词向量上使用logistic regression进行训练,softmax作为激活函数
期望logistic regression得到的概率向量可以与真实的概率向量(即周边词的one-hot编码向量)相匹配。
缺点:计算量依赖于语料

3. Word2Vec特点

  • 无隐层
  • 使用双向上下文窗口
  • 上下文词序无关(CBoW)
  • 输入层直接使用低维稠密表示
  • 投影层简化为求和(平均)

4. 如何优化

①层次Softmax: 使用HuffmanTree来编码输出层的词典,只需要计算路径上所有非叶子节点词向量的贡献即可,计算量为树的深度

②负例采样: 由于上下文是有限的,非上下文的部分是极大量的,为了简化计算,采用负例采样

5. 代码实现与解析

  • 导入相关包
import torch
// 神经网络工具箱torch.nn 
import torch.nn as nn  
// 神经网络函数torch.nn.functional
import torch.nn.functional as F  
// PyTorch读取训练集需要用到torch.utils.data类
import torch.utils.data as tud  
// 参数更新和优化函数
from torch.nn.parameter import Parameter 
// Counter 计数器
from collections import Counter 
// SciPy是基于NumPy开发的高级模块,它提供了许多数学算法和函数的实现
import scipy 
// 余弦相似度函数
from sklearn.metrics.pairwise import cosine_similarity 
// 这里较常见简写
import numpy as np,random,math,pandas as pd,sklearn 
  • 数据预处理

  • 从文本文件中读取所有的文字,通过这些文本创建一个vocabulary

  • 由于单词数量可能太大,只选取最常见的MAX_VOCAB_SIZE个单词

  • 添加一个UNK单词表示所有不常见的单词

  • 词编码,创建词典

  • 定义Dataset与DataLoader

// 构造Dataset
class WordEmbeddingDataset(tud.Dataset): #tud.Dataset父类
    def __init__(self, text, word_to_idx, idx_to_word, word_freqs

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- axer.cn 版权所有 湘ICP备2023022495号-12

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务