全文检索几种词向量模型

2023-11-19

1、倒排索引模型
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
2、布尔检索类型
在这里插入图片描述
3、TF-IDF权重计算
在这里插入图片描述在这里插入图片描述
下面是TF-IDF的JAVA代码实现。

public class TFIDF {
    public double tf(List<String> doc,String term){
        double termFrequency = 0;
        for (String str : doc) {
            if(str.equalsIgnoreCase(term)){
                termFrequency ++ ;
            }
        }
        return termFrequency / doc.size();
    }
    public double df(List<List<String>> docs,String term){
        int n = 0;
        if(term != null && term != ""){
            for (List<String> doc : docs) {
                for (String word : doc) {
                    if (term.equalsIgnoreCase(word)){
                        n ++;
                        break;
                    }
                }
            }
        }else {
            System.out.println("term不能为null或空串");
        }
        return n;
    }
    public double idf(List<List<String>> docs,String term){
        return Math.log(docs.size()/(double)df(docs,term)+1);
    }
    public double tfidf(List<String> doc,List<List<String>> docs,String term){
        return tf(doc,term) * idf(docs,term);
    }

    public static void main(String args[]){
        List<String> doc1 = Arrays.asList("人工","智能","成为","互联网","大会","焦点");
        List<String> doc2 = Arrays.asList("谷歌","推出","开源","人工","智能","系统","工具");
        List<String> doc3 = Arrays.asList("互联网","的","未来","在","人工","智能");
        List<String> doc4 = Arrays.asList("谷歌","开源","机器","学习","工具");

        List<List<String>> documents = Arrays.asList(doc1,doc2,doc3,doc4);
        TFIDF calculator = new TFIDF();
        System.out.println(calculator.tf(doc2,"谷歌"));
        System.out.println(calculator.df(documents,"谷歌"));
        double tfidf = calculator.tfidf(doc2, documents, "谷歌");
        System.out.println("TF-IDF(谷歌) = " + tfidf);
    }
}

结果:
0.14285714285714285
2.0
TF-IDF(谷歌) = 0.15694461266687282

4、向量空间模型
在这里插入图片描述在这里插入图片描述
下面是相似度的JAVA代码实现

public class Vsm {
    public static double calCosSim(Map<String,Double> v1,Map<String,Double> v2){
        double sclar = 0.0,norm1 = 0.0,norm2 = 0.0,similarity = 0.0;
        Set<String> v1Keys = v1.keySet();
        Set<String> v2Keys = v2.keySet();
        Set<String> both = new HashSet<>();
        both.addAll(v1Keys);
        both.retainAll(v2Keys);
        System.out.println(both);
        for (String str1 : both) {
            sclar += v1.get(str1) * v2.get(str1);
        }
        for (String str1 : v1.keySet()) {
            norm1+= Math.pow(v1.get(str1),2);
        }
        for (String str2 : v2.keySet()) {
            norm2+= Math.pow(v2.get(str2),2);
        }
        similarity = sclar / Math.sqrt(norm1*norm2);
        System.out.println("sclar: "+sclar);
        System.out.println("norm1: "+norm1);
        System.out.println("norm2: "+norm2);
        System.out.println("similarity : "+similarity);
        return similarity;
    }

    public static void main(String[] args) {
        Map<String,Double> m1 = new HashMap<>();
        m1.put("Hello",1.0);
        m1.put("css",2.0);
        m1.put("Lucene",3.0);

        Map<String,Double> m2 = new HashMap<>();
        m2.put("Hello",1.0);
        m2.put("Word",2.0);
        m2.put("Hadoop",3.0);
        m2.put("java",4.0);
        m2.put("html",1.0);
        m2.put("css",2.0);
        calCosSim(m1,m2);
    }
}


结果:

[css, Hello]
sclar: 5.0
norm1: 14.0
norm2: 35.0
similarity : 0.22587697572631282
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

