词嵌入来龙去脉:One-hot、Word2Vec、GloVe、ELMo

One_hot和Word2Vec两种词向量方法的原理及比较 对于文本处理,首要的任务是要对非结构化数据进行结构化处理,由此诞生了词向量表示的方法,再众多词向量表示方法中,尤其以One_hot和word2vec两种方法最常用,下面也针对这俩方法进行阐述 One_hot方法 One_hot方法是最简单的一种方法,也是出现最早的一种方法,其原理就比如一个语料有M各词,其中每一个词的One_hot表示方式为当前词用1表示,其余用0表示,也就是说语料有多少词,那么词... 阅读详情

〇、绪

什么是词嵌入?

词嵌入(Word Embedding)是自然语言处理(NLP)中的一项核心技术,它将文本中的词语转换为低维实数向量,使得语义相近的词语在向量空间中距离相近。

传统的文本表示方法(如独热编码)无法捕捉词语之间的语义关系,而词嵌入通过学习词语的上下文信息,能够揭示词语之间的内在联系。

“词嵌入的核心思想是:出现在相似上下文中的词具有相似的含义。”

  • 语义表示
    词嵌入将词语映射到连续向量空间,使得语义相关的词在空间中位置相近。

  • 上下文学习
    通过词语的上下文信息学习其表示,捕捉词语之间的语法和语义关系。

  • 下游任务
    词嵌入作为预训练特征,可显著提升各类NLP任务的性能。

独热编码 vs 词向量

独热编码(One-Hot Encoding)

独热编码是一种将词语表示为二进制向量的方法,向量的长度等于词汇表大小,只有对应词语的位置为1,其余位置为0。

在这里插入图片描述

  • 局限性:
    维度灾难:词汇表越大,向量维度越高
    语义鸿沟:无法表示词语之间的语义关系
    数据稀疏:每个向量只有一个非零元素

词向量(Word Vector)

词向量是一种分布式表示方法,将词语映射到低维连续向量空间(通常为50-300维),语义相近的词语在空间中距离较近。

在这里插入图片描述

  • 优势:
    低维度:显著降低特征空间维度
    语义关联:捕捉词语间的语义和语法关系
    泛化能力:提高模型在未见数据上的表现

一、word2vec

在自然语言处理(NLP)中,计算机无法直接理解文字,必须将其转化为数值形式。传统的词表示方法存在明显缺陷:

  • One-Hot编码: 用长度为词汇表大小的向量表示词,仅对应位置为1,其余为0。但存在维度灾难(词汇表过大时向量过长)和语义孤立(无法体现词与词的关联)。
  • 词袋模型(BoW): 忽略词序,且同样无法捕捉语义关系。
    2013年,Google团队提出的Word2Vec解决了这些问题:它能将词转化为低维稠密的实数向量(通常50-300维),且向量间的距离(如余弦相似度)可直接反映语义关联。

在这里插入图片描述

1. 词向量的核心

分布式假设

Word2Vec的理论基础是分布式假设:

一个词的含义由其周围的词决定(You shall know a word by the company it keeps)
——J.R.Firth

例如,“苹果"在"吃”、“甜"附近时大概率指水果;在"手机”、"品牌"附近时大概率指电子产品。

词向量的本质

词向量是词的分布式表示,每个维度都隐含特定的语义特征(如"性别"、“词性”、"抽象/具体"等),但这些特征无需人工定义,而是模型从数据中自动学习的。

向量空间中,语义相似的词距离更近。例如:vec(“猫”) 与 vec(“狗”) 的距离 < vec(“猫”) 与 vec(“汽车”) 的距离。

2. Word2Vec的两种模型结构

Word2Vec包含两种核心模型:CBOW(Continuous Bag-of-Words,连续词袋模型)和Skip-gram(跳字模型)。两者均基于浅层神经网络,但输入输出逻辑相反。

在这里插入图片描述

CBOW模型:用上下文预测中心词

CBOW的核心思想:给定上下文词,预测中心词的概率。

  • 各层作用:

输入层:上下文词的one-hot向量(长度=词汇表大小V)。
投影层:将上下文词的向量(通过嵌入矩阵查找)进行求和或平均,得到一个固定长度的向量(维度=词向量维度d)。
输出层:通过softmax计算中心词的概率分布(长度=V),目标是使真实中心词的概率最大。

Skip-gram模型:用中心词预测上下文

Skip-gram的核心思想:给定中心词,预测其周围上下文词的概率。

  • 与CBOW的对比:

在这里插入图片描述

3. softmax

Softmax算法是深度学习中多分类任务的核心激活函数,作用是将模型输出的原始得分(Logits,无约束的实数)转化为0到1之间的概率分布,且所有类别概率之和为1,既让输出结果具备可解释性(代表样本属于各类别的置信度),也能为交叉熵损失计算提供基础。其原理可概括为两步:首先对每个类别对应的Logit取自然指数( e z i e^{z_i} ezi​),消除负数并放大得分差异;然后将每个指数结果除以所有类别指数结果的总和,完成归一化。公式为:
σ ( z ) i = e z i ∑ j = 1 K e z j \sigma(z)_i = \frac{e^{z_i}}{\sum_{j=1}^K e^{z_j}} σ(z)i​=∑j=1K​ezj​ezi​​
(其中 z i z_i zi​是第 i i i类的原始得分, K K K是总类别数, σ ( z ) i \sigma(z)_i σ(z)i​是第 i i i类的概率)
实际应用中,Softmax常作为分类模型(如CNN、Transformer分类头)的最后一层,比如图像分类中判断图片属于猫、狗、鸟等类别的概率,或NLP中文本分类的类别置信度排序。

Softmax计算流程图示

