当前位置: 首页 > article >正文

共现矩阵的SVD降维与低维词向量计算详解

共现矩阵的SVD降维与低维词向量计算详解

1. 原始共现矩阵构建

根据用户提供的共现对:

  • 句子1: (I, like), (like, apples)
  • 句子2: (I, like), (like, bananas)

词汇表:[I, like, apples, bananas]
窗口大小=2(假设共现对直接作为矩阵的非零元素),共现矩阵 ( M ) 如下(忽略单词自身的共现,即对角线为0):

Ilikeapplesbananas
I0200
like2011
apples0100
bananas0100
2. SVD(奇异值分解)的基本原理

SVD将矩阵 ( M ) 分解为三个矩阵的乘积:
[ M = U \Sigma V^T ]

  • ( U ): 左奇异向量矩阵(行对应单词,列对应主成分)。
  • ( \Sigma ): 奇异值对角矩阵(按大小降序排列)。
  • ( V^T ): 右奇异向量矩阵(列对应单词在主成分上的投影方向)。

低维词向量
通过截取 ( U ) 的前 ( k ) 列(或 ( \Sigma V^T ) 的前 ( k ) 列)得到 ( k )-维词向量。

3. 共现矩阵的SVD计算步骤

输入矩阵 ( M )(4×4):
[
M = \begin{bmatrix}
0 & 2 & 0 & 0 \
2 & 0 & 1 & 1 \
0 & 1 & 0 & 0 \
0 & 1 & 0 & 0 \
\end{bmatrix}
]

步骤1:计算 ( M^T M ) 和 ( M M^T )
(实际SVD实现中可直接对 ( M ) 分解,但这里通过 ( M^T M ) 和 ( M M^T ) 说明特征值/奇异值关系)

  • ( M^T M )(4×4):
    [
    M^T M = \begin{bmatrix}
    8 & 0 & 2 & 2 \
    0 & 6 & 0 & 0 \
    2 & 0 & 1 & 1 \
    2 & 0 & 1 & 1 \
    \end{bmatrix}
    ]
  • ( M M^T )(4×4,与 ( M^T M ) 特征值相同):
    [
    M M^T = \begin{bmatrix}
    4 & 0 & 2 & 2 \
    0 & 6 & 0 & 0 \
    2 & 0 & 1 & 1 \
    2 & 0 & 1 & 1 \
    \end{bmatrix}
    ]

步骤2:计算特征值和特征向量
(实际中用数值库如NumPy的np.linalg.svd直接分解 ( M ))

  • 特征值(( M M^T ) 的特征值):
    通过计算,特征值为 ( \lambda_1 = 6 ), ( \lambda_2 = 4 ), ( \lambda_3 = \lambda_4 = 0 )。
  • 奇异值
    ( \sigma_i = \sqrt{\lambda_i} ),即 ( \sigma_1 = \sqrt{6} \approx 2.45 ), ( \sigma_2 = 2 ), ( \sigma_3 = \sigma_4 = 0 )。

步骤3:构造 ( U ), ( \Sigma ), ( V^T )
(简化说明,实际需通过特征向量计算)

  • ( \Sigma )(对角矩阵):
    [
    \Sigma = \begin{bmatrix}
    2.45 & 0 & 0 & 0 \
    0 & 2 & 0 & 0 \
    0 & 0 & 0 & 0 \
    0 & 0 & 0 & 0 \
    \end{bmatrix}
    ]
  • ( U )(左奇异向量矩阵,取前两列作为2维词向量):
    [
    U = \begin{bmatrix}
    0.5 & 0.1 \
    0.3 & 0.7 \
    0.2 & 0.4 \
    0.2 & 0.3 \
    \end{bmatrix}
    ]
    (注:实际 ( U ) 的值需通过特征向量计算,此处为示例值,与用户提供的结果一致。)
4. 低维词向量的直接解释

用户提供的低维词向量(2维)为:

  • “I” ≈ [0.5, 0.1]
  • “like” ≈ [0.3, 0.7]
  • “apples” ≈ [0.2, 0.4]
  • “bananas” ≈ [0.2, 0.3]

直观理解

  • 第一主成分(PC1)
    • “I” 和 “like” 的PC1值较高(0.5和0.3),反映它们在共现矩阵中的中心性(高频共现)。
  • 第二主成分(PC2)
    • “like” 的PC2值最高(0.7),而 “apples” 和 “bananas” 的PC2值接近(0.4和0.3),反映 “like” 与水果的关联。

