【深度学习】NLP基础--词向量(从One-hot到Word2Vec)

article/2025/9/21 18:59:14

1.什么是词向量

         在自然语言处理中,面临的首要问题是如何让模型认识我们的文本信息,比如向模型中输入‘我爱北京天安门’,那模型是如何认识文本的?词,是自然语言处理中基本单位,将数据输入到模型中,尽可能的让模型明白其中的含义,那就面临一个问题:如何表示一个词?

        词向量:词向量(Word embedding),又叫Word嵌入式自然语言处理(NLP)中的一组语言建模和特征学习技术的统称,其中来自词汇表的单词或短语被映射到实数的向量。 从概念上讲,它涉及从每个单词一维的空间到具有更低维度的连续向量空间的数学嵌入。

        具体来讲就是将词映射成向量的形式,将自然语言转换为向量之间的计算。

2.向量表示

        在自然语言处理任务中,对于词向量有两种表示方式。第一种:one-hot representation;

第二种:distribution representation。

2-1.什么是ont-hot

        one-hot 表示方法是把每个词表示为一个长向量。这个向量的维度是词表大小,向量中只有一个维度的值为1,其余维度为0,这个维度就代表了当前的词。 

2-1-1 如何表示

       假设用 one-hot对句子进行表示,对句子分词之后,我们可以得到['我‘,’爱‘,’北京‘,’天安门‘],可以用one hot(独热编码)对单词进行编码。具体为:

“我”可以表示为[1,0,0,0]

"爱"可以表示为[0,1,0,0]

'北京'可以表示为[0,0,1,0]

'天安门'可以表示为[0,0,0,1]

2-2-2 存在问题

通过上述案例我们可以看出,每个单词用一个向量进行编码。用one hot 会存在一下几个问题:

(1)每个向量之间的内积为0,也就是每个向量是互相正交的。原本上下文中存在语义关系的词汇,经过独热编码后,模型无法识别出每个词之间的关系,首先在向量表示层面就失去了原本的语义关系。

(2)维度爆炸。向量的维度和文本中的词语数量相关,例子中的单词数量为4,所以我们的向量表示为1*4。但是在自然语言处理中,往往需要大量的数据,如果词库中存在10万的单词量,那每个单词的向量就表现为10万维。向量的维度过高,会导致模型的训练难度增加,难以收敛。

(3)向量稀疏。通过例子我们可以发现,使用one hot 时,除了当前单词位置的值为1之外,其余位置的值都为0,这样就会带来向量值稀疏的问题,其实还是向量之间(单词)之间没有语义上的联系。

2-2.什么是分布式表示(distribution)

        词嵌入(word embedding)将词表示为一种分布式表现的形式。分布式表示将词转化为一个定长(可指定)、稠密并且互相存在语义关系的向量。此处的存在语义关系可以理解为:分布相似的词,是具有相同的语义的。

2-2-1 如何表示

        以Word2Vec为例,介绍分布式表示。

        Word2Vec是从大量文本语料中以无监督的方式学习语义知识的一种模型,它被大量地用在自然语言处理(NLP)中。Word2Vec通过学习文本来用词向量的方式表征词的语义信息,即通过一个嵌入空间使得语义上相似的单词在该空间内距离很近。Embedding其实就是一个映射,将单词从原先所属的空间映射到新的多维空间中,也就是把原先词所在空间嵌入到一个新的空间中去。man和woman属于语义上很相近的词,当这两个词映射到新的空间后,得到的嵌入向量(embedded vector)就很接近。如图为woman和man的向量相似度。 

 2-2-2 如何得到

        “一个词的意思,应该由和他一起出现的周围词来表现,”Word2vec包含两个经典模型:CBOW(Continuous Bag-of-Words)和Skip-gram。通过这两种模型得到词的词向量,两种模型的计算方式存在差异。

2-2-2-1 CBOW

        通过上下文词,推理中心词。在上下文已知的情况下,预测中心词出现的概率。使用上下文的词向量推理中心词,中心词的语义就被传递到上下文的词向量中。

上下文词预测中心词

具体流程为:

(1)构建神经网络,输入为句子中的某个词(中心词),输出为其他所有词出现在中心词周围的概率。在输出时,输出的词既有和中心词相邻的词或者是在中心词上下文中附近出现过的词(相关词),也会有不相关的各种词。

(2)在训练时,我们希望输出的词就是围绕在中心词周围的词,也就是输出词的概率乘积越大(极大似然)就说明输出词和中心词越相关。在训练网络时,网络的参数矩阵就是输入文本的特征,也就是我们想要得到的词向量。

(3)所以,通过梯度下降法使得输出词的概率乘积尽可能地大,最终在不断的更新下,就得到了所有词的词向量。

 示意图如下:

Windows= 2

        在设定窗口大小为2时,对模型的输入就是中心词两侧的上下文词[爱 北京 天安门 上]去预测[天安门]的输出概率。

2-2-2-2 Skip-Gram

        与CBOW的训练方式相反,Skip-Gram是通过中心词来预测上下文词。在中心词已知的情况下,预测上下文词出现的概率。具体流程训练流程与CBOW一致。

中心词预测上下文词

         在设定窗口大小为2时,对模型的输入就是中心词[天安门]去预测中心词两侧的上下文词[爱 北京 天安门 上]的输出概率。

后记

        使用W2v生成的词向量也会存在局限性。W2v默认为在分布上相似的词,意思是接近的,有相同上下文词意思相近,比如'好人'和‘坏人’这两个词向量的相似度就很相近。其实在使用时并不一直如此。


http://chatgpt.dhexx.cn/article/tsyGvYvT.shtml

相关文章

关键词提取代码

我又来水博客了,今天我做了关键词提取算法。 代码我会上传到我的github中去,这个算法需要stopword和corpus两个txt格式,导入的时候,会出现下面的错误 gbk codec cant decode byte 0x80 in position 26: illegal multibyte seque…

KeyBERT进行中文关键词提取

原文链接 KeyBERTLeveraging BERT to extract important keywordshttps://maartengr.github.io/KeyBERT/index.html 一种基于BERT的极简关键词提取方法。 关键词提取是通过查找文档中与文档本身最相似的词来完成的。首先,用BERT提取文档嵌入,得…

关键词提取——有监督方法

在上一篇博客中,介绍了关键词提取的无监督方法:点击这里查看文章。本篇主要是介绍关键词提取的有监督方法。 可以从如下角度去做有监督学习: 二分类模型:短语是否为关键短语。LTR(learn to rank)&#xf…

NLP- 关键词提取 - 综述

NLP- 关键词提取 - 综述 一、关键词提取有以下几种方式二、TF-IDF三、TextRank四、LDA五、word2vec 一、关键词提取有以下几种方式 二、TF-IDF TF-IDF算法,主要是通过统计方法,评估词对文档的重要性。一个基本思想是,一个词在文档中出现的次…

基于yake的中文关键词提取试验

前言: 之前看了云朵dalao的一篇关于关键词提取的文章,其中介绍的 Yake 模型采用了大写词、词位置、全文词频、上下文关系、句间词频等 5 个指标,计算候选词得分。感觉设计上较直观、易解释,但原 yake 库不支持中文,于是…

RAKE-无监督英文关键词提取算法

没想到吧,在深度学习大行其道的当今,我突然写了一篇上古时代的文章(其实也就2010年,奈何知识更新真快…) 话不多说,一起来看一下RAKE算法 RAKE RAKE全称为Rapid Automatic Keyword Extraction&#xff0c…

tfidf关键词提取_基于深度学习的个性化商品评论标签提取

商品评论标签提取作为商品评论中的一个比较有意思的问题。评论标签提取的主要任务是从评论中了解到用户对产品的哪些功能、属性进行了怎样的评论,并抽取成简短有效的信息。 关键词提取Vs评论标签提取 商品标签提取和关键词的抽取还不是同样的NLP问题,关键词提取更侧重于文章或…

NLP-关键词提取算法

一、提取关键字技术简介 关键字提取技术一般也可以分为有监督和无监督两类。 有监督的关键词提取方法主要是通过分类的方式进行的,通过构建一个比较丰富完善的词表,然后通过判断每个文档与词表中每个词的匹配程度,以类似打标签的方式&#x…

关键词提取算法概述

关键词提取概述 概念 关键词是指能反映文本主题或者主要内容的词语。关键词提取是NLP领域的一个重要的子任务。在信息检索中,准确的关键词提取可以大幅提升效率;在对话系统中,机器可以通过关键词来理解用户意图;在自动文摘、文本…

关键词提取算法

来源:《Python自然语言处理实战:核心技术与算法》 1.TF-IDF TF-IDF从词频、逆文档频次两个角度对词的重要性进行衡量,可以根据tf-idf值由大到小排序取前n个作为关键词。 传统的TF-IDF算法中,仅考虑了词的两个统计信息&#xff0…

KeyBert关键词提取 :原理、方法介绍、代码实践

创建于:20210708 修改于:20210708, 20221104 文章目录 1 概述2 方法介绍2.1 安装2.2 KeyBERT(model)2.3 extract_keywords参数介绍 3、代码实践3.1 英文示例3.2 中文示例 4、加载不同的模型库4.1 SentenceTransformers模型调用4.2 Transformers模型调用4…

常用的Python3关键词提取方法

诸神缄默不语-个人CSDN博文目录 本文将介绍一些简单的使用Python3实现关键词提取的算法。目前仅整理了一些比较简单的方法,如后期将了解更多、更前沿的算法,会继续更新本文。 文章目录 1. 基于TF-IDF算法的中文关键词提取:使用jieba包实现2.…

NLP——关键词提取

NLP——关键词提取 文章目录 NLP——关键词提取前言一、TF-IDF算法1. 基本原理2. 算法改进 二、TextRank算法1. 基本原理2. PageRank算法3. TextRank算法4. TextRank算法在关键词提取的应用 三、LSA/LSI/LDA算法1. LSA/LSI算法2. LDA算法 四、实战练习 前言 关键词提取分为有监…

文本关键词提取:ansj

背景 因为文本内容里面,需要提取出关键词给到seo作关键词。 同时内容是中文的,需要找个对应的中文分词和提取工具。 ansj 根据官方介绍,感觉还是比较厉害的样子。 官方说明: 这是一个基于n-GramCRFHMM的中文分词的java实现。…

[转]NLP关键词提取方法总结及实现

最近在研究关键词的提取算法,看到一篇关于关键词提取算法的总结,比较全面了,在这里分享给大家,希望能够帮助同学们~ 原文链接:https://blog.nowcoder.net/n/ac016f8256f54c4b8c8784e99bccf28a (ps:作者同意…

文本中的关键词提取方法

目录 1. TF-IDF(Term Frequency-Inverse Document Frequency)算法: 2. TextRank算法: 3. LDA(Latent Dirichlet Allocation)算法: 4. RAKE(Rapid Automatic Keyword Extraction&…

关键词抽取方法

1、关键词提取 为了方便用户快速了解文章的中心主题,会抽取文章的一些中心词来表达文章的中心思想。关键词抽取就是通过一定的方法抽取出能表达文章的中心主题的一系列方法。 2、关键词抽取方法分类 2.1、有监督无监督抽取方法 无监督关键词提取方法主要有三类&…

自然语言处理之——关键词提取(一)

一. 摘要 本次的分享中,我们将了解目前较常用的关键词提取技术。关键词是代表文章重要内容的一组词。在文本的分类聚类、自动摘要等方面有着重要的作用。还可以让人们更直观便捷的浏览文本信息。在现实的常用文本中是不包含关键词的,所以自动…

记一次 watchbog 挖矿病毒的清理

突然发现服务器上的mysql数据库连接不上遂使用xshell连接服务器查看进程发现被一个叫watchbog的进程沾满了cpu 通过查阅资料发现该病毒通过定时器 不断下载挖矿程序脚本 先清除 crontab中不属于自己的内容 kill掉所有的watchbog进程 bog 不是dog 查找到服务器上所有的…

手工清除Windows服务器上的Steam挖矿病毒:HackTool/CoinMiner.a及Trojan/Miner.ac

手工清除Windows服务器上的Steam挖矿病毒:HackTool/CoinMiner.a及Trojan/Miner.ac 起因: 最近服务器群里的两台Windows虚拟服务器上的CPU占用率超级高(已经达到了91%),严重影响公司程序的正常运行,但是又不能安装杀毒软…