现代信息检索笔记(二)——布尔检索

news2025/1/16 17:48:48

目录

信息检索概述

IR vs数据库: 结构化vs 非结构化数据

结构化数据

非结构化数据

半结构化数据

传统信息检索VS现代信息检索

布尔检索

倒排索引

一个例子

建立词项(可以是字、词、短语、一句话)-文档的关联矩阵。

关联向量

检索效果的评价

建立倒排索引表

索引构建过程:

布尔查询的处理

查询优化


信息检索概述

Information Retrieval (IR) is finding material (usually documents) of an unstructured nature (usually text) that satisfies an information need from within large collections (usually stored on computers).

信息检索是从大规模非结构化数据(通常是文本) 的集合(通常保存在计算机上)中找出满足用户 信息需求的资料(通常是文档)的过程。

Document –文档

Unstructured – 非结构化

Information need –信息需求

Collection—文档集、语料库

IR vs数据库: 结构化vs 非结构化数据

结构化数据

通常指表格中的数据。

数据库常常支持范围或者精确匹配查询。

非结构化数据

通常指自由文本

允许

  1. 关键词加上操作符号的查询
  2. 更复杂的概念性查询,

找出所有的有关药物滥用(drug abuse)的网页

经典的检索模型一般都针对自由文本进行处理

考虑文本之间的相似性 搜兵乓球,出现刘国梁

半结构化数据

没有数据是没有结构的。

不同位置的关键词权重是不一样的,如标题比正文权重更高。

传统信息检索VS现代信息检索

传统信息检索主要关注非结构化、半结构化数据

现代信息检索中也处理结构化数据

第一个检索只能使用结构化数据,而结构化数据仅占全部数据的20%,日志文件+机器数据又占非结构化数据的90%。如何利用日志文件等非结构化数据是现在信息检索发展的关键。

布尔检索

针对布尔查询的检索,布尔查询是指利用AND, OR 或 者NOT操作符将词项连接起来的查询

布尔模型是最简单的模型 第一个模型 但在现在最先进的模型中依然使用

输入信息,被切割为关键词

人工and 检索and not 教材

百度的高级检索中有。

1\And 2\or not 3排序

倒排索引

一个例子

莎士比亚的哪部剧本包含Brutus及Caesar但是不包含 Calpurnia? 布尔表达式为Brutus AND Caesar AND NOT Calpurnia。

笨方法:从头到尾扫描所有剧本,对每部剧本判断它是否 包含Brutus AND Caesar ,同时又不包含Calpurnia

笨方法为什么不好?

 § 速度超慢(特别是大型文档集) § 处理NOT Calpurnia 并不容易(一旦包含即可停止判断) § 不太容易支持其他操作(e.g., find the word Romans near countrymen) § 不支持检索结果的排序(即只返回较好的结果)

因为现在语料库太长,从头到尾不现实。

建立词项(可以是字、词、短语、一句话)-文档的关联矩阵。

关联向量

关联矩阵的每一列都是0/1向量,每个0/1都对应 一个词项

给定查询Brutus AND Caesar AND NOT Calpurnia

取出三个行向量,并对Calpurnia 的行向量求补, 最后按位进行与操作

110100 AND 110111 AND 101111 = 100100.

检索效果的评价

正确率(Precision) : 返回结果文档中正确的比例。 如返回80篇文档,其中20篇相关,正确率1/4

召回率(Recall) : 全部相关文档中被返回的比例, 如返回80篇文档,其中20篇相关,但是总的应该 相关的文档是100篇,召回率1/5

正确率和召回率反映检索效果的两个方面,缺一 不可。

全部返回,正确率低,召回率100%

只返回一个非常可靠的结果,正确率100%

召回率低F是P R的调和平均

词项-文档的关联矩阵应该是高度稀疏的矩阵(就是1的占比很少)

为了降低占用空间,我们只把1的位置保留下来。

建立倒排索引表

把1保留下来,把0去掉。从稀疏矩阵到存储docID的向量。

对每个词项t, 记录所有包含t的文档列表.

每篇文档用一个唯一的docID来表示,通常是正整数, 如1,2,3…

