20240330-1-词嵌入模型w2v+tf-idf

news2024/9/8 23:35:29

Word2Vector

1.什么是词嵌入模型?

把词映射为实数域向量的技术也叫词嵌⼊

2.介绍一下Word2Vec

谷歌2013年提出的Word2Vec是目前最常用的词嵌入模型之一。Word2Vec实际是一种浅层的神经网络模型,它有两种网络结构,分别是连续词袋(CBOW)和跳字(Skip-Gram)模型。

3.介绍CBOW

CBOW,全称Continuous Bag-of-Word,中文叫做连续词袋模型:以上下文来预测当前词 w t w_t wt 。CBOW模型的目的是预测 $P(w_t| w_{t-k}, \cdots, w_{t-1}, w_{t+1}, \cdots, w_{t+k}) $

img

前向传播过程
  • 输入层: 输入C个单词 x x x: $x_{1k}, \cdots, x_{Ck} $,并且每个 x x x 都是用 One-hot 编码表示,每一个 x x x 的维度为 V(词表长度)。

  • 输入层到隐层

    • 首先,共享矩阵为 W V × N W_{V \times N} WV×NV表示词表长度,W的每一行表示的就是一个N维的向量(训练结束后,W的每一行就表示一个词的词向量)。
    • 然后,我们把所有输入的词转 x x x化为对应词向量,然后取平均值,这样我们就得到了隐层输出值 ( 注意,隐层中无激活函数,也就是说这里是线性组合)。 其中,隐层输出 h h h 是一个N维的向量 。

    h = 1 C W T ( x 1 + x 2 + ⋯ + x c ) h = \frac{1}{C} W^T(x_1 + x_2 + \cdots + x_c) h=C1WT(x1+x2++xc)

  • 隐层到输出层:隐层的输出为N维向量 h h h , 隐层到输出层的权重矩阵为 W N × V ′ W'_{N \times V} WN×V 。然后,通过矩阵运算我们得到一个 $V \times 1 $ 维向量
    u = W ′ T ∗ h u = W'^{T} * h u=WTh

其中,向量 u u u 的第 i i i 行表示词汇表中第 i i i 个词的可能性,然后我们的目的就是取可能性最高的那个词。因此,在最后的输出层是一个softmax 层获取分数最高的词,那么就有我们的最终输出:
P ( w j ∣ c o n t e x t ) = y i = e x p ( u j ) ∑ k ∈ V e x p ( u k ) P(w_j| context) =y_i = \frac{exp({u_j})}{\sum_{k \in V} exp({u_k})} P(wjcontext)=yi=kVexp(uk)exp(uj)

损失函数

我们假定 j ∗ j^* j 是真实单词在词汇表中的下标,那么根据极大似然法,则目标函数定义如下:
E = − l o g   p ( W O ∣ W I ) = − l o g   e x p ( u j ) ∑ k ∈ V e x p ( u k ) = l o g ∑ k ∈ V e x p ( u k ) − u j E = -log \, p(W_O |W_I) = -log \, \frac{exp({u_j})}{\sum_{k \in V} exp({u_k})} = log \sum_{k \in V} exp(u_{k}) -u_j E=logp(WOWI)=logkVexp(uk)exp(uj)=logkVexp(uk)uj

4.Skip-gram模型

Skip-Gram的基本思想是:通过当前词 w t w_t wt 预测其上下文 w t − i , ⋯   , w t + i w_{t-i}, \cdots , w_{t+i} wti,,wt+i ,模型如下图所示:

img