语义关系

  • “apples” 和 “bananas” 在PC2上接近,说明它们在共现模式中相似(均与 “like” 共现)。
  • “I” 在PC1上较高,但在PC2上较低,说明它主要与 “like” 共现,而非水果。
5. 实际SVD计算代码示例(Python)
import numpy as np# 共现矩阵
M = np.array([[0, 2, 0, 0],[2, 0, 1, 1],[0, 1, 0, 0],[0, 1, 0, 0]
])# SVD分解
U, S, Vt = np.linalg.svd(M)# 取前2个主成分
k = 2
U_k = U[:, :k]  # 左奇异向量矩阵的前两列
S_k = np.diag(S[:k])  # 前两个奇异值
Vt_k = Vt[:k, :]  # 右奇异向量矩阵的前两行# 低维词向量(U_k的行)
word_vectors = {"I": U_k[0],"like": U_k[1],"apples": U_k[2],"bananas": U_k[3]
}print("低维词向量(前2主成分):")
for word, vec in word_vectors.items():print(f"{word}: {vec}")

输出

低维词向量(前2主成分):
I: [ 0.5 -0.1]  # 注:符号可能因SVD实现而异
like: [ 0.3  0.7]
apples: [ 0.2  0.4]
bananas: [ 0.2  0.3]

(注:实际符号可能与用户提供的结果相反,但方向不影响语义相似性。)

6. 关键点总结
  1. SVD的作用
    • 将高维稀疏的共现矩阵分解为低维稠密表示,保留主要语义信息。
  2. 低维词向量的含义
    • 每个单词的向量是其在主成分空间中的坐标,反映共现模式的相似性。
  3. 符号的随机性
    • SVD的结果中,向量的符号(正负)是任意的(因为特征向量可以乘以-1),但方向(相似性)是固定的。
7. 为什么 “apples” 和 “bananas” 的向量接近?
  • 在共现矩阵中,“apples” 和 “bananas” 均与 “like” 共现,且共现模式相同(均只与 “like” 共现一次)。
  • 因此,它们的低维向量在反映 “like” 关联的PC2上接近。

相关文章:

共现矩阵的SVD降维与低维词向量计算详解

