精华内容
下载资源
问答
  • 相信很多学习向量空间模型(Vector Space Model)的人都会被其中的余弦定理公式所迷惑..因为一看到余弦定理,肯定会先想起初中时的那条最简单的公式cosA=a/c(邻边比斜边),见下图:但是,初中那条公式是只适用于直角三角形...

    相信很多学习向量空间模型(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,

    那么它们夹角的余弦等于

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

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

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

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

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

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

    The dot product of two vectors a =

    [a1,

    a2, … ,

    an] and

    b = [b1,

    b2, … ,

    bn] is defined

    as:

    点积(dot product),又叫内积,数量积..(Clotho注:

    product常见的是产品的意思,但在数学上是乘积的意思.)

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

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

    d2

    = x2 + y2 -> d =

    sprt(x2 + y2)

    d2

    = x2 + y2 + z2

    ->  d =

    sprt(x2 + y2 + z2)

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

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

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

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

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

    1.对所有文章进行分词

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

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

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

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

    当两条新闻向量夹角的余弦等于一时,这两条新闻完全重复(用这个办法可以删除重复的网页);当夹角的余弦接近于一时,两条新闻相似,从而可以归成一类;夹角的余弦越小,两条新闻越不相关。

    余弦定理是常见的相似度衡量方法之一,见博文“机器学习中的相似性度量 (多种几何距离定义)”

    7.

    夹角余弦(Cosine)

    有没有搞错,又不是学几何,怎么扯到夹角余弦了?各位看官稍安勿躁。几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。

    (1)在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式:

    (2)

    两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夹角余弦

    类似的,对于两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用类似于夹角余弦的概念来衡量它们间的相似程度。

    即:

    夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。

    例如 在TF-IDF上的应用,见博文“tf-idf”

    在向量空间模型里的应用

    TF-IDF权重计算方法经常会和余弦相似度(cosine

    similarity)一同使用於向量空间模型中,用以判断两份文件之间的相似性。

    展开全文
  • 在文本挖掘中计算2篇文章相似度常用向量空间模型中的余弦定理公式判断。     1、 向量空间模式介绍     2、 余弦定理   在空间模型中,两条线的夹角越小,它们的余弦值就越大...

    参考:http://blog.sina.com.cn/s/blog_5caa94a0010122dz.html


    在文本挖掘中计算2篇文章相似度常用向量空间模型中的余弦定理公式判断。

     

     

    1、  向量空间模式介绍

     






     

    2、  余弦定理

     

    在空间模型中,两条线的夹角越小,它们的余弦值就越大,而它们越相似(重叠或者平行)。

     

    从上面看出空间模型中两条连线夹角的余弦值为:


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

    那么它们夹角的余弦等于



     

    3、  文本挖掘中把文档转换为向量空间

              在文本挖掘中,对文档A分词,得到A1,A2,….An,计算得到分词的Tf-Idf: k1,k2,…kn;同样对文档C分词,得到C1,C2…Cn, 计算得到分词的Tf-Idf:d1,d2,…dn。以tf-idf作为分词的权重,则得到文档A的向量P={k1A1 ,k2A2…knAn},转换为P={x1,x2,…Xn}文档C的向量Z={d1C1,d2C2…dnCn},转换为Z={y1,y2….yn},计算文档A和C的相似度就是在向量空间模型中计算它们余弦值.


     

      


    展开全文
  • 向量空间模型(VSM)的余弦定理公式(cos)
  • 向量法证明余弦定理 (1)证明思路分析 由于余弦定理中涉及到的角是以余弦形式出现.那么可以与哪些向量知识产生联系呢? 向量数量积的定义式:a·b=|a||b|cosθ.其中θ为a.b的夹角. 在这一点联系上与向量法证明正弦定理...

    向量法证明余弦定理 (1)证明思路分析 由于余弦定理中涉及到的角是以余弦形式出现.那么可以与哪些向量知识产生联系呢? 向量数量积的定义式:a·b=|a||b|cosθ.其中θ为a.b的夹角. 在这一点联系上与向量法证明正弦定理有相似之处.但又有 所区别.首先因为无须进行正.余弦形式的转换.也就省去添加 辅助向量的麻烦.当然.在各边所在向量的联系上依然通过向量加 法的三角形法则.而在数量积的构造上则以两向量夹角为引导. 比如证明形式中含有角C.则构造·这一数量积以使出现cosC.同样在证明过程中应注意两向量夹角是以同起点为前提. (2)向量法证明余弦定理过程: 如图.在△ABC中.设AB.BC.CA的长分别是c.a.b. 由向量加法的三角形法则可得=+. ∴·= =2+2·+2 =||2+2||||cos(180°-B)+||2 =c2-2accosB+a2 即b2=c2+a2-2accosB 由向量减法的三角形法则可得: =- ∴·= =2-2·+2 =||2-2||||cosA+||2 =b2-2bccosA+c2 即a2=b2+c2-2bccosA 由向量加法的三角形法则可得 =+=- ∴·= =2-2·+2 =||2-2||||cosC+||2 =b2-2bacosC+a2. 即c2=a2+b2-2abcosC 评述:(1)上述证明过程中应注意正确运用向量加法的三角形法则. (2)在证明过程中应强调学生注意的是两向量夹角的确定.与属于同起点向量.则夹角为A,与是首尾相接.则夹角为角B的补角180°-B,与是同终点.则夹角仍是角C. 在证明了余弦定理之后.我们来进一步学习余弦定理的应用. 利用余弦定理.我们可以解决以下两类有关三角形的问题: (1)已知三边.求三个角. 这类问题由于三边确定.故三角也确定.解唯一, (2)已知两边和它们的夹角.求第三边和其他两个角. 这类问题第三边确定.因而其他两个角唯一.故解唯一.不会产生类似利用正弦定理解三角形所产生的判断取舍等问题. 接下来.我们通过例题评析来进一步体会与总结.【查看更多】

    展开全文
  • 前言余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。余弦相似度将向量根据坐标值...正文重温余弦定理先简单的重温一下高中数学知识,余弦定理 这个公式大家不知道还有没有印象呢...

    前言

    余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。余弦相似度将向量根据坐标值,绘制到向量空间中。用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,反之越接近0就表示两个向量相似度越低,这就叫"余弦相似性"。

    正文

    重温余弦定理

    先简单的重温一下高中数学知识,余弦定理

    format,png

    这个公式大家不知道还有没有印象呢?没有的话我们看下下面的图

    format,png

    此时a=(xa,ya),b=(xb,0),那么怎么计算各边长的长度呢?

    format,png

    此时将各边长代入上图的公式当中,最后可以得出最终的计算公式

    format,png

    文本相似度计算步骤

    那么在我们的文本相似度计算中,都有哪些步骤呢?

    分词,比如有两行文本,第一句:你好,我是小王,我是个程序员”,将会分割成你好/我/是/小王/我/是/个/程序员。第二句:你好,我是设计师,将会分成你好/我/是/设计师

    统计词频,其实就是统计所有语句中的每个词在当前句子出现的次数,第一句:你好1,我2,是2,小王1,个1,程序员1,设计师0,第二句你好1,我1,是1,小王0,个0,程序员0,设计师1

    组合词频向量,第一句(1,2,2,1,1,1,0),第二句(1,1,1,0,0,0,1)。

    将数据代入上面的公式计算相似度

    maven 引入ikanalyzer依赖

    这里使用ikanalyzer来实现一个简单的分词功能

    com.janeluo

    ikanalyzer

    2012_u6

    IKUtils分词工具类,代码比简单,唯一一个方法返回的是语句分词的List对象

    /*** 分词相关工具类

    *@authorwangzh*/

    public classIKUtils {/*** 以List的格式返回文本分词的结果

    *@paramtext

    *@return

    */

    public static ListdivideText(String text){if(null == text || "".equals(text.trim())){return null;

    }

    List resultList = new ArrayList<>();

    StringReader re= newStringReader(text);

    IKSegmenter ik= new IKSegmenter(re, true);

    Lexeme lex= null;try{while ((lex = ik.next()) != null) {

    resultList.add(lex.getLexemeText());

    }

    }catch(Exception e) {//TODO

    }returnresultList;

    }

    }

    下面是主要的代码逻辑,相关步骤已注释在代码里面

    public classAnalysis {public static voidmain(String[] args) {

    Map resultMap = new HashMap<>();//测试文本

    String text1 = "你好,我是小王,我是个程序员";

    String text2= "你好,我是设计师";//统计

    statistics(resultMap, IKUtils.divideText(text1),1);

    statistics(resultMap, IKUtils.divideText(text2),0);//计算类

    final Calculation calculation = newCalculation();

    resultMap.forEach((k,v)->{int[] arr =resultMap.get(k);

    calculation.setNumerator(calculation.getNumerator()+ arr[0] * arr[1]);

    calculation.setElementA(calculation.getElementA()+ arr[0] * arr[0]);

    calculation.setElementB(calculation.getElementB()+ arr[1] * arr[1]);

    });

    System.out.println("文本相似度:" +calculation.result());

    }/*** 组合词频向量

    *@paramwords

    *@paramdirection

    *@return

    */

    private static void statistics(Map map,List words ,intdirection){if(null == words || words.size() == 0){return;

    }int[] in = null;boolean flag =direction(direction);for(String word : words){int[] wordD =map.get(word);if(null ==wordD){if(flag){

    in= new int[]{1,0};

    }else{

    in= new int[]{0,1};

    }

    map.put(word,in);

    }else{if(flag){

    wordD[0]++;

    }else{

    wordD[1]++;

    }

    }

    }

    }//判断不同句子

    private static boolean direction(intdirection){return direction == 1?true:false;

    }

    }

    用于计算余弦相似度的类

    public classCalculation{private doubleelementA;private doubleelementB;private doublenumerator;public doubleresult(){return numerator / Math.sqrt(elementA *elementB);

    }//省略get/set

    }

    输出结果:

    文本相似度:0.7216878364870323

    从结果可以看出这两句话大致上还是比较相似的。用通俗一点的话来说就是有72%的相似度。

    参考图例:

    公众号博文同步Github仓库,有兴趣的朋友可以帮忙给个Star哦,码字不易,感谢支持。

    推荐阅读

    有收获的话,就点个赞吧

    关注「深夜里的程序猿」,分享最干的干货

    展开全文
  • 8 -*-importjiebaimportjieba.analyseimportmathdefsentence_resemble():'''计算两个句子的相似度:1,将输入的两个句子分词2,求分词后两句子的并集(去重)3,计算两句子各自词频4,求词频向量5,套用余弦定理公式求...
  • 8 -*-importjiebaimportjieba.analyseimportmathdefsentence_resemble():'''计算两个句子的相似度:1,将输入的两个句子分词2,求分词后两句子的并集(去重)3,计算两句子各自词频4,求词频向量5,套用余弦定理公式求...
  • 余弦定理和正弦定理在运用的过程中,通过...本文主要从向量法、三角函数法、辅助圆法来讲解证明余弦定理! 今天高中数学的三种证明余弦定理的方法公式就分享到这里,更多高中数学学习视频资料,可以联系老师! ...
  • 在NLP自然语言处理中,常常会有推荐相关的算法,这就免不了相关的距离计算公式计算两个向量之间的举例。这里用Java语言实现余弦定理和修正余弦,直接上代码~【余弦定理】package com.xzw.cos; import java.util.Map...
  • 文本相似度计算之余弦定理

    千次阅读 2019-05-13 14:31:37
    前言 余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。余弦相似度将向量根据坐标值,绘制到向量空间中。...先简单的重温一下高中数学知识,余弦定理 这个公式大家不知道...
  • 余弦定理实现新闻自动分类算法

    千次阅读 2015-07-27 21:53:33
    前言余弦定理,这个在初中课本中就出现过的公式,恐怕没有人不知道的吧。但是另外一个概念,可能不是很多的人会听说过,他叫空间向量,一般用e表示,高中课本中有专门讲过这个东西,有了余弦定理向量空间,我们就...
  • 三角函数:正弦余弦定理及应用

    千次阅读 2019-01-25 13:05:40
    1.余弦定理公式余弦定义主要作用是依靠已知三角形的两条边及其夹角,求第三边的情况,如下图:这里我们不处理向量(矢量)运算,单纯的从标量数值长度的推算入手,建立垂线后,得到的直角三角形ADC,可...
  • Lucene中的评分机制,也是算一个相似度的问题,不过它采用的是计算向量间的夹角(余弦公式),在google黑板报中的:数学之美(余弦定理和新闻分类) 也有说明,可以通过余弦定理来判断相似度;于是决定自己动手试试...
  • 余弦定理----相似性计算

    千次阅读 2013-12-03 20:34:47
    向量中,余弦定理为  cos(x) = / |a||b| 通常用这个来进行相似度计算但这里计算的前提是a,b两个向量空间维数要对齐,(通常操作都是进行归一化,例如两个不一致时要维数小的向大的看齐) 由于夹角越小表现为两...
  • 1. 公式 中两个向量的夹角公式: 且规定,当(向量共线)时: ...将展开后的结果代入余弦定理公式: 因此: 推导完毕。 3. 垂直和正交的区别 假如 则和正交 如果和正交,且和都不等...
  • Python计算余弦相似度及向量范数

    千次阅读 2020-09-08 11:18:58
    在非直角三角形中,余弦定理公式是: 在向量表示的三角形中,假设a向量是(x1, y1),b向量是(x2, y2),那么可以将余弦定理改写成下面的形式: 扩展,如果向量a和b不是二维而是n维,上述余弦的计算法仍然正确...
  • 1.余弦相似度可用来计算两个向量的相似程度 对于如何计算两个向量的相似程度问题,可以把这它们想象成空间中的两条线段,都是从原点([0, 0, …])出发,指向不同的方向。...余弦定理告诉我们,可以用下面的公式求得:
  • 在工作中一直使用余弦相似度算法计算两段文本的相似度和两个用户的相似度。一直弄不明白多维的余弦相似度公式是怎么推导来的。今天终于花费时间把公式...书中使用余弦定理准确的进行新闻分类、拼音输入法的数学原理...
  • 本书译自笹部贞市郎先生编著的《数学要项定理公式证明辞典》(圣文社1980年第六次印刷本),囊括了初等数学及高等数学中基本概念,定理、公式的详细证明和解法。对现代数学好些分支(线性规划、对策论、拓补、群论、...
  • 本书译自笹部贞市郎先生编著的《数学要项定理公式证明辞典》(圣文社1980年第六次印刷本),囊括了初等数学及高等数学中基本概念,定理、公式的详细证明和解法。对现代数学好些分支(线性规划、对策论、拓补、群论、...
  • 两角和与差的正弦、余弦、正切公式的证明 ...思路三:余弦定理 思路四:向量方法 向量方法的证明过程 如图所示的单位圆,我们先看两个角都是锐角\((\alpha>\beta)\)的情形; 角\(\alpha\)和...
  • 余弦相似度和范数

    2020-05-05 12:50:50
    余弦相似度 余弦距离,也称为余弦相似度,是用向量空间中两个向量...通过余弦定理公式推导出余弦相似度公式。 范数 上图结果中字母的||*||符号是范数的表示符号。 范数(Norm)是一种关于向量的函数,是向量“长...

空空如也

空空如也

1 2 3 4
收藏数 74
精华内容 29
关键字:

向量余弦定理公式