前向传播过程
  • 输入层: 输入的是一个单词,其表示形式为 One-hot ,我们将其表示为V维向量 x k x_k xk ,其中 V V V 为词表大小。然后,通过词向量矩阵 W V × N W_{V \times N} WV×N 我们得到一个N维向量
    h = W T ∗ x k = v w I T h = W^T * x_k = v^{T}_{w_I} h=WTxk=vwIT

  • 隐层: 而隐层中没有激活函数,也就是说输入=输出,因此隐藏的输出也是 h h h

  • 隐层到输出层:

    • 首先,因为要输出C个单词,因此我们此时的输出有C个分布: $y_1, \cdots y_C $,且每个分布都是独立的,我们需要单独计算, 其中 y i y_i yi 表示窗口的第 i i i 个单词的分布。

    • 其次, 因为矩阵 W N × V ′ W'_{N \times V} WN×V 是共享的,因此我们得到的 V × 1 V \times 1 V×1 维向量 u u u 其实是相同的,也就是有 u c , j = u j u_{c,j} = u_j uc,j=uj ,这里 u u u 的每一行同 CBOW 中一样,表示的也是评分。

    • 最后,每个分布都经过一个 softmax 层,不同于 CBOW,我们此处产生的是第 i i i 个单词的分布(共有C个单词),如下:

    P ( w i , j ∣ c o n t e x t ) = y i = e x p ( u j ) ∑ k ∈ V e x p ( u k ) P(w_{i,j}| context) =y_i = \frac{exp({u_j})}{\sum_{k \in V} exp({u_k})} P(wi,jcontext)=yi=kVexp(uk)exp(uj)

损失函数

假设 j ∗ j^* j 是真实单词在词汇表中的下标,那么根据极大似然法,则目标函数定义如下:
E = − l o g   p ( w 1 , w 2 , ⋯   , w C ∣ w I ) = − l o g ∏ c = 1 C P ( w c ∣ w i ) = − l o g ∏ c = 1 C e x p ( u c , j ) ∑ k = 1 V e x p ( u c , k ) = − ∑ c = 1 C u j c ∗ + C ⋅ l o g ∑ k = 1 V e x p ( u k ) \begin{split} E &= - log \, p(w_1, w_2, \cdots, w_C | w_I) \\ &= - log \prod_{c=1}^C P(w_c|w_i) \\ &= - log \prod_{c=1}^{C} \frac{exp(u_{c, j})}{\sum_{k=1}^{V} exp(u_{c,k}) } \\ &= - \sum_{c=1}^C u_{j^*_c} + C \cdot log \sum_{k=1}^{V} exp(u_k) \end{split} E=logp(w1,w2,,wCwI)=logc=1CP(wcwi)=logc=1Ck=1Vexp(uc,k)exp(uc,j)=c=1Cujc+Clogk=1Vexp(uk)

5.Word2Vec与LDA的区别

  • LDA

    LDA是利用文档中单词的共现关系来对单词按主题聚类,也可以理解为对“文档-单词”矩阵进行分解,得到“文档-主题”和“主题-单词”两个概率分布

  • Word2Vec

    Word2Vec是利用上下文-单词“矩阵进行学习,其中上下文由周围的几个单词组成,由此得到的词向量表示更多地融入了上下文共现的特征。也就是说,如果两个单词所对应的word2vec向量相似度较高,那么它们很可能经常在同样的上下文中出现。

  • LDA模型是一种基于概率图模型生成式模型,其似然函数可以写成若干条件概率连乘的形式,其中包括需要推测的隐含变量(即主题);

  • 而Word2Vec模型一般表达为神经网络的形式,似然函数定义在网络的输出之上,需要通过学习网络的权重以得到单词的稠密向量表示。

6.Word2Vec存在的问题是什么?

  • 对每个local context window单独训练,没有利用包 含在global co-currence矩阵中的统计信息。
  • 对多义词无法很好的表示和处理,因为使用了唯一的词向量

Tf-idf

1.介绍一下Tf-idf

一个词语在一篇文章中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该文章.

  • TF: Term Frequency, 表示词频。 一个给定的词在该文章中出现的次数。
    T F = 某个词在文章中的出现次数 文章的总词数 TF = \frac{\text{某个词在文章中的出现次数}}{\text{文章的总词数}} \\ TF=文章的总词数某个词在文章中的出现次数

  • IDF: Inverse Document Frequency, 表示逆文档频率。如果包含词条 t 的文档越少, IDF越大,则说明词条具有很好的类别区分能力。

I D F = l o g ( 语料库的文档总数 包含该词的文档数 + 1 ) IDF = log(\frac{语料库的文档总数}{包含该词的文档数+1}) \\ IDF=log(包含该词的文档数+1语料库的文档总数)

  • **TF-IDF:**某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语
    TF-IDF = T F × I D F \text{TF-IDF} = TF \times IDF TF-IDF=TF×IDF

举例说明

