向量空间模型(VSM)的余弦定理公式(cos)

2023-10-06 03:42

本文主要是介绍向量空间模型(VSM)的余弦定理公式(cos),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

相信很多学习向量空间模型(Vector Space Model)的人都会被其中的余弦定理公式所迷惑..

 

因为一看到余弦定理,肯定会先想起初中时的那条最简单的公式cosA=a/c(邻边比斜边),见下图:

但是,初中那条公式是只适用于直角三角形的,而在非直角三角形中,余弦定理的公式是:

cosA=(c2 + b2 - a2)/2bc

不过这条公式也和向量空间模型中的余弦定理公式不沾边,迷惑..

 

引用吴军老师的数学之美系列的余弦定理和新闻的分类里面的一段:

-------------------引用开始分界线------------------------

假定三角形的三条边为 a, b 和 c,对应的三个角为 A, B 和 C,那么角 A 的余弦

如果我们将三角形的两边 b 和 c 看成是两个向量,那么上述公式等价于

其中分母表示两个向量 b 和 c 的长度,分子表示两个向量的内积。

举一个具体的例子,假如新闻 X 和新闻 Y 对应向量分别是x1,x2,...,x64000 和y1,y2,...,y64000,

那么它们夹角的余弦等于

 

-------------------引用完毕分界线------------------------

 

高中那条公式又怎么会等价于向量那条公式呢?

原来它从高中的平面几何跳跃到大学的线性代数的向量计算..

关于线性代数中的向量和向量空间,可以参考下面两个页面:

Egwald Mathematics: Linear Algebra

Linear Algebra: Direction Cosines

 

在线性代数的向量计算的余弦定理中,

* 分子是两个向量的点积(wiki),点积的定理和计算公式:

The dot product of two vectors a = [a1a2, … , an] and b = [b1b2, … , bn] is defined as:

 

点积(dot product),又叫内积,数量积..(Clotho注: product常见的是产品的意思,但在数学上是乘积的意思.)

 

* 分母是两个向量的长度相乘.这里的向量长度的计算公式也比较难理解.

假设是二维向量或者三维向量,可以抽象地理解为在直角坐标轴中的有向线段,如图:

d2 = x2 + y2   ->   d = sprt(x2 + y2)

 

d2 = x2 + y2 + z  ->   d = sprt(x2 + y2 + z2)

 

三维以上的维度很难用图来表示,但是再多维度的向量,也仍然可以用这条公式来计算:

dn2 = x12 + x22 + .. + xn  ->   dn = sprt(x12 + x22 + .. + xn2)

 

在文本相似度计算中,向量中的维度x1,x2..xn其实就是词项(term)的权重,一般就是词项的tf-idf值.

而这条看上去很抽象的公式,其实就是为了计算两篇文章的相似度.

 

文本相似度计算的处理流程是:

1.对所有文章进行分词

2.分词的同时计算各个词的tf值

3.所有文章分词完毕后计算idf值

4.生成每篇文章对应的n维向量(n是切分出来的词数,向量的项就是各个词的tf-idf值)

5.对文章的向量两篇两篇代入余弦定理公式计算,得出的cos值就是它们之间的相似度了

这篇关于向量空间模型(VSM)的余弦定理公式(cos)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/152757

相关文章

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

利用Python实现添加或读取Excel公式

《利用Python实现添加或读取Excel公式》Excel公式是数据处理的核心工具,从简单的加减运算到复杂的逻辑判断,掌握基础语法是高效工作的起点,下面我们就来看看如何使用Python进行Excel公... 目录python Excel 库安装Python 在 Excel 中添加公式/函数Python 读取

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首