通常采用变长表方式

磁盘上,顺序存储方式较好,便于快速读取

内存中,采用链表或者可变长数组方式

索引构建过程:

词条序列、排序、词典&倒排记录表

布尔查询的处理

And查询的处理 合并(Merge)两个倒排记录表,即求交集

每个倒排记录表都有一个定位指针,两个指针同 时从前往后扫描, 每次比较当前指针对应倒排记录, 然后移动某个或两个指针。合并时间为两个表长 之和的线性时间

OR表达式:Brutus OR Caesar 两个倒排记录表的并集

NOT表达式:Brutus AND NOT Caesar 两个倒排记录表的减

查询优化

合并索引表!实现and操作。

一、先最短的两个合并,DF小的先合并。//保留DF的原因之一

二、或者将布尔表达式转化为合取范式,

获得每个词项的df,(保守)估算每个子合取范式的df,最后将子合取范式的df从小到大排序。

布尔检索可以限定很多条件。

布尔检索构造复杂,对用户极其不友好。

布尔检索没有排序。

没有利用词频信息。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP32-C3(基本信息)

ESP32-C3 是一款低功耗、高集成度的 MCU 系统级芯片 (SoC),它集成了 2.4 GHz Wi-Fi 和低功耗蓝牙 (Bluetooth LE) 无线通信功能,并拥有丰富的外设接口和先进的电源管理机制。 主要特性: 无线通信: 支持 2.4 GHz Wi-Fi (802.11b/…

JVM(13):虚拟机性能分析和故障解决工具之Visual VM

1 Visual VM作用 是到目前为止随JDK发布的功能最强大的运行监视和故障处理程序,并且可以遇见在未来一段时间内都是官方主力发展的虚拟机故障处理工具。官方在VisualVM的软件说明中写上了“All-in-One”的描述字样,预示着他除了运行监视、故障处理外&…

SpringBoot实现文章点赞功能

提示:今日是2024年的6月30日,未来的你看到这篇文章,希望你依旧快乐 文章目录 前言 首先在这里前缀部分我就不做要求了,比如说登录信息什么的 数据库表格 这里实现点赞功能,主要是围绕论坛项目完成的 user_info代表用户信息表 for…

动态系统开发方法(DSDM): 基于RAD的全面指导与管理

目录 前言1. 动态系统开发方法概述1.1 DSDM的起源与背景1.2 DSDM的核心理念 2. DSDM的关键原则2.1 用户主动参与2.2 频繁交付2.3 时间盒管理2.4 高效的合作 3. DSDM的主要阶段3.1 可行性研究阶段3.2 业务研究阶段3.3 原型开发阶段3.4 设计与构建阶段3.5 部署阶段3.6 维护与支持…

MicroBin好用的粘贴板工具

有时候你可能想从一台电脑上粘贴文本到另一台电脑上,或者是你想要分享一张图片或者是一些文件,某些设备上登陆qq和微信有不太方便,那么就可以使用MicroBin,它不但可以实现跨设备复制粘贴的功能,还支持文件上传等功能 …

基于改进滑模、经典滑模、最优滑模控制的永磁同步电机调速系统MATLAB仿真

微❤关注“电气仔推送”获得资料(专享优惠) 模型简介 针对永磁同步电机调速系统的响应性能和抗干扰能力问题,本文做了四个仿真,分别为:永磁同步电机的PID控制调速系统、基于传统滑模控制的永磁同步电机的调速系统、最…

Windows 系统 Solr 8.11.3 安装详细教程(最新)

Windows 系统 Solr 8.11.3 安装详细教程 说明什么是Solr下载与解压如何启动启动命令:浏览器中打开dashboard其他命令查看关闭命令 说明 本次只是简单安装,为了在项目中使用,如果在公开服务器中安装需要更改开放端口,配置权限等。 …

echarts 图例有数值但是柱子不显示问题

如图所示在做echarts图表时发现柱状图有数值,但是柱子没展示,后来发现这个没展示的数值是最小值和左侧y轴的最小值保持持平了,所以没有展示出来。 将下图中设置y轴最小值为0就可以了 yAxis: [{type: value,name: 产出,min: 0max: dataMax,ax…

使用Visual Studio Code记笔记

因为学习需要,记笔记是很有必要的,平常发CSDN(都让CSDN是很棒的哈),后来使用VS Code的时候发现了很多插件,觉得做笔记还是相对不错的,主要用到的还是Markdown 主要设计的插件包括: …

为用户转出并处理MODIS NDVI数据案例过程记述,希望对大家有用!

最近为用户转出和处理了一次MODIS NDVI数据,我将过程做了个总结供大家参考!希望能帮助到一些下载和处理数据的朋友! 使用工具为三个:地图资源工具 和 GIS数据转换器-栅格,qgis。 1.选择【数据下载功能】,然后选择MO…

【C++】相机标定源码笔记- 立体视觉相机的校准和图像矫正类

类主要用于双目相机的标定和矫正。它包含了读取和保存相机模型、计算标定参数以及矫正图像的功能。通过这些功能,可以实现双目相机的标定和矫正,从而提高双目相机的精度和稳定性。 公有函数: 构造函数、带参构造函数、析构函数、读取双目相机…

java基于ssm+jsp 房屋租赁系统

1 管理员登录 管理员输入个人的用户名、密码登录系统,这时候系统的数据库就会在进行查找相关的信息,如果我们输入的用户名、密码不正确,数据库就会提示出错误的信息提示,同时会提示管理员重新输入自己的用户名、密码,…

Allegro如何画2D弧形线?

Allegro如何画2D弧形线? 在用Allegro进行PCB设计时,画弧形线的主要是在对PCB进行邮票孔拼板的时候。 具体操作方法如下: 1、选择菜单栏Add 选择3pt Arc(3pt 圆弧) Add的下拉菜单的各项功能作用如下图

influxdb时序数据库使用

influxdb时序数据库使用 influxdb时序数据库使用免费influxdb申请云无服务器Telegraf安装influxdb安装mac安装Redhat && Centos安装docker安装Kubernetes安装windows安装 influx 网页使用influx CLI 安装influx命令行界面influx配置项权限认证配置管理 API 令牌InfluxD…

http.cookiejar.LoadError: Cookies file must be Netscape formatted,not JSON.解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

解析桥式整流电路

下面这个桥式整流电路出场率很高,看着一定眼熟。 事实证明,强行灌输的东西总是难以下咽。记得读书那会,第一次看到这个电路时被吓到了,以至于直到这门课结束了也没搞清楚。 本文就来分析一下此电路中电流的走向,进而理…

1、什么是SSD?

概念 SSD(Solid State Drive)固态硬盘,是以闪存为介质的存储设备;这里突出的重点是闪存。 闪存,也就是常说的flash,分为NOR 和 NAND; NOR的地址线和数据线分开,所以NOR芯片可以像…

Mojo — 适用于所有人工智能开发人员的编程语言

Mojo语言是一个由人工智能公司Modular推出的全新编程语言,专为AI开发者设计。Mojo的语法与Python相似,但结合了Python的易用性和C语言的高性能,旨在解锁AI硬件的可编程性和AI模型的可扩展性。 Modular这个公司则是一个非常年轻的新生AI创业公…

Spark SQL 的总体工作流程

Spark SQL 是 Apache Spark 的一个模块,它提供了处理结构化和半结构化数据的能力。通过 Spark SQL,用户可以使用 SQL 语言或 DataFrame API 来执行数据查询和分析。这个模块允许开发者将 SQL 查询与 Spark 的数据处理能力结合起来,实现高效、优化的数据处理。下面是 Spark S…

【CT】LeetCode手撕—19. 删除链表的倒数第 N 个结点

题目 原题连接:19. 删除链表的倒数第 N 个结点 1- 思路 模式识别:删除倒数第 n 个结点 ——> 定义 dummyHead 并用双指针实现删除逻辑 2- 实现 ⭐19. 删除链表的倒数第 N 个结点——题解思路 class Solution {public ListNode removeNthFromEnd(Li…