全文检索几种词向量模型 的相关文章

  • 《数字化转型》——企业持续有效增长的新引擎

    中国国民经济和社会发展第十四个五年规划和2035念远景目标纲要 明确指出 迎接数字时代 激活数据要素潜能 推动网络强国建设 加快建设数字经济 数字社会 数字政府 以数字化转型整体驱动生产方式 生活方式和治理方式变革 那么企业如何做 如何选型
  • 商品上架、es应用到商品上架-35

    一 商品上架 上架的商品才可以在网站展示 上架的商品需要可以被检索 es是将数据保存到内存当中 所以我们不能将什么数据都保存到es当中 我们需要将重要的数据保存到es中 例如商品名称 规格型号 价格等信息 当需要的数据较多时 我们可以将主键
  • 信息检索——查询似然模型(例题)

    例题 信息检索导论 修订版 习题12 7 假定某文档集有如下4篇文档组成 为该文档集建立一个查询似然模型 假定采用文档语言模型和文档集语言模型的混合模型 权重均为0 5 采用MLE来估计两个一元模型 计算在查询click shears以及c
  • meilisearch使用记录

    分页 查找内容 默认一页十条 def search q from size 10 return client index indexName search q opt params limit size offset from 当前页 st
  • 威三学社介绍

    公司介绍 北京威三电子科技有限公司 成立于 2017年 专注于提供创新性科研和教学解决方案 主要面向无线设计和测试 人工智能视觉与核物理化学分析等领域 公司愿景 通过强大灵活的技术解决方案帮助工程师和科学家提高生产力 讲师介绍 尤恺元先生
  • ElasticSearch第十三讲 ES 主要的操作增删查改与分组分页

    ES的基本常识 关于ES的基本了解 相信大家学习ES都是带着目的来学习 也了解学习ES是为了做什么的 下面只简单说下ES与Lucene的关系 首先Lucene可以被认为是迄今为止最先进 性能最好的 功能最全的搜索引擎库 框架 但是想要使用L
  • 雷军写的代码上热搜了

    雷军写的代码 一词突然上了微博热搜 一瞬间 我想起了这张图 到底发生了什么 好奇的我点进去一看 原来是因为雷军预告年度演讲的微博里配了一张海报 这张海报信息量非常大 一眼就能看到有很多代码元素 放大一点看看局部 这还是16位实模式下的汇编语
  • ElasticSearch集群管理(VMware)

    一 集群结构 ES通常以集群方式工作 这样做不仅能够提高 ES的搜索能力还可以处理大数据搜索的能力 同时也增加了系统的 容错能力及高可用 下图是ES集群结构的示意图 此处的设置为 每个主分片有两个副本 如果某个节点挂了也不怕 比如节点1挂了
  • macOS_Monterey_12.6_21G115可引导可虚拟机安装的纯净版苹果OS系统ISO镜像安装包免费下载

    现在网络上黑果系统出现了许多多合一的多功能版 不是说这些版本不好 只是小编个人觉得 操作系统就是用来使用的 黑果本来就是服务于一些非苹果机的苹果OS爱好者的 简洁稳定应该是首选 固小编毅然放弃那些多功能的豪华版镜像版 独宠我的纯净可引导安装
  • Solr删除文档数据

    使用控制台删除solr的无用数据 目前我使用了两种方式 001 登录你的solr地址 我的地址为 http localhost 8983 solr 如下图所示 上图箭头处选择你的my core 我的mycore为damsearch 002
  • 「部署全流程」 中科院学术专业版chatGPT来啦

    前言 上周末的时候 一位开发者将名为 ChatGPT Academic 的项目开源至 GitHub 仅用了短短一两天 该项目 Star 数便增长到了 21k 成为 GitHub 上又一个基于 ChatGPT 构建的热门开源项目 这个项目就是
  • bert简单介绍和实践

    bert模型是Google在2018年10月发布的语言表示模型 在NLP领域横扫了11项任务的最优结果 可以说是现今最近NLP中最重要的突破 Bert模型的全称是Bidirectional Encoder Representations f
  • elasticsearch全文检索流程

    elasticsearch全文检索流程 elasticsearch全文检索流程 索引过程 创建索引 获得原始文档 创建文档对象 分析文档 创建索引 查询索引 elasticsearch全文检索流程 索引过程 索引过程 对要搜索的原始内容进行
  • gensim.models.word2vec 参数说明

    使用gensim训练词向量的实例 Initialize and train a Word2Vec model gt gt gt from gensim models import Word2Vec gt gt gt sentences ca
  • SQL 常用优化实践

    对查询进行优化 要尽量避免全表扫描 首先应考虑在 where 及 order by 涉及的列上建立索引 应尽量避免在 where 子句中对字段进行 null 值判断 否则将导致引擎放弃使用索引而进行全表扫描 如 select id from
  • Elasticsearch笔记4 基础入门

    执行分布式检索 一个查询操作 在ES分布式环境中分为两步 查询与合并 查询阶段 ES集群向所有分片传递查询语句 分片接收到请求后 执行搜索并建立一个长度为top n的优先队列 存储结果 top n 的大小取决于分页参数 top n from
  • 【ES】Elasticsearch 简介

    大数据开发经常用到 Elasticesearch 今天做一下介绍 1 Elasticsearch 简介 Elaticsearch 简称为 ES 是一个开源的高扩展的分布式全文检索引擎 特点 近乎实时的存储 检索数据 扩展性好 可以扩展到上百
  • 【全文检索_10】Filebeat 基本使用

    1 1 简介 1 1 1 概述 Filebeat 是 Beats 的一员 用于转发和集中日志数据的轻量级传送工具 当面对成百上千 甚至成千上万的服务器 虚拟机和容器生成的日志时 Filebeat 将为您提供一种轻量型方法 监视指定的日志文件
  • 智能文档比对小程序,支持扫描件比对、PDF比对,Word比对,合同比对、公文比对,限时免费使用

    很多企业在实际业务场景中 合同会反复修改 一份合同从无到有 需要经历洽谈 起草 签订 履行 变更等多个业务环节 合同文件既有电子版也有纸质版 各个环节存在大致内容类似但细节有差异的多个版本文档 企业不仅需要自动识别图像中的文本信息 将图片或
  • EI会议——移动互联网、云计算和信息安全国际学术会议

    移动互联网 云计算和信息安全国际学术会议 International Conference on Mobile Internet Cloud Computing and Information Security 火热征稿中 大会官网 htt

