词向量模型之CBOW

CBOW 是通过中心词来预测上下文,然后用这个预测过程中的参数权重来形成一个词向量,具体的操作如下:

  1. 首先需要找一个语料库,比如百科,微博等等。

  2. 然后对这个语料进行分词处理。一般用jieba, 比较快。或者paddla lac(做过分词和词性标注)

  3. 然后对分出来的词做个词频统计,将词频出现较高的词排在前面

  4. 将排序好的词形成一个大的dict (词表字典),便于词表搜索查询

  5. 开始生成模型能够读取的数据格式。首先要有一个可滑动窗口,窗口的目的是获取到当前词的上下文(一般窗口大小不超过3,也就是前三个词,后三个词)

  6. 如果是直接计算 中心词推测出来的临近词 的label的话,计算量太大。(例如这个词典表中有10000个词,每个滑动窗口为3,也就是6个词,那么一个核心词就要6*10000个类别),因此采用负采样的方式将问题从多分类转化为2分类任务。

  7. 负采样的操作如下:随机从所有词典表中选择n个词(非滑动窗口中的词),然后将上文中滑动窗口中的词的label 标记为 1, 随机选择的标记为 0 。然后将所有的词通过词典表,转化为数字形式。例如:“我 爱 中国”=> [29, 452, 2510], 最后生成数据集,格式为[(head_word_ids, target_word_ids, label), ......., (head_word_ids, traget_word_ids, label)]

  8. 生成一个初始化的 embedding 表,整个表的shape 是[vocab_size, emb_size], vocab_size: 之前生成的词典表的len, emb_size:想要生成的向量维度(一般是128, 256, 512, 768等)

  9. 遍历所有的数据集,将 head_word_ids和target_word_ids, 转化为向量的形式。因为生成的初始化embedding 表的大小就是 vocab_size 的大小,因此head_word_ids 转化为向量就相当于获取embedding [head_word_ids] 的值。

  10. 开始计算:embedding [head_word_ids] 和 embedding [target_word_ids]通过点乘的方式计算中心词到目标词的输出概率,然后将当前向量维度从emb_size, 相加成1,并通过simgod函数估计这个词是正样本还是负样本。

  11. 最后定义梯度下降函数降低损失,等损失稳定后,将模型的权重保存,这个权重就是生成的词向量。

    

### 词向量自然语言处理中的应用 词向量转换是自然语言处理(NLP)的核心技术之一,通过将词汇表中的每个词语映射成一个固定长度的向量来表示[^1]。这样的向量不仅能够表达单词的形式特征,更重要的是可以捕捉到它们之间的语义关系以及上下文环境下的细微差别。 #### 应用实例 - **情感分析**:利用预先训练好的词向量模型可以直接应用于新数据集上的情感分类任务中去;也可以基于特定领域的文本重新调整参数得到更贴合实际需求的结果。 - **机器翻译**:当源语言和目标语言之间存在相似结构时,则可以通过学习两种不同语言间的对应模式来进行有效的跨语言迁移学习,从而提高翻译质量。 - **问答系统**:借助于高质量的分布式表示形式(即词向量),使得计算机能够在一定程度上理解和回应用户的查询请求,进而构建更加智能化的人机对话平台。 ### 实现方法概述 为了获得良好的词向量表现效果,通常采用以下几种主流的技术路径: #### 静态词嵌入 Static Word Embeddings 最经典的代表就是Word2Vec与GloVe这两种算法框架。前者依赖于连续词袋(CBOW) 或者 skip-gram 架构来预测给定窗口内的其他相邻位置上的词语;后者则试图最小化全局共现矩阵内元素间差异度,以此建立更为精确的语言统计规律描述方式。 ```python from gensim.models import Word2Vec sentences = [["cat", "says", "meow"], ["dog", "barks"]] model = Word2Vec(sentences=sentences, vector_size=100, window=5, min_count=1, workers=4) word_vector = model.wv['cat'] print(word_vector) ``` #### 动态词嵌入 Dynamic Contextualized Word Embeddings 相比之下,像 ELMo 这样的新型方案提供了更具灵活性的情景感知型编码机制。不同于传统意义上的单一层级输出,ELMo 能够根据不同层次的需求自适应地组合低层至高层的信息流,最终形成针对具体应用场景优化过的多维度特征空间[^3]。 然而值得注意的一点在于,由于采用了双向长短时记忆网络(BiLSTM),因此不可避免地引入了一定量的时间延迟成本,并且对于大规模语料库的支持程度有限,这也在某种程度上限定了该类模型的实际部署范围和发展潜力。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值