【NLP】 3. Distributional Similarity in NLP(分布式相似性)

Distributional Similarity in NLP(分布式相似性)

分布式相似性(Distributional Similarity) 是自然语言处理(NLP)中的核心概念,基于“相似的单词出现在相似的上下文中”这一假设。它用于衡量单词之间的相似性,广泛应用于词向量、信息检索、文本分类等任务。

1. 分布式假设(Distributional Hypothesis)

分布式相似性基于以下假设:

“You shall know a word by the company it keeps.”
—— J. R. Firth (1957)

即,两个单词如果经常出现在相似的上下文中,那么它们的语义相似
例如:

  • “猫” 和 “狗” 经常出现在 “宠物”、“喜欢吃”、“可爱”等词的上下文中,因此它们的意义接近。
  • “汽车” 和 “自行车” 都出现在 “交通工具”、“驾驶”、“速度” 等上下文中,因此它们可能具有相似性。

2. 计算分布式相似性的方法

2.1 共现矩阵(Co-occurrence Matrix)

最基础的分布式相似性计算方法是共现矩阵

  • 统计一个词与不同词的共现次数,形成一个词-词矩阵。
  • 每个单词的向量由其共现次数构成。

示例:

汽车自行车可爱速度
5300100
350080
汽车0064010
自行车004609

问题:

  • 稀疏性:矩阵可能非常大,大量词对没有共现。
  • 维度灾难:单词的维度取决于整个词汇表大小,计算开销大。

2.2 词向量(Word Embeddings)

为了解决稀疏性问题,使用低维向量表示单词

  1. 基于共现矩阵的降维方法
    • PCA(主成分分析)
    • SVD(奇异值分解)
    • PPMI(正点互信息)
  2. 预测式方法(Neural-based Models)
    • Word2Vec(CBOW & Skip-Gram)
    • GloVe(基于矩阵分解)
    • FastText(子词信息)
    • BERT & Transformer Embeddings(上下文相关词向量)

示例:

from gensim.models import Word2Vec# 训练 Word2Vec
sentences = [["猫", "喜欢", "鱼"], ["狗", "喜欢", "骨头"], ["汽车", "行驶", "速度", "快"]]
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, sg=0)# 获取 "猫" 的词向量
vector = model.wv["猫"]
print(vector)

3. 计算词相似性的方法

3.1 余弦相似度(Cosine Similarity)

余弦相似度衡量两个词向量的夹角:

  • sim ( A , B ) = A ⋅ B ∥ A ∥ ∥ B ∥ \text{sim}(A, B) = \frac{A \cdot B}{\|A\| \|B\|} sim(A,B)=A∥∥BAB

    结果范围:[][-1,1][−1,1]

  • 1 表示完全相似,0 表示不相关,-1 表示完全相反

3.2 欧几里得距离(Euclidean Distance)

d ( A , B ) = ∑ ( A i − B i ) 2 d(A, B) = \sqrt{\sum (A_i - B_i)^2} d(A,B)=(AiBi)2

  • 距离越小,词的相似度越高。
  • 适用于低维向量。

3.3 Jaccard 相似度

用于离散词袋模型

J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A, B) = \frac{|A \cap B|}{|A \cup B|} J(A,B)=ABAB

  • 适用于 n-gram、关键词提取。

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

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

相关文章

【C#学习】协程等待

来源GPT,仅记录学习 yield return WaitForEndOfFrame() 适用于 渲染结束后再执行代码,但 WebGL 可能不适合这个操作,会拖慢帧率。(渲染得太慢) yield return null; 让代码在下一帧的 Update() 里继续运行,更加流畅。 …

【项目】负载均衡式在线OJ

负载均衡式在线OJ 目录 负载均衡式在线OJ 1.项目介绍: 2.comm 2.1 log.hpp 日志等级 开放式日志 时间戳工具 2.2 util.hpp TimeUtil类 PathUtil类 FileUtil类 StringUtil类 3.Compile_server 3.1compile_run.hpp RemoveTempFile CodeToDesc Start 3.…

实现“XXX一张图“进行环境设施设备可视化管理

实现“电网一张图”、“铁路一张图”、“水库一张图”、“森林一张图”等概念,本质上是将某一领域的空间数据、设施设备、运行状态等信息整合到一个统一的数字化平台上,实现全域可视化、智能化管理和协同运营。这种“一张图”模式依赖于地理信息系统(GIS)、物联网(IoT)、…

《基於Python的网络爬虫抓包技术研究与应用》

## 摘要 本文探讨了基于Python的网络爬虫抓包技术及其应用。随着互联网数据的快速增长,网络爬虫技术在数据采集和分析中扮演着越来越重要的角色。本研究首先介绍了网络爬虫的基本概念和Python在爬虫开发中的优势,然后深入分析了抓包技术的原理和常用工具…

【蓝桥杯速成】| 1.暴力解题

1高频考点与暴力解题_哔哩哔哩_bilibili 感谢up主分享,以下内容是学习笔记,以c为主,部分python 题目一:维纳的年龄 题目内容 美国数学家维纳(N.Wiener)智力早熟, 11岁就上了大学。他曾在1935~1936年应邀来中国清华大…

