自然语言处理(一):基于统计的方法表示单词

文章目录

    • 1. 共现矩阵
    • 2. 点互信息
    • 3. 降维(奇异值分解)

1. 共现矩阵

将一句话的上下文大小窗口设置为1,用向量来表示单词频数,如:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将每个单词的频数向量求出,得到如下表格,即共现矩阵
在这里插入图片描述
我们可以用余弦相似度(cosine similarity)来计算单词向量的相似性:
similarity ⁡ ( x , y ) = x ⋅ y ∥ x ∥ ∥ y ∥ = x 1 y 1 + ⋯ + x n y n x 1 2 + ⋯ + x n 2 y 1 2 + ⋯ + y n 2 \operatorname{similarity}(\boldsymbol{x}, \boldsymbol{y})=\frac{\boldsymbol{x} \cdot \boldsymbol{y}}{\|\boldsymbol{x}\|\|\boldsymbol{y}\|}=\frac{x_{1} y_{1}+\cdots+x_{n} y_{n}}{\sqrt{x_{1}^{2}+\cdots+x_{n}^{2}} \sqrt{y_{1}^{2}+\cdots+y_{n}^{2}}} similarity(x,y)=x∥∥yxy=x12++xn2 y12++yn2 x1y1++xnyn

有时会出现分母为0的情况,在具体代码实现的时候,我们可以加上一个微小值,如1e-8

def cos_similarity(x, y, eps=1e-8):nx = x / (np.sqrt(np.sum(x ** 2)) + eps)ny = y / (np.sqrt(np.sum(y ** 2)) + eps)return np.dot(nx, ny)

2. 点互信息

在语料库中可能会看到很多“…the car…”这样的短语。实际上,与 the相比,drive和 car 的相关性更强。为了避免这种情况,可以引入PMI

PMI ⁡ ( x , y ) = log ⁡ 2 P ( x , y ) P ( x ) P ( y ) = log ⁡ 2 C ( x , y ) N C ( x ) N C ( y ) N = log ⁡ 2 C ( x , y ) ⋅ N C ( x ) C ( y ) \operatorname{PMI}(x, y)=\log _{2} \frac{P(x, y)}{P(x) P(y)}=\log _{2} \frac{\frac{\boldsymbol{C}(x, y)}{N}}{\frac{\boldsymbol{C}(x)}{N} \frac{\boldsymbol{C}(y)}{N}}=\log _{2} \frac{\boldsymbol{C}(x, y) \cdot N}{\boldsymbol{C}(x) \boldsymbol{C}(y)} PMI(x,y)=log2P(x)P(y)P(x,y)=log2NC(x)NC(y)NC(x,y)=log2C(x)C(y)C(x,y)N

P(x) 表示 x 发生的概率,P(y) 表示 y 发生的概率,P(x, y) 表示 x
和 y 同时发生的概率。PMI 的值越高,表明相关性越强。

这里假设语料库的单词数量(N)为 10 000,the 出现 100 次,car 出现 20 次,drive 出现 10 次,the 和 car 共现 10 次,car 和 drive 共现 5 次。

P M I ( " t h e " , " c a r " ) = l o g 2 10 ⋅ 10000 1000 ⋅ 20 ≈ 2.32 PMI("the","car")=log_2\frac{10\cdot 10000}{1000 \cdot 20}\approx 2.32 PMI("the","car")=log210002010100002.32
P M I ( " c a r " , " d r i v e " ) = l o g 2 5 ⋅ 10000 20 ⋅ 10 ≈ 7.79 PMI("car","drive")=log_2\frac{5\cdot 10000}{20 \cdot 10}\approx 7.79 PMI("car","drive")=log220105100007.79

得出的PMI值,后者比前者要高,这是我们所需要的结果

3. 降维(奇异值分解)

奇异值分解(Singular Value Decomposition,SVD)。SVD 将任意矩阵分解为 3 个矩阵的乘积,如下式所示:

X = U S V T X=USV^T X=USVT