随机推荐

  • jmeter实现随机数,MD5加密压测投票接口

    1 新增HTTP请求 nonStr为随机值 sign为加密参数 2 在线程组下添加前置处理器 BeanShell PreProcessor 代码如下 import org apache commons codec digest Digest
  • c++ make_shared

    make shared的使用 shared ptr
  • C++14中binary literals的使用

    一个形如42的值被称作字面值常量 literal 这样的值一望而知 每个字面值常量都对应一种数据类型 字面值常量的形式和值决定了它的数据类型 我们可以将整型字面值写作十进制 基数为10 八进制 基数为8 或十六进制 基数为16 数的形式 以
  • 数据库连接不上的几种情况

    客户端不能连接服务器的情况 首先保证客户端和服务器能够ping通 如果ping不通 请检查以下几点 1 服务器和客户端电脑是否通电 2 交换机是否通电 3 网卡安装是否正常 或者网卡是否在设备管理器被禁用 4 本地连接是否被禁用 5 服务器
  • 公钥 私钥 的理解

    公钥和私钥是成对出现 私钥可以生成公钥 公钥无法生成私钥 私钥加密的内容 可以被公钥解密 公钥加密的内容 可以被私钥解密 举个例子 A 持有自己的私钥 A的私钥生成的公钥被其他人持有 其他人用A的公钥加密的内容 只有用A的私钥才可以解密 且
  • 分享一个java+python双版本源码之基于微信小程序的校园跑腿接单系统 校园快递代领小程序(源码、lw、调试)

    作者 计算机源码社 个人简介 本人七年开发经验 擅长Java Python PHP NET 微信小程序 爬虫 大数据等 大家有这一块的问题可以一起交流 学习资料 程序开发 技术解答 文档报告 如需要源码 可以扫取文章下方二维码联系咨询 Ja
  • target_include_directories([SYSTEM][BEFORE]

    target include directories
  • mybatis获取新增记录的主键

    最近项目中有个需求 需要在新增一条记录后返回该记录的主键 查了下资料 用mybatis可以做 我需要拿第一个方法执行返回的id作为变量传给下面 数据库中该id是记录主键 并且数据库用的是主键自增长 这是前提 有两种方式 第一种方式写法如下
  • 信息化战略规划-CRO-SCM-应用集成-电子商务

    信息化战略规划 CRO SCM 应用集成 电子商务 信息化战略体系 重点 信息系统战略规划 重点 客户关系管理 重点 供应链管理 企业应用集成 电子商务 信息化战略体系 重点 企业战略 目标 企业战略规划 实现目标的规划 企业信息化战略 使
  • 操作系统(四):磁盘调度算法,先来先服务,最短寻道时间优先,电梯算法

    文章目录 一 磁盘结构 二 先来先服务 三 最短寻道时间优先 四 电梯算法 SCAN 一 磁盘结构 盘面 Platter 一个磁盘有多个盘面 磁道 Track 盘面上的圆形带状区域 一个盘面可以有多个磁道 扇区 Track Sector 磁
  • 在echarts中自定义提示框内容

    以折线图为例 在鼠标滑过每个数据标签时 为了更友好地显示数据内容 需要对显示的数据内容作格式化处理 添加自定义内容 这就需要用到tooltip的formatter属性的回调函数 本文将从配置代码和效果两方面来展示它的使用 柱状图的原理类似
  • NCC低代码平台服务搭建指南

    NCC服务搭建 前言 本文档旨在帮助第一次接触NCC的开发人员 搭建NCC开发环境 1 NCC相关资料 开发者社区 https nccdev yonyou com 资料 https pan baidu com s 15V71U7vVOGr8
  • 【论文笔记】TNASP:A Transformer-based NAS Predictor with a Self-evolution Framework

    文章目录 0 摘要 摘要解读 1 Introduction 2 相关工作 3 方法 3 1 Training based network performance predictors 3 2 基于Transformer的预测器 3 3 自演
  • unity3d实现简单的打飞碟游戏

    游戏内容 游戏有n个round 每个round发射10次trial 每个trial的飞碟都可能不同 包括速度角度得分等 使用鼠标进行射击 点中即表示射击成功 游戏要求 使用带缓存的工厂模式来管理飞碟的生产与再利用 工厂使用单例模式 游戏的设
  • python中.argsort()的用法

    argsort 是对数组参数从小到大排序 然后取出排序后的索引 例如 a np array 0 2 0 5 0 3 0 4 a argsort 输出的就是对a数组排序过后的索引 0 2 3 1
  • 三、web端显示之hdfs基本操作

    三台的节点均启动成功之后 完全匹配的上配置的下图所示情况 若启动不成功 则先 root hadoop1 hadoop 3 1 3 stop all sh 再输入ll显示一下 删除每一个集群上的data和logs root hadoop1 h
  • Qt源代码中二进制兼容及d、q指针的理解

    1 二进制兼容的理解 首先按照本文对二进制兼容进行理解 此处是本人的总结 将类的私有属性 不需要暴露的部分 放到私有类中 在类中定义私类的指针进行交互 指针的大小是已知不变的 指针数据类型为Int 4个字节 软件发布后只需要改私类中的部分
  • 安装vmware tools时,kernel版本不匹配问题的解决方法

    安装vmware tools 的时候 提示找不到C header files 此种情况下 按以下步骤操作 1 内核安装完毕后 需要用这个命令确定内核 C header 的安装目录 ls d usr src kernels uname r i
  • 怎样知道自己适不适合做程序员

    编程是一门非常有技术含量的手艺活 待遇和福利相对来说较为丰厚 由于种种原因想要转行做程序员的人 总会有这样的困惑 我是否适合做程序员呢 其实做为一个开发者 有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C语言C 交流群58365041
  • 全文检索几种词向量模型

    1 倒排索引模型 2 布尔检索类型 3 TF IDF权重计算 下面是TF IDF的JAVA代码实现 public class TFIDF public double tf List