输入:K个类别的原始得分z₁,z₂,...,zₖ] --> B[步骤1:指数化处理
计算每个zᵢ的e^zᵢ
B
步骤2:求和计算
S = e^z₁ + e^z₂ + ... + e^zₖ
步骤3:归一化
每个类别概率pᵢ = e^zᵢ / S
输出:概率分布{p₁,p₂,...,pₖ}
(∑pᵢ=1,pᵢ∈[0,1])
应用:选择最大pᵢ对应的类别/
计算交叉熵损失优化模型

直观示例(3分类任务)

假设模型输出3个类别的Logits为 z 1 = 2 z_1=2 z1​=2、 z 2 = 1 z_2=1 z2​=1、 z 3 = 0 z_3=0 z3​=0:

  1. 指数化: e 2 ≈ 7.389 e^2≈7.389 e2≈7.389, e 1 ≈ 2.718 e^1≈2.718 e1≈2.718, e 0 = 1 e^0=1 e0=1;
  2. 求和: S = 7.389 + 2.718 + 1 = 11.107 S=7.389+2.718+1=11.107 S=7.389+2.718+1=11.107;
  3. 归一化: p 1 ≈ 7.389 / 11.107 ≈ 0.665 p_1≈7.389/11.107≈0.665 p1​≈7.389/11.107≈0.665, p 2 ≈ 2.718 / 11.107 ≈ 0.245 p_2≈2.718/11.107≈0.245 p2​≈2.718/11.107≈0.245, p 3 ≈ 1 / 11.107 ≈ 0.090 p_3≈1/11.107≈0.090 p3​≈1/11.107≈0.090;
    最终输出概率分布为[0.665, 0.245, 0.090],样本最可能属于第1类。

二、GloVe (Global Vectors)

2014年,斯坦福大学的研究团队提出了GloVe(Global Vectors for Word Representation)模型,这是一种全新的词向量表示方法,结合了两种主流词向量技术的优势:

基于计数的方法(如LSA):利用全局语料统计信息(词共现矩阵)。
基于预测的方法(如Word2Vec):通过局部上下文预测学习词向量。

GloVe的核心思想是:通过词共现矩阵中的统计信息学习词向量,同时保持高效的训练过程。
在这里插入图片描述

1. 词共现矩阵:GloVe的基石

GloVe(Global Vectors for Word Representation)的核心是依托全局词共现矩阵捕捉词汇语义关联,其原理可梳理为:首先遍历大规模语料库,以固定大小的上下文窗口(如左右各5个词)为单位,统计任意两个词 ( i , j ) (i,j) (i,j)共同出现的频次,构建一个对称的共现矩阵 X X X——矩阵元素 X i j X_{ij} Xij​表示词 j j j出现在词 i i i上下文窗口内的总次数( X i i X_{ii} Xii​通常为0,避免词自身共现),窗口内不同位置的词可赋予衰减权重(距离越近权重越高,弱化远距离共现的影响);接着GloVe并非直接对共现矩阵做SVD分解(如LSA),而是利用矩阵中蕴含的共现概率比( P i ∣ k P j ∣ k \frac{P_{i|k}}{P_{j|k}} Pj∣k​Pi∣k​​,即词 k k k上下文里出现词 i i i和词 j j j的概率之比)来建模语义:若两个词语义相近,它们与其他词的共现概率比会趋于一致,因此GloVe的优化目标是让词向量的点积( w i T w j + b i + b j w_i^T w_j + b_i + b_j wiT​wj​+bi​+bj​)近似等于共现频次的对数( log ⁡ X i j \log X_{ij} logXij​),通过最小化这一偏差的加权平方损失,学习到同时融合全局统计信息(共现矩阵的整体分布)和局部上下文特征(窗口内的词关联)的词向量,最终让语义相近的词在向量空间中距离更近。

在这里插入图片描述

  • 优点:

包含全局统计信息,能捕捉词之间的语义关联。
构建过程简单直接,只需遍历语料库一次。

  • 缺点:

维度极高(与词汇表大小的平方成正比),计算和存储成本大。
数据稀疏(大多数词对很少或从未共现)。
无法有效表示多义词和复杂语义关系。

2. GloVe模型的核心思想

GloVe(Global Vectors for Word Representation)模型的核心是融合全局语料的词共现统计信息与词向量的语义关联建模:它摒弃了Word2Vec仅依赖局部上下文预测(CBOW/Skip-gram)的思路,转而通过分析词与词之间的共现概率比值捕捉语义相似性/关联性,并通过优化词向量点积与共现频次对数的拟合程度,学习到兼具全局统计特性和精细语义表达的词向量。

简单来说,GloVe的本质是“用全局统计规律约束词向量的语义关联,让向量空间的相似度对应真实语料中的共现强度”。

关键支撑:共现概率比的语义价值

GloVe的核心洞察来自对共现概率比值的分析,这也是它区别于其他词向量模型的关键:

  1. 词共现矩阵:设共现矩阵 X X X,其中 X i j X_{ij} Xij​表示词 j j j出现在词 i i i上下文窗口中的总次数(全局统计结果); X j = ∑ k X j k X_j = \sum_k X_{jk} Xj​=∑k​Xjk​表示词 j j j的所有上下文词的总共现次数。
  2. 共现概率: P ( i ∣ j ) = X i j X j P(i|j) = \frac{X_{ij}}{X_j} P(i∣j)=Xj​Xij​​,即“在词 j j j的上下文中出现词 i i i的概率”。
  3. 概率比的语义意义:
    例如,取词 i i i=ice(冰)、 j j j=steam(蒸汽),对比不同上下文词 k k k的概率比 P ( i ∣ k ) P ( j ∣ k ) \frac{P(i|k)}{P(j|k)} P(j∣k)P(i∣k)​:
    • 当 k k k=solid(固体)时, P ( i c e ∣ s o l i d ) P ( s t e a m ∣ s o l i d ) ≫ 1 \frac{P(ice|solid)}{P(steam|solid)} \gg 1 P(steam∣solid)P(ice∣solid)​≫1(ice与solid强关联,steam弱关联);
    • 当 k k k=gas(气体)时, P ( i c e ∣ g a s ) P ( s t e a m ∣ g a s ) ≪ 1 \frac{P(ice|gas)}{P(steam|gas)} \ll 1 P(steam∣gas)P(ice∣gas)​≪1(steam与gas强关联,ice弱关联);
    • 当 k k k=water(水)时, P ( i c e ∣ w a t e r ) P ( s t e a m ∣ w a t e r ) ≈ 1 \frac{P(ice|water)}{P(steam|water)} \approx 1 P(steam∣water)P(ice∣water)​≈1(两者与water关联度相近)。
      这说明:概率比能精准区分词语义上的相似性和关联性,GloVe正是利用这一特性建模语义。

优化目标:词向量点积拟合共现频次对数

GloVe的目标是让词向量的点积(加偏置)与 log ⁡ X i j \log X_{ij} logXij​(共现频次的对数,反映词 i i i和 j j j的共现强度)尽可能拟合——因为 log ⁡ X i j \log X_{ij} logXij​是全局共现强度的量化,而向量点积是向量空间中相似度的经典度量。

1. 核心优化损失函数

J = ∑ i , j = 1 V f ( X i j ) ( w i T w j + b i + b j − log ⁡ X i j ) 2 J = \sum_{i,j=1}^V f(X_{ij}) \left( w_i^T w_j + b_i + b_j - \log X_{ij} \right)^2 J=i,j=1∑V​f(Xij​)(wiT​wj​+bi​+bj​−logXij​)2

2. 符号详细说明
符号含义
V V V词汇表总大小(所有唯一词的数量)
w i w_i wi​词 i i i的中心词向量; w j w_j wj​:词 j j j的上下文词向量(两者独立训练,最终词向量取均值/和)
b i , b j b_i, b_j bi​,bj​词 i i i、词 j j j的偏置项,用于修正拟合偏差(抵消高频词/低频词的系统误差)
f ( X i j ) f(X_{ij}) f(Xij​)加权函数,核心作用:
1. X i j = 0 X_{ij}=0 Xij​=0时 f ( X i j ) = 0 f(X_{ij})=0 f(Xij​)=0,跳过无共现的词对;
2. 高频共现词(如the和其他词)权重降低,避免主导损失
3. 加权函数 f ( X i j ) f(X_{ij}) f(Xij​)的定义

为平衡高频和低频共现词的影响,GloVe设计了分段加权函数:
f ( x ) = { ( x x max ) α if  x ≤ x max 1 if  x > x max f(x) = \begin{cases} \left( \frac{x}{x_{\text{max}}} \right)^\alpha & \text{if } x \leq x_{\text{max}} \\ 1 & \text{if } x > x_{\text{max}} \end{cases} f(x)={(xmax​x​)α1​if x≤xmax​if x>xmax​​

  • x max x_{\text{max}} xmax​:阈值(通常取100),超过该值的共现次数不再增加权重;
  • α \alpha α:衰减系数(通常取0.75),控制低频词的权重衰减速度。

3. 应用场景与总结

  • GloVe的优势在于:
  1. 全局统计+局部语义:既利用了整个语料库的共现规律(比Word2Vec更全面),又通过概率比捕捉了精细的语义关联;
  2. 高效性:训练速度快于基于SVD的LSA模型,且能处理大规模语料;
  3. 强语义表达:学习到的词向量能很好地满足语义类比(如 k i n g − m a n + w o m a n = q u e e n king - man + woman = queen king−man+woman=queen)、词性区分、语义范畴聚类等需求。
  • 局限性:
    与Word2Vec类似,GloVe生成的也是静态词向量,无法处理多义词(如"苹果"的不同含义)。后续发展出的ELMo、BERT等模型通过上下文感知的动态词向量解决了这一问题。

  • GloVe生成的词向量在各种NLP任务中都有广泛应用:
    文本分类:将词向量平均作为文本表示,输入分类器(如SVM、CNN)。
    语义相似度计算:通过余弦相似度判断两个词或句子的语义关联程度。
    命名实体识别:作为特征增强NER模型对实体的识别能力。
    机器翻译:初始化翻译模型的词嵌入层,加速训练并提高性能。
    问答系统:用于问题和候选答案的语义匹配。
    特别适合的场景:需要捕捉词之间精确线性关系的任务,如类比推理(如"国王-男人+女人=女王")。

三、ELMo (Embeddings from Language Models)

ELMo(Embeddings from Language Models)是由Allen Institute for Artificial Intelligence (AI2)开发的一种深度语境化词表示模型,它能够捕捉词汇在不同上下文中的语义信息。与传统词向量模型(如Word2Vec、GloVe)不同,ELMo的词表示是基于整个句子计算的,因此同一个词在不同语境下会有不同的向量表示。

ELMo模型于2018年由Matthew Peters等人在论文"Deep contextualized word representations"中提出,它通过双向LSTM语言模型学习单词的表示,显著提升了多种NLP任务的性能,包括文本分类、命名实体识别、共指消解等。

ELMo的核心创新点

上下文相关的词向量表示:同一个词在不同语境下有不同的向量表示 深层语境化:利用双向LSTM的多层表示捕捉不同层次的语言特征
预训练与微调相结合:在大规模语料上预训练,然后在下游任务中微调

在这里插入图片描述

1. 上下文词向量

ELMo的核心贡献是提出了上下文相关的词向量表示方法。传统的词向量模型(如Word2Vec和GloVe)为每个词分配一个固定的向量表示,而不考虑词在上下文中的具体含义。这种方法无法处理一词多义的情况。

在这里插入图片描述

传统词向量与上下文词向量对比

在这里插入图片描述

ELMo如何生成上下文词向量

ELMo通过双向LSTM模型学习单词的表示。对于输入句子中的每个单词,ELMo会考虑该单词的左右上下文信息,生成一个基于上下文的词向量。

例如,对于句子 “I love natural language processing”,ELMo会为每个单词生成一个向量,这个向量不仅包含单词本身的信息,还包含了该单词在句子中的上下文信息。因此,"love"在这个句子中的向量表示会不同于在 “She love cats” 中的表示。

2. 模型架构

ELMo模型基于多层双向LSTM构建,通过双向语言模型(biLM)学习单词的表示。模型的输入是字符序列,经过字符嵌入层和双向LSTM层处理后,输出每个单词的上下文相关表示。

在这里插入图片描述

  • 字符嵌入层 (Character Embedding)
    ELMo使用字符级表示而不是直接使用词嵌入。每个字符被映射到一个低维向量,然后通过CNN和max-pooling操作生成单词的字符级表示。这种方法能够处理未登录词(OOV),并捕捉词的内部结构信息。

  • 双向LSTM层 (Bidirectional LSTM)
    ELMo使用多层双向LSTM捕捉单词的上下文信息。每一层双向LSTM由两个独立的LSTM组成:一个向前LSTM处理从左到右的上下文,一个向后LSTM处理从右到左的上下文。这两个LSTM的输出被拼接在一起,形成每个单词的上下文表示。

  • ELMo向量生成 (ELMo Vector)
    ELMo的最终表示是各层LSTM输出的加权和。每一层的输出捕获了不同层次的语言信息(如语法、语义),通过学习权重可以为不同任务选择最合适的表示组合。

在这里插入图片描述
训练过程略

3. 应用场景与总结

ELMo的上下文相关词向量表示在多种自然语言处理任务中都取得了显著的性能提升。由于其强大的语境理解能力,ELMo可以作为特征提取器,为各种下游任务提供高质量的输入表示。

  • 应用场景:
    命名实体识别 (NER): ELMo能够区分同一词在不同上下文中的不同实体类型,例如"Apple"在产品上下文中指苹果公司,在食物上下文中指水果。
    情感分析: ELMo能够捕捉文本中的情感倾向,例如"terrible"在"这电影太terrible了"和"这问题太terrible了需要解决"中的不同情感强度。
    语义角色标注: ELMo能够识别句子中每个词的语义角色,例如主语、宾语、谓语等,有助于理解句子的语义结构。
    共指消解: ELMo能够确定文本中代词和名词短语的指代关系,例如在"John说他会来"中,正确识别"他"指代"John"。

  • 对比分析:

在这里插入图片描述

在这里插入图片描述

  • 优势与局限性:

在这里插入图片描述

NLP常用编码方式--onehot、word2vec、BERT BERT编码方式是依赖于huggingface官网所提供的预训练模型进行的,在使用时可以根据文字的具体类型和需要,在官网上下载,并使用pytorch调用模型对数据编码。在下面的示例中,我们首先加载了预训练的 BERT 模型和分词器(one-hot是一种词嵌入方式,编码方式较为较为简单,就是将每一个词或字都表示为一个向量,仅在该词或字所在的位置设置为1,其余位置均为零。在进行自然语言处理时,对文字进行编码一个十分必要的步骤文字编码的目的是将文本数据转换为计算机可以理解和处理的数字表示形式。 阅读详情

相关推荐

NLP必学:Word2Vec、Glove和ELMO

文章目录前言一、one-hot表示二、词嵌入表示法三、word embedding的作用1. 迁移学习2.类比推理四、Word2VecSkip-gramCBOWWordVec的优化1. 分级softmax分类器2.负采样五、GloVe六、ELMO总结 前言 词汇表示(Word Representation)一直是自然语言处理(NLP)中最基础也是最重要的任务之一。 深度学习已经给这一领域带来了革命性的变革。其中一个很关键的概念就是词嵌入(word embeddings),这是语言表示的一种方式,我们可以理解

fs1341825137的博客 5456

【文本】词嵌入经典模型:从one-hot到BERT

一些。

weixin_44194088的博客 507

【大模型系列篇】词向量 - 从Word2Vec到ELMo

词向量(又叫词嵌入)已经成为NLP领域各种任务的必备一步,而且随着BERT、GPT等预训练模型的发展,词向量演变为知识表示方法,但其本质思想不变。生成词向量的方法有很多种,本文重点回顾Word2Vec到ELMo。主要讲了词向量,神经网络语言模型Word2Vec两种模型、GloVe、ELMo动态词向量模型。

木亦汐丫 2893

one-hot(独热)、bag of word(词袋)、word-Embedding(词嵌入)浅析

目录 词袋模型 one-hot word-embedding 我们知道,传统的数据挖掘任务面向的是结构化数据。结构化数据很好理解,就是很有结构的数据嘛。 比如下面这张银行客户数据库中的表格: 编号 姓名 年龄 年收入 职业 有无欠贷 01 ...

夕小瑶科技说 8175

AI大模型开发原理篇-3:词向量和词嵌入

词向量是用于表示单词意义的向量, 并且还可以被认为是单词的特征向量或表示。将单词映射到实向量的技术称为词嵌入。在实际应用中,词向量和词嵌入这两个重要的NLP术语通常可以互换使用。它们都表示将词汇表中的单词映射到固定大小的连续向量空间中的过程。这些向量可以捕捉词汇的语义信息。

沐雪架构师 1720

【3D目标检测】环境搭建(OpenPCDet、MMdetection3d、Det3d)

在Conda虚拟环境中搭建MMdetection3d环境

qq_44703886的博客 4252

从0开始机器学习--4.1编码和嵌入(语义计算方法,onehot独热、word2vec、node2vec、TFIDF,LabelEncoder等各类编码器库函数,含代码)

本文详细介绍了不同的编码(onehot)、嵌入(word2vec、node2vec)、文本提取(TF-IDF)方式,并介绍了不同的编码器库函数。

zhuai.blog.youkuaiyun.com 1904

淘宝抓包,直达函数内部request请求体和response响应体, 告别FD, Charles,SSL,justtrustme 等http代理,证书工具。

淘宝抓包,hook发包函数,直接获取response相应数据

binary66的博客 4469

bert获得词向量_词向量详解:从word2vec、glove、ELMo到BERT

目前,词向量(又叫词嵌入)已经成为NLP领域各种任务的必备一步,而且随着bert elmo,gpt等预训练模型的发展,词向量演变为知识表示方法,但其本质思想不变。学习各种词向量训练原理可以很好地掌握NLP各种方法。生成词向量的方法有很多种,本文重点介绍word2vec,glove和bert。各种词向量的特点:One-hot:维度灾难 and 语义鸿沟矩阵分解(LSA):利用全局语料特征,但SVD求...

weixin_39589557的博客 4295

汇川Easy系列PLC系统PID指令编程应用(增量型)

增量式PIDS7-1200/1500增量式PID(输出归一化、支持PWM输出)_西门子1200pid算法公式-优快云博客文章浏览阅读1k次。本文介绍了S7-1200/1500 PLC中增量式PID算法的应用,包括输出归一化和PWM输出。通过详细解析,阐述了PID输出如何限制在0.0-1.0之间,并且如何将PID输出与PWM占空比关联,适用于温度等控制场景。

RXXW_Dor的博客 1422

基于特征模仿的YOLOv5中间层知识蒸馏:原理、实现与实验全解析

目标检测中的模型轻量化是一个关键挑战。本文提出一种基于特征模仿(Feature Imitation)的YOLOv5中间层知识蒸馏方法,通过让学生模型学习教师模型的中间层特征表示,显著提升轻量级检测器的性能。我们将详细阐述蒸馏损失函数的设计、特征对齐策略、训练流程,并提供完整可运行的代码实现。同时,推荐多个适合蒸馏训练的数据集,并通过实验验证方法的有效性。

YOLO 185

【使用 BERT 的问答系统】第 3 章 :词嵌入介绍

文档分类、情感分析、聚类和文档摘要等 NLP 任务需要处理和理解文本数据。这些任务的实施取决于人工智能系统如何处理和理解数据。一种方法是使用一些统计方法将文本表示转换为数字形式,例如词频-​​逆文档频率(TF-IDF)、计数向量等,但这些方法不考虑句子的含义并且只处理句子中单词的出现。随着时间的推移,已经开发了多种语义方法,例如解析树、上下文语法、本体等,但是这些方法需要大量的人力来准备标记的训练数据。在过去几年中,计算能力的广泛可用性使得使用基于神经网络的方法来完成这些任务成为可能。

sikh_0529的博客 4558

【数据分享】12.5米分辨率DEM地形数据(分省)

该数据来源于NASA地球科学数据网站(https://nasadaacs.eos.nasa.gov/),是ALOS卫星获取的高精度地形数据。该数据由于精度高,包括全省范围的数据和省内每个城市范围的数据!

JData_Engineer的博客 2171

词嵌入(word embedding)附word2vec代码python

每个词语的词嵌入向量可以被看作是词语在高维空间中的位置,相似的词语在向量空间中会更加接近。self.W = nn.Parameter(torch.randn(voc_size, embedding_size).type(dtype))#即一个voc_size行的embedding_size列的矩阵。input_data.append(np.eye(voc_size)[skip_grams[i][0]])#np.eye(size)用于生成大小为voc_size的单位矩阵,当作one hot编码。

m0_46665935的博客 1605

特别章节-0.1 SolidWorks导出机械臂的URDF模型各个关节坐标系设置

通过Solidworks导出机械臂的URDF模型文件,建立机械臂的各个关节坐标系的规则以及注意点,详细步骤

六眼飞鱼的博客 1万+

YOLO26魔改:ICIP2026 SDTA|单深度转置注意力注入C2PSA,长程依赖与局部细节双增强,mAP提升显著

多尺度适配:SDTA的深度卷积与C2PSA的空间注意力结合,增强对多尺度目标的结构感知,改善遮挡与密集场景下的检测鲁棒性。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 292

NLP学习之词嵌入

NLP学习之词嵌入模型

SKkkkkl的博客 2333

手把手教你学veriolg(二十六)-- Verilog CIC 滤波器设计

目录 Verilog CIC 滤波器设计1. CIC 滤波器的基本原理2. Verilog 实现3. 说明4. 测试激励5. 总结 CIC(Cascade-Integrator-Comb)滤波器是一种特殊的数字滤波器,常用于多速率信号处理中,尤其是用于信号的上采样(插值)和下采样(抽取)。CIC 滤波器的特点在于它具有简单的硬件实现、不需要乘法器(仅使用加法器和延迟元件)、且具有线性相位特性。然而,CIC 滤波器的缺点是它会产生较大的量化误差,因此在设计时需要特别注意字长的选择以避免溢出。1. CIC 滤波

MHD0815的博客 888

NLP 文本表示:从one-hot到word2vec

文本表示: 文本表示的意思是把字词处理成向量或矩阵,以便计算机能进行处理。 文本表示按照细粒度划分 字级别、词语级别、句子级别的文本表示。 文本表示可分为 离散表示(离散、高维、稀疏):代表就是词袋模型,one-hot(也叫独热编码)、TF-IDF、n-gram都可以看作是词袋模型。 分布式表示(连续、低维、稠密): 词嵌入(word embedding),经典模型是word2vec、Glove...

qq_14993591的博客 1464

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

NLP中的词向量总结与实战:从one-hot到bert

离散表示 One-hot独热表示法 NLP 中最常用、最传统的词特征表示方式是采用One-Hot 编码,即每一个词特征都被表示成一个很长的向量,其长度等于词表大小,当前词对应位置为1,其他位置为0。 但是这种表示方式存在显而易见的问题: 不同词之间总是正交的,无法衡量不同词之间的相似关系。 只能反映每个词是否出现,但无法突出词之间重要性的区别。 BOW词袋表示法 在One-Hot 表示...

Kaiyuan_sjtu的博客 3410

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

词嵌入技术解析:从Word2Vec到BERT实战指南

词嵌入是自然语言处理中的核心技术,通过将词语映射到连续向量空间解决传统文本表示的高维稀疏性问题。其核心原理包括基于预测的Word2Vec(Skip-gram/CBOW架构)和基于全局统计的GloVe,而BERT等预训练模型则实现了动态上下文感知。在电商评论分析、新闻推荐等场景中,词嵌入能显著提升语义理解准确率。实际应用时需注意领域自适应和新词OOV问题处理,当前前沿方向正探索对比学习和多模态联合嵌入。本文通过Word2Vec、GloVe和BERT的代码示例,展示了如何根据任务规模选择合适方案。

weixin_33885676的博客 382

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

从 One-Hot 到 GPT:文本表示的演进之路

在人工智能的众多分支中,自然语言处理(NLP)一直是最具挑战性的领域之一。

AI 音频小牛的博客 913

NLP词嵌入进化(一):详解Word2Vec,CBOW、Skip‑Gram与负采样

本文详细讲解 Word2Vec 核心原理,剖析 CBOW 与 Skip‑Gram 模型,介绍层次化 Softmax、负采样优化方案,附带原理图解与代码实践,梳理静态词向量技术演进,帮助读者快速入门 NLP 词嵌入。

weixin_62393776的博客 3827

Transformer之词嵌入 | 为什么要做词嵌入?

本文系统介绍了自然语言处理中的词表示技术演进历程。从早期One-Hot编码的局限性(高维稀疏、缺乏语义)到现代词嵌入(Word Embedding)的优势(低维稠密、语义丰富),再到位置嵌入(Position Embedding)对序列顺序的补充。文章深入分析了词嵌入的实现原理(Word2Vec、GloVe等)及其在语义表示、计算效率等方面的突破,同时探讨了位置嵌入在Transformer架构中的必要性。通过对比分析,展现了NLP从符号化到分布式、从静态到动态的技术发展路径。

javatiange的博客 1026

什么是词嵌入(Word Embedding)?有哪些常见的词嵌入方法?

词嵌入(Word Embedding)是一种将文本中的词语转换为数值向量的技术,这些向量能够捕捉词语之间的语义和语法关系。通过词嵌入,可以将自然语言处理任务中的词语表示为高维空间中的点,从而使得机器学习模型能够更好地理解和处理文本数据。

weixin_45422672的博客 882

Word Embedding :从分布式假设到神经网络语言模型

Word Embedding(词嵌入)是一种将离散的词汇符号映射到连续的低维稠密向量空间的技术。在这个向量空间中,语义相似的词在几何距离上彼此接近,从而实现了从"符号匹配"到"语义计算"的跨越。核心定义词嵌入是将单词(或多词短语)表示为固定维度的实值向量,这些向量之间的距离(例如余弦相似度)反映了单词之间的相关性,这种相关性基于单词通常出现的上下文。分布式假设(1954)↓统计共现分析(LSA/SVD)↓。

Frost_Descent的博客 6213
上一篇: 语言模型基础技术的开端:N-Gram与Bag-of-words详解
下一篇: 从 n-gram 到神经网络:NPLM 如何重塑语言建模范式
TracyCoder123
博客等级 码龄8年 1万+粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TracyCoder123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值