假设现在有一篇文章, 文章中包含 10000 个词组, 其中,“贵州” 出现100次,“的” 出现500次,那么我们可以计算得到这几个词的 TF(词频) 值:
T F ( 贵州 ) = 100 / 10000 = 0.01 T F ( 的 ) = 500 / 10000 = 0.05 TF(贵州) = 100 / 10000 = 0.01 \\ TF(的) = 500 / 10000 = 0.05 TF(贵州)=100/10000=0.01TF()=500/10000=0.05
现在语料库中有 1000 篇文章, 其中,包含 “贵州” 的有 99 篇, 包含 “的” 的有 899 篇, 则它们的 IDF 值计算为:
I D F ( 贵州 ) = l o g ( 1000 / ( 99 + 1 ) ) = 1.000 I D F ( 的 ) = l o g ( 1000 / ( 899 + 1 ) ) = 0.046 IDF(贵州) = log(1000 / (99+1)) = 1.000 \\ IDF(的) = log(1000 / (899+1)) = 0.046 IDF(贵州)=log(1000/(99+1))=1.000IDF()=log(1000/(899+1))=0.046

2. Tf-idf的优缺点

  • 优点:简单快速,而且容易理解。
  • 缺点:有时候用词频来衡量文章中的一个词的重要性不够全面,有时候重要的词出现的可能不够多,而且这种计算无法体现位置信息,无法体现词在上下文的重要性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1613338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iOS 全平台矢量动画库:体积小巧、功能丰富 | 开源日报 No.227

airbnb/lottie-ios Stars: 24k License: NOASSERTION lottie-ios 是一个用于在 iOS 平台上本地渲染 After Effects 矢量动画的库。 该项目主要功能、关键特性、核心优势包括: 跨平台支持:可在 iOS, macOS, tvOS, visionOS, Android 和 Web 上使用实时渲…

NewStarCTF 2023 web

目录 week1 泄漏的秘密 Begin of Upload Begin of HTTP ErrorFlask Begin of PHP R!C!E! EasyLogin week2 游戏高手 include 0。0 ez_sql Unserialize? Upload again! R!!C!!E!! week3 Include 🍐 medium_sql POP Gadget GenShin wee…

jvm调优的命令和工具总结与分析

目录 1 前置启动程序 2 Jmap查看内存信息 2.1 jmap ‐histo查看历史实例信息 2.2 jmap ‐heap查看堆信息: 2.3 jmap ‐dump导出堆内存信息 2 Jstack查找死锁 2.1 用jstack加进程id查找死锁 2.2 还可以用jvisualvm自动检测死锁 3 Jinfo查看参数配置值 3.1 …

Hadoop1X,Hadoop2X和hadoop3X有很大的区别么?

Hadoop的演进从Hadoop 1到Hadoop 3主要是为了提供更高的效率、更好的资源管理、更高的可靠性以及对更多数据处理方式的支持。下面是Hadoop 1, Hadoop 2, 和 Hadoop 3之间的主要区别和演进的原因: Hadoop 1 特点: 主要包括两大核心组件:HDFS&a…

kettle从入门到精通 第五十三课 ETL之kettle MQTT/RabbitMQ consumer实战

1、上一节课我们学习了MQTT producer 生产者步骤,MQTT consumer消费者步骤。该步骤可以从支持MRQTT协议的中间件获取数据,该步骤和kafka consumer 一样可以处理实时数据交互,如下图所示: 2、双击步骤打开MQTT consumer 配置窗口&a…

sso-oauth2单点登录功能笔记

场景:最近公司2个系统需要做单点登录,A系统作为服务器,认证方式是sso-oauth2方式,B系统作为客户端,token方式是ta-token,先来张sso-oauth2认证方式的图 前置准备工作 第一步:要确认谁是服务提…

Python 全栈安全(一)

原文:annas-archive.org/md5/712ab41a4ed6036d0e8214d788514d6b 译者:飞龙 协议:CC BY-NC-SA 4.0 前言 序言 多年前,我在亚马逊搜索了一本基于 Python 的应用程序安全书。我以为会有多本书可供选择。已经有了很多其他主题的 Pyt…

【Linux】MySQL的安装及配置(Ubuntu-18.04)

一、安装MySQL 分别安装MySQL服务器、MySQL客户端、C/C开发库 sudo apt-get install mysql-server sudo apt-get install mysql-client sudo apt-get install libmysqlclient-dev 二、配置MySQL 1.查看默认配置文件,此处的user和password为默认提供的,…

vulfocus靶场thinkphp命令执行cve-2018-1002015

thinkPHP 5.0.x版本和5.1.x版本中存在远程代码执行漏洞,该漏洞源于ThinkPHP在获取控制器名时未对用户提交的参数进行严格的过滤。远程攻击者可通过输入‘\’字符的方式调用任意方法利用该漏洞执行代码 开启靶场: 使用工具: think…

SpringBoot-无法从static上下文引用同非static方法

1.问题 说明:无法从static上下文引用同非static方法。 2.解决 说明:return后面的语句中,调用的是变量的方法,而不是类型的方法!

ChatGPT研究论文提示词集合3-【数据收集】、【数据分析】和【解释与讨论】

点击下方▼▼▼▼链接直达AIPaperPass ! AIPaperPass - AI论文写作指导平台 目录 1.数据收集 2.数据分析 3.讨论与解释 4.书籍介绍 AIPaperPass智能论文写作平台 近期小编按照学术论文的流程,精心准备一套学术研究各个流程的提示词集合。总共14个步…

从零到一大屏开发过程记录

写在前面,博主是个在北京打拼的码农,凭借多年前端工作经验做过各类项目,最近心血来潮在这儿写点东西,欢迎大家多多指教。 对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论和学习的问题可联系我&…

Windows使用freeSSHd搭建sftp服务器

一、安装 1、运行freeSSHd.exe(最好以管理员方式运行) 2、选择安装位置 3、选择全部安装 4、是否创建开始启动栏快捷入口 5、是否创建桌面快捷方式 6、安装 7、安装完成,点击close 8、安装私钥 9、是否要安装为服务 10、全部安装完成 二、配…

强固型工业电脑在码头智能化,龙门吊/流机车载电脑的行业应用

码头智能化行业应用 对码头运营来说,如何优化集装箱从船上到码头堆场到出厂区的各个流程以及达到提高效率。 降低成本的目的,是码头营运获利最重要的议题。为了让集装箱码头客户能够安心使用TOS系统来调度指挥码头上各种吊车、叉车、拖车和人员&#xf…

Linux内核之slab、slub内存分配器实例用法区别(五十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

从零实现诗词GPT大模型:实现Transformer架构

专栏规划: https://qibin.blog.csdn.net/article/details/137728228 首先说明一下,跟其他文章不太一样,在本篇文章中不会对Transformer架构中的自注意力机制进行讲解,而是后面单独1~2篇文章详细讲解自注意力机制,我认为由浅入深的先了解Transformer整体架构和其中比较简单…

Drive Scope for Mac:硬盘健康监测分析工具

Drive Scope for Mac是一款专为Mac用户设计的硬盘健康监测与分析工具,致力于保障用户的数据安全。这款软件功能强大且操作简便,能够实时检测硬盘的各项指标,帮助用户及时发现并解决潜在问题。 Drive Scope for Mac 1.2.23注册激活版下载 Driv…

在RISC-V64架构的CV1811C开发板上应用perf工具进行多线程程序性能分析及火焰图调试

CV1811C环境编译 SDK目录结构 . ├── build // 编译目录,存放编译脚本以及各board差异化配置 ├── buildroot-2021.05 // buildroot开源工具 ├── freertos // freertos系统 ├── fsbl // fsbl启动固件,prebuilt形式存在…

mklink 命令的使用(适用场景:C盘爆满,转移到其他盘)

一、背景 将Oracle数据库安装在D盘,由于磁盘爆满,需要将数据库转移到其他磁盘(如:J盘)。 在移动数据库之后,会出现数据库无法使用的情况,这时该如何解决?经了解,可以使用…

基于Hadoop的电商用户行为分析系统设计与实现的系统架构设计

采集层:利用Flume采集电商服务器端用户行为数据,把数据处理后发送至HDFS。 存储层:用户行为数据采集上传至HDFS存储, 导入到数据仓库Hive进行计算处理,分析结果保存至MySql数据库中。 计算层:根据分析需求建…