[C++Qt] 槽函数收不到信号问题(信号的注册)

📢博客主页:https://loewen.blog.csdn.net📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由 丶布布原创,首发于 CSDN,转载注明出处🙉📢现…

从零开始用AI开发游戏(一)

1. 核心玩法设计 核心目标:玩家需在随机生成的3D迷宫中寻找出口,躲避陷阱、收集道具、解开谜题。核心机制: 随机生成迷宫:每次游戏生成不同结构的迷宫(递归分割算法或深度优先搜索)。第一人称视角&#xf…

基于ssm的宠物医院信息管理系统(全套)

一、系统架构 前端:html | layui | vue | element-ui 后端:spring | springmvc | mybatis 环境:jdk1.8 | mysql | maven | tomcat | idea | nodejs 二、代码及数据库 三、功能介绍 01. web端-首页1 02. web端-首页…

【CXX】6.7 SharedPtr<T> — std::shared_ptr<T>

std::shared_ptr 的 Rust 绑定称为 SharedPtr。 限制: SharedPtr 不支持 T 为不透明的 Rust 类型。对于在语言边界上传递不透明 Rust 类型的所有权,应改用 Box(C 中的 rust::Box)。 示例 // src/main.rsuse std::ops::Deref; …

利用python生成excel中模板范围对应的shape文件

利用python生成excel中模板范围对应的shape文件 # -*- coding: utf-8 -*- import os.pathimport pandas as pd from shapely.geometry import Polygon from shapely.wkt import dumps import argparse# 创建解析器 parser argparse.ArgumentParser(description"这是一个…

cursor使用

引入私有文档 设置-> Features->下滑找到Docs url后边多加一个 / 可以拉取url下所有的页面(子页面,子目录),不加只拉取url当前页面 使用 选择 Docs 回车 选择 文档 直接解析链接 链接 回车 搜索引擎 web 对比git版本差异 git 选择其中一个 g…

达梦数据库中插入导出图片的方法与应用

达梦数据库中插入导出图片的方法与应用 在数据库的实际应用场景中,图片存储是一项常见且重要的需求。以电商平台为例,商品展示图片是吸引消费者的关键元素;而在社交软件里,用户头像更是个人形象的直观体现。针对达梦数据库&#…

【云原生】动态资源分配(DRA)深度洞察报告

1. DRA 的发展与设计灵感 Kubernetes 早期通过 Device Plugin(设备插件)机制支持 GPU、NIC 等特殊硬件,将节点上可用设备数量上报给 kubelet 和调度器。但设备插件模式存在局限:调度器只能根据节点标签等属性粗粒度筛选&#xff…

嵌入式八股ARM篇

前言 ARM篇主要介绍一下寄存器和中断机制,至于汇编这一块…还请大家感兴趣自行学习 1.寄存器 R0 - R3 R4 - R11 寄存器 R0 - R3一般用作函数传参 R4 - R11用来保存程序运算的中间结果或函数的局部变量 在函数调用过程中 注意在发生异常的时候 cortex-M0架构会自动将R0-R3压入…

Python 实现的采集诸葛灵签

Python 实现的采集诸葛灵签 项目介绍 这是一个基于 Python 开发的诸葛灵签数据采集和展示项目。通过爬虫技术获取诸葛神签的签文和解签内容,并提供数据存储和查询功能。 项目结构 zhuge/├── zhuge_scraper.py # 爬虫主程序├── zhuge_pages/ # 数据存储目录…

【C++项目实战】校园公告搜索引擎:完整实现与优化指南

🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚一、项目概述 📖1.项目背景 📖2.主要功能 📖3.界面展…

代理(Delegate)、闭包(Closure)、Notification(通知中心) 和 swift_event_bus适用场景和工作方式

在 Swift 开发中,在 Swift 开发中,代理(Delegate)、闭包(Closure)、Notification(通知中心) 和 swift_event_bus 主要用于 组件之间的通信,但它们的适用场景和工作方式有…

设计模式--单例模式(Singleton)【Go】

引言 在设计模式中,单例模式(Singleton Pattern)是一种非常常见且实用的模式。它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。这种模式在需要全局唯一对象的场景中非常有用,比如配置管理、日志记录、数…

MySQL数据库复制

文章目录 MySQL数据库复制一、复制的原理二、复制的搭建1.编辑配置文件2.在主库上创建复制的用户3.获取主库的备份4.基于从库的恢复5.建立主从复制6.开启主从复制7.查看主从复制状态 MySQL数据库复制 MySQL作为非常流行的数据库,支撑它如此出彩的因素主要有两个&am…

Sourcetree——使用.gitignore忽略文件或者文件夹

一、为何需要文件忽略机制? 1.1 为什么要会略? 对于开发者而言,明智地选择忽略某些文件类型,能带来三大核心优势: 仓库纯净性:避免二进制文件、编译产物等污染代码库 安全防护:防止敏感信息&…