在NLP自然语言处理中,常常会有推荐相关的算法,这就免不了相关的距离计算公式计算两个向量之间的举例。这里用Java语言实现余弦定理和修正余弦,直接上代码~

【余弦定理】

package com.xzw.cos;import java.util.Map;
import java.util.Map.Entry;/*** 相似度计算,余弦定理Java实现* @author xzw**/
public class Cos {public static double getTwoVectorsSimilar(Map<String, Double> src, Map<String, Double> dest){double score = 0;if (src.size() == 0 || dest.size() == 0) {return 0;}double v1 = 0, v2 = 0, fenzi = 0, fmOne = 0, fmTwo = 0;for (Entry<String, Double> item : src.entrySet()) {v1 = item.getValue();fmOne += v1 * v1;if (dest.containsKey(item.getKey())) {v2 = dest.remove(item.getKey());fmTwo += v2 * v2;fenzi += v1 * v2;}}for (double dv : dest.values()) {fmTwo += dv * dv;}dest.clear();dest = null;if (fmOne == 0 || fmTwo == 0) {return 0;}else {score = fenzi / Math.sqrt(fmOne * fmTwo);}return score;}}

【修正余弦】

package com.xzw.cos;import java.util.Map;
import java.util.Map.Entry;/*** 相似度计算,修正余弦Java实现* @author xzw**/
public class NodCos {public static double getSim(Map<String,Double> src,Map<String,Double> dest){double score = 0;double avgs = 0;double avgd = 0;if(src.size() == 0 || dest.size() == 0){return 0;}for( double v :src.values()){avgs += v;}avgs = avgs / src.size();for( double v :dest.values()){avgd += v;}avgd = avgd / dest.size();double v1 = 0, v2 = 0, fz = 0, fm1 = 0, fm2 = 0;for (Entry<String, Double> items : src.entrySet()) {v1 = items.getValue();fm1 += (v1 - avgs) * (v1-avgs);if(dest.containsKey(items.getKey())){v2 = dest.remove(items.getKey());fm2 += (v2 - avgd) * (v2 - avgd);fz += (v1 - avgs) * (v2 - avgd);}}for(double dv : dest.values()){fm2 += (dv - avgd) * (dv - avgd);}dest.clear();dest = null;if(fm1 == 0 || fm2 == 0){return 0;} else{score = fz / Math.sqrt((fm1 * fm2));}return score;}}

用Java语言实现余弦定理和修正余弦相关推荐

  1. 三角形分类(洛谷P5717题题解,Java语言描述)

    题目要求 P5717题目链接 分析 要明确各个条件之间的关系! 首先是要看是不是三角形,如果不是就不用也不能进行下面的判断,这是必须注意的. 判据是:三角形两边之和大于第三边. 接下来要通过三角形的三 ...

  2. Java语言程序设计基础篇-第10版-第一部分-程序设计基础)

    Java程序语言设计(基础篇)-第10版 第一部分 程序设计基础 第1章 计算机.程序和Java概述 1.1 引言 程序设计就是创建(或者开发)软件,软件也称为程序. 简言之,软件包含了指令,告诉计算 ...

  3. java语言的多态性及特点_Java中的方法的多态性有两种形式:( )和( )。_学小易找答案...

    [填空题]已知函数 ,则微分 . [填空题]. [单选题]71.用转动小滑板法车圆锥时产生( )误差的原因是小滑板转动角度计算错误. [单选题] [填空题]Java中的方法的多态性有两种形式:( )和 ...

  4. java语言提供结构_java学习之语句结构

    在java语言当中存在4中语句结构,分别是: 1.顺序结构 2.判断结构 3.选择结构 4.循环结构 一.顺序结构: 所谓的顺序结构,也就是当不指定其他三种语句结构的情况下,语句是从上往下依次执行的, ...

  5. [转载] java语言程序设计-基础篇

    参考链接: Java中的决策制定(if,if-else,switch,break,continue,jump) 第1章,计算机.程序和Java概述 包括[每个java初学者都应该搞懂的问题] http ...

  6. 【OJ】洛谷红题题解锦集(Java语言描述)

    前言 能看这篇文章,想来你可能是小白(或者切题的大佬),那这里会把洛谷的红题(当前只有P字段的本谷题目)进行一下整理,希望会合你口味吧-- 本文只附个人题解链接,不附题目链接(题解中自带),如想刷题请 ...

  7. java语言精通能干什么_Java学到什么程度才能叫精通?

    1. 掌握Java语言语法,能够区别Java和其他语言的语法,并能快速且准确地定位.修正程序中出现的Errors和Warnings语法错误: 2. 熟悉某一版本的JDK(如1.8版本)自带的常用命令及 ...

  8. 程序员的开发工具:Java语言开发人员常用软件

    我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华. 如果小伙伴们觉得我的文章有点 feel ,那就点个赞再走哦. 文章目录 一.前言 二.相关软件介绍: 1. IDEA(IntelliJ ID ...

  9. java语言变量分为_在Java语言中变量分为四种,分别是___________________________________________。_学小易找答案...

    [填空题]One day, at the registrar's office of a college, I noticed how parents are behaving with their ...

最新文章

  1. 一位群友作为后端开发在滴滴和头条分别干了 2 年的经验总结
  2. 7打开pycharm_Python+pycharm安装、关联教程
  3. linux:配置jdk环境变量
  4. java调节音量代码_用Java调用VC音量控制程序_java
  5. (c语言)和与积的运算第一篇
  6. seajs打包部署工具spm的使用总结
  7. react学习(53)--传参payload
  8. 拒绝双写:巧用Lindorm数据订阅
  9. 深度学习 —— 深度前馈网络
  10. 利用jsp和servlet,MySQL实现简易报表
  11. 485. 最大连续 1 的个数
  12. VC6.0工程设置说明
  13. 计算机蓝屏代码0x0000007b,解决电脑蓝屏出现代码0x0000007b怎么解决
  14. The command ‘docker‘ could not be found in this WSL 2 distro.
  15. [Frank kelly] 经济学理论对TCP的收敛性和公平性做出分析,从理论上论证了TCP在互联网环境下的稳定性和有效性
  16. mybatis 的大于号 小于号 大于等于 小于等于
  17. 计算机专业保研面试备考:高等数学
  18. 如何用acme.sh申请证书
  19. 用Python写三级菜单的三个版本
  20. 国科大-高性能计算考试

热门文章

  1. IT职场法则七条——献给正在努力奋斗的你们
  2. 软件测试外包干了4年,感觉废了..
  3. 中超各主场巡礼(国安观赛指南)
  4. 在虚幻引擎中使用Python批处理4_:贴图参数设置
  5. 大航海日志--do rome as romans do
  6. Word控件Spire.Doc 【Table】教程(15):如何在 C# 中对齐表格
  7. Air Pods用着怎么样?
  8. ㉓AW-H3 Linux驱动开发之mipi camera(CSI)驱动程序
  9. 简单图文解释冯诺依曼体系结构(通俗易懂版)
  10. if test 用法