上面的例子只考虑了一句话中少量单词的共现矩阵,如果我们使用一个真正的语料库,那么这个矩阵将变得十分庞大,这是一个很大的稀疏矩阵,我们需要对其进行降维,这里用到奇异值分解。
在numpy中可以用

U, S, V = np.linalg.svg()

在这里插入图片描述
在这里插入图片描述
我们只需要取矩阵U的前两个元素即可将其降维到二维向量。

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

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

相关文章

2023!6招玩转 Appium 自动化测试

Appium是个什么鬼 Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于IOS和Android以及firefox的操作系统。原生的应用是指用android或ios的sdk编写的应用,移动网页应用是指网页…

DevEco Studio中如何设置HarmonyOS/OpenHarmony应用开发

DevEco Studio内置有帮助中心,初学HarmonyOS 及OpenHarmony应用、元服务的开发者,通过内置的帮助中去系统的学习相关内容,是边练边学,快速上手的最佳方式。 一、帮助 二、快速开始 三、HarmonyOS应用、元服务开发相关 四、OpenHa…

扔掉你的开发板,跟我玩Mcore-全志h616

本文转载自WhyCan Forum(哇酷开发者社区): https://whycan.com/t_10024.html 作者leefei 这是一个1.69寸触摸小电视。使用全志H616芯片,板上硬件有mpu6050陀螺仪,USB转ttl调试串口,一个USB接口,WIFI&蓝牙&#x…

爬虫代理在数据采集中的应用详解

随着互联网技术的不断发展,数据采集已经成为了各个行业中必不可少的一项工作。在数据采集的过程中,爬虫代理的应用越来越受到了重视。本文将详细介绍爬虫代理在数据采集中的应用。 什么是爬虫代理? 爬虫代理是指利用代理服务器来隐藏真实的IP…

异步FIFO设计的仿真与综合技术(5)

概述 本文主体翻译自C. E. Cummings and S. Design, “Simulation and Synthesis Techniques for Asynchronous FIFO Design 一文,添加了笔者的个人理解与注释,文中蓝色部分为笔者注或意译。前文链接: 异步FIFO设计的仿真与综合技术&#xf…

Scotch: Combining SGX and SMM to Monitor Cloud Resource Usage【TEE的应用】

目录 摘要引言贡献 背景SMMXen Credit Scheduler与资源核算SGX 威胁模型Scheduler attacksResource interference attacksVM Escape attacks 架构Resource Accounting WorkflowCost of Accounting 具体的部署和评估见论文相关工作Resource Accounting基于SMM的方法基于SGX的系统…

C# Onnx Yolov8 Detect 物体检测

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System…

Kakfa - Producer机制原理与调优

Producer是Kakfa模型中生产者组件,也就是Kafka架构中数据的生产来源,虽然其整体是比较简单的组件,但依然有很多细节需要细品一番。比如Kafka的Producer实现原理是什么,怎么发送的消息?IO通讯模型是什么?在实…

小谈设计模式(1)—总序

小谈设计模式(1)—总序 专栏地址开始操作设计模式总论设计模式是什么组成要素模式名称问题描述解决方案效果描述 设计模式有什么作用提供可重用的解决方案提高代码的可读性和可维护性促进代码的可扩展性提高代码的灵活性和可重用性促进团队合作和沟通作用…

如何统计iOS产品不同渠道的下载量?

一、前言 在开发过程中,Android可能会打出来很多的包,用于标识不同的商店下载量。原来觉得苹果只有一个商店:AppStore,如何做出不同来源的统计呢?本篇文章就是告诉大家如何做不同渠道来源统计。 二、正文 先看一下苹…

一、K近邻算法K-NN(有监督学习)

一、算法思路 K近邻算法,k-nearest neighbor,即K-NN 通俗来说:给定一个元素,然后以该元素坐标为圆心开始画圆,其中K值是超参数需要人为给定,圆的半径逐渐增大(距离度量采用欧氏距离),直到包含其…

HTML中的<canvas>元素

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ canvas元素⭐ 用途⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们…