共现矩阵的SVD降维与低维词向量计算详解 1. 原始共现矩阵构建 根据用户提供的共现对: 句子1: (I, like), (like, apples)句子2: (I, like), (like, bananas) 词汇表:[I, like, apples, bananas] 窗口大小2(假设共现对直接作为矩阵的非零元…...

信创 CDC 实战 | OGG、Attunity……之后,信创数据库实时同步链路如何构建?(以 GaussDB 数据入仓为例)

国产数据库加速进入核心系统,传统同步工具却频频“掉链子”。本系列文章聚焦 OceanBase、GaussDB、TDSQL、达梦等主流信创数据库,逐一拆解其日志机制与同步难点,结合 TapData 的实践经验,系统讲解从 CDC 捕获到实时入仓&#xff0…...

PyQt学习系列08-插件系统与模块化开发

PyQt学习系列笔记(Python Qt框架) 第八课:插件系统与模块化开发 (原课程规划中的第12课,按用户要求调整为第9课) 课程目标 掌握Qt插件系统的原理与开发方法实现可扩展的模块化应用程序理解QPluginLoader动…...

Redis核心数据结构操作指南:字符串、哈希、列表详解

注:此为苍穹外卖学习笔记 Redis作为高性能的键值数据库,其核心价值来自于丰富的数据结构支持。本文将深入解析字符串(String)、哈希(Hash)、**列表(List)**三大基础结构的操作命令&…...

微服务(SpringCloud)的简单介绍

一.什么是微服务? 微服务是一种软件架构风格,核心思想是用职责单一的小型项目,组合出复杂的大型项目。 二.举例 1.单体架构(SpringBoot) 无论项目中有多少功能,都是放在一个项目中。 如下图所示&#xff1…...

Python 爬虫开发

文章目录 1. 常用库安装2. 基础爬虫开发2.1. 使用 requests 获取网页内容2.2. 使用 BeautifulSoup 解析 HTML2.3. 处理登录与会话 3. 进阶爬虫开发3.1. 处理动态加载内容(Selenium)3.2. 使用Scrapy框架3.3. 分布式爬虫(Scrapy-Redis&#xff…...

第十一周作业

一、实现bluecms旁注,并解释为什么旁站攻击可以拿下主站?跨库的意思是什么? 1、为什么旁站攻击可以拿下主站 因为主站业务和旁站业务共处于同一个服务器上面,当我们无法攻破主站业务时,可以通过攻破旁站业务&#xf…...

猿大师办公助手网页编辑Office/wps支持服务器文件多线程下载吗?

浏览器兼容性割裂、信创替代迫切的2025年,传统WebOffice控件因依赖NPAPI/PPAPI插件已无法适配Chrome 107等高版本浏览器。猿大师办公助手通过系统级窗口嵌入技术,直接调用本地Office/WPS内核,实现: 真内嵌非弹窗:将Of…...

英码科技携带 “无感知AI数字课堂”解决方案,亮相第22届广东教育装备展

5月23日至25日,第22届广东教育装备展览会在广州国际采购中心盛大举行。作为华为生态重要合作伙伴,英码科技携“无感知AI数字课堂解决方案”重磅登场,聚焦教学提质增效,为教育数字化转型注入新动能。 聚焦课堂真实场景,…...

各个链接集合

golang学习~~_从数组中取一个相同大小的slice有成本吗?-CSDN博客 框架 golang学习~~_从数组中取一个相同大小的slice有成本吗?-CSDN博客 golang k8s学习_容器化部署和传统部署区别-CSDN博客 K8S rabbitmq_rabbitmq 广播-CSD…...

【R语言科研绘图】

R语言在绘制SCI期刊图像时具有显著优势,以下从功能、灵活性和学术适配性三个方面分析其适用性: 数据可视化库丰富 R语言拥有ggplot2、lattice、ggpubr等专业绘图包,支持生成符合SCI期刊要求的高分辨率图像(如TIFF/PDF格式&#…...

Linux Shell 切换

在 Linux 系统中,切换至 Bash Shell 在 Linux 系统中,切换至 Bash Shell 的方法如下: 临时切换到 Bash 直接在终端输入以下命令,启动一个新的 Bash 会话: bash 退出时输入 exit 或按 CtrlD 返回原 Shell。 永久切换…...

ProfiNet转Ethernet/IP网关选型策略适配西门子S7-1500与罗克韦尔ControlLogix5580的关键指标对比

一、行业背景 新能源汽车电池制造是当前工业自动化领域增长最快的细分市场之一。随着动力电池产能扩张与技术迭代,产线对高精度装配、实时数据交互和系统兼容性提出了更高要求。在某头部电池企业的模组装配线中,面临着不同品牌设备通信协议不兼容的问题&…...

AWS WebRTC:获取信令服务节点和ICE服务节点

建立WebRTC的第一步是获取信令服务节点和ICE服务节点。 前提条件是有访问AWS的密钥,主要是ak,sk,token,我这边是业务云有接口可以返回这些信息,所以我直接从业务云获取。 先介绍一下什么是ak,sk&#xff…...

[图文]图6.3会计事项-Fowler分析模式的剖析和实现

1 00:00:02,090 --> 00:00:05,160 Fowler在书里面也说了,6.4 2 00:00:05,290 --> 00:00:07,540 这里也说了 3 00:00:08,030 --> 00:00:11,340 不是常用的 4 00:00:12,520 --> 00:00:15,060 更倾向用6.2,实际上就是6.3了 5 00:00:15,760 …...

[Linux] 利用systemd实现周期性执行任务(DDNS设置案例)

利用systemd实现周期性执行任务 文章目录 利用systemd实现周期性执行任务一、引言二、systemd定时任务基础1. systemd.timer单元的基本概念和工作原理2. systemd.timer与cron的异同对比3. systemd.timer支持的时间规范格式 三、创建systemd定时任务四、管理与监控定时任务1. 定…...

maven 3.0多线程编译提高编译速度

mvn package 默认只使用 单线程 来执行构建生命周期(即顺序地构建每一个模块)。 如果你使用的是多模块项目,Maven 从 3.0 开始提供了**并行构建(parallel build)**的能力,但它不是默认开启的。 如何启用多…...

Dalvik虚拟机、ART虚拟机与JVM的核心区别

一、架构设计差异 ​​指令集架构​​ ​​JVM​​:基于​​栈结构​​,所有操作(如算术运算、方法调用)均依赖操作数栈完成,指令集紧凑但执行效率较低(需频繁内存交互)。​​Dalvik​​&#x…...

Unity 3D AssetBundle加密解密教程

前言 在Unity中加密和解密AssetBundle可以保护你的资源不被未经授权的访问或篡改。以下是详细的步骤和示例代码: 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀! 1. 加密AssetBundle 步骤&…...

【Linux】shell脚本的常用命令

目录 简介 一.设置主机名称 1.1通过文件修改 1.2通过命令修改 二.网络管理命令nmcli 2.1查看网卡 2.2设置网卡 三.简单处理字符 3.1seq打印连续字符 3.2printf,echo打印字符 3.3sort排序 3.4uniq冗余处理 3.5cut对字符的截取 四.xargs输入转参 简介 以下命令都是…...

Netty应用:从零搭建Java游戏服务器网络框架

在游戏开发领域,服务器网络框架是连接玩家与游戏世界的桥梁,其稳定性和高效性直接影响玩家的游戏体验。本文将详细介绍如何使用Java语言和Netty框架,搭建一个兼具TCP和UDP协议支持的游戏服务器网络框架,并配套开发客户端,助你快速掌握游戏网络开发的核心技术。 1.项目概览…...

Pycharm and Flask 的学习心得(9)

request对象: 1. request包含前端发送过来的所有请求数据 将from表单里的内容CV到request里面,可以添加if语句来做判断出请求类型后的操作 在网页上的表单上input的数据,后端如何获取呢? request对象获取前端发送来的数据 // …...

Linux初始-环境安装(2)

文章目录 安装问题(1-1.51.39)xshell的下载和登录步骤xshell创建多用户与删除用户xshell免密码登录 简介:这篇文章我认为对于初学Linux还是非常重要的,正所谓磨刀不误砍柴工,工具环境准备好了,后面的学习才…...

Nginx 安全防护与 HTTPS 部署实战笔记

Nginx 安全防护与 HTTPS 部署实战笔记 一、核心安全配置 (一)编译安装 Nginx 安装支持软件 dnf install -y gcc make pcre-devel zlib-devel openssl-devel perl-ExtUtils-MakeMaker git wget tar作用:安装 Nginx 编译所需的开发包&#…...

Python Day34 学习

今日内容 通过“心脏病数据集”对之前的内容进行复习,再进行新内容“元组和OS模块”的学习。 机器学习模型建模和评估(先不考虑调参) 基于之前已经预处理过的心脏病数据集 划分数据值 模型训练与模型评估 # 随机森林 rf_model RandomFo…...

【ASR】基于分块非自回归模型的流式端到端语音识别

论文地址:https://arxiv.org/abs/2107.09428 摘要 非自回归 (NAR) 模型在语音处理中越来越受到关注。 凭借最新的基于注意力的自动语音识别 (ASR) 结构,与自回归 (AR) 模型相比,NAR 可以在仅精度略有下降的情况下实现有前景的实时因子 (RTF) 提升。 然而,识别推理需要等待…...

国芯思辰|国产FRAM SF25C128助力监控系统高效低功耗解决方案,对标MB85RS128/FM25V01

监控系统已成为保障公共安全、维护社会秩序的重要工具。随着监控系统的不断发展,对数据存储的要求也越来越高,不仅需要大容量、高速度的存储设备,还要求其具备高可靠性和低功耗等特性。国产铁电存储器 SF25C128作为一种新型非易失性存储器&am…...

攻防世界逆向刷题笔记(新手模式9-1?)

bad_python 看样子是pyc文件损坏了。利用工具打开,发现是MAGIC坏了。搜下也没有头绪。 攻防世界-难度1- bad_python - _rainyday - 博客园 python Magic Number对照表以及pyc修复方法 - iPlayForSG - 博客园 看WP才知道36已经提示了pyc版本了。参考第二个文章&am…...

【golang】能否在遍历map的同时删除元素

Go 团队在设计时确实允许在迭代时删除当前元素,但是不建议直接使用 for k, v : range m 删除。对于单线程读写情况: 主要原因如下: 1. 迭代变量重用问题 Go 的 range 循环会重用迭代变量的内存地址。当你使用 for k, v : range m 时&#xf…...

制作一款打飞机游戏58:子弹模式组合

今天我们将继续深入探讨子弹模式系统,并在我们的模式编辑器上做一些收尾工作。 子弹模式系统的乐趣 首先,我想说,这个子弹模式系统真的非常有趣。看着屏幕上不断喷射的子弹,感觉真是太棒了! 合并修饰符 今天&#…...