现代信息检索笔记(二)

news2025/1/18 7:27:28

目录

信息检索概述

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/1881342.html

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

相关文章

【IVI】car_service 命令行工具

【IVI】car_service 命令行工具 1、car_service服务执行2、CarShellCommand命令执行2.1 cmd car_service day-night-mode day设置白天模式2.2 cmd car_service inject-vhal-event vhal信号事件2.2.1 VehiclePropertyIds2.2.2 模拟驾驶事件 2.3 cmd car_service inject-error-ev…

STM32MP135裸机编程:使用软件触发硬件复位

0 参考资料 STM32MP13xx参考手册.pdf 1 使用寄存器实现软件复位 1.1 复位电路概述 重点关注下面标红的路线: 通过这条路线可以清楚看到,我们可以通过设置RCC_MP_GRSTCSETR寄存器让RPCTL(复位脉冲控制器)给NRST(硬件复…

hmall-服务保护和分布式事务

1. 微服务保护 1.1 服务保护方案 1.1.1 请求限流 服务故障最重要原因,就是并发太高!解决了这个问题,就能避免大部分故障。当然,接口的并发不是一直很高,而是突发的。因此请求限流,就是限制或控制接口访问…

常见容性负载组应用

什么是容性负载? 在交流系统中,电压和电流随电源的频率而上升和下降。电压和电流是否一起上升取决于负载的特性,负载有三种类型。电阻负载(例如加热元件和白炽灯)的影响最小,电压和电流一起上升和下降&…

Vue3学习笔记<->创建第一个vue项目(2)

新建一个项目目录 找一个盘新建一个目录,我这里在D盘创建一个vuedemo目录作为项目存放的目录。使用idea打开目录。   单击ieda底部的按钮“Terminal”,打开命令行窗口,如果命令行窗口当前目录不是“vuedemo”,就切换到“vuedem…

九浅一深Jemalloc5.3.0 -- ②浅*size class

目前市面上有不少分析Jemalloc老版本的博文,但5.3.0却少之又少。而且5.3.0的架构与之前的版本也有较大不同,本着“与时俱进”、“由浅入深”的宗旨,我将逐步分析Jemalloc5.3.0的实现。 另外,单讲实现代码是极其枯燥的,…

web渗透-反序列化漏洞

一、简介 就是把一个对象变成可以传输的字符串,目的就是为了方便传输。假设,我们写了一个class,这个class里面存有一些变量。当这个class被实例化了之后,在使用过程中里面的一些变量值发生了改变。以后在某些时候还会用到这个变量&#xff0…

压缩包怎么解压,解压压缩包不损坏文件

常见格式: ZIP:最常见的压缩文件格式之一,支持跨平台。RAR:另一种常见的压缩文件格式,通常压缩率比ZIP高,但不如ZIP普及。7Z:来自7-Zip的压缩格式,支持更高的压缩率和一些高级特性。…

长沙高校大学智能制造实验室数字孪生可视化系统平台建设项目验收

长沙高校大学智能制造实验室始终站在科技前沿,不断探索和实践智能制造的新技术、新方法。数字孪生技术作为智能制造领域的重要分支,其通过将物理世界的实体映射到数字世界,实现对实体的实时监测、模拟和分析,为智能制造提供了强大…

Python | Leetcode Python题解之第208题实现Trie(前缀树)

题目: 题解: class Trie:def __init__(self):self.children [None] * 26self.isEnd Falsedef searchPrefix(self, prefix: str) -> "Trie":node selffor ch in prefix:ch ord(ch) - ord("a")if not node.children[ch]:retur…

解决本机电脑只能通过localhost访问,不能通过127.0.0.1访问

背景问题 有天我启动项目,发现项目连接Mysq总是连接不上,查了url、ip、port、用户名和密码都没有错,就是连接不上mysql数据库,后来通过查找资料发现有多个进程占用3306端口。 pid 6016 是mysqld服务 而pid 9672 是一个叫 svchos…

Python-数据分析组合可视化实例图【附完整源码】

数据分析组合可视化实例图 开篇:应女朋友的要求,于是写下了这篇详细的数据可视化代码及完整注释 一:柱状图、折线图横向组合网格布局 本段代码使用了pyecharts库来创建一个包含多个图表(柱状图、折线图)和网格布局的…

理想汽车提出3DRealCar:首个大规模3D真实汽车数据集

理想提出3DRealCar,这是第一个大规模 3D 实车数据集,包含 2500 辆在真实场景中拍摄的汽车。我们希望 3DRealCar 可以成为促进汽车相关任务的宝贵资源。 理想汽车提出3DRealCar:首个大规模3D真实汽车数据集! 我们精心策划的高质量3DRealCar数…

帝国CMS(EmpireCMS)漏洞复现

简介 《帝国网站管理系统》英文译为Empire CMS,简称Ecms,它是基于B/S结构,且功能强大而帝国CMS-logo易用的网站管理系统。 帝国CMS官网:http://www.phome.net/ 参考相关漏洞分析文章,加上更详细的渗透测试过程。 参考…

使用Pytho删除docx文档中的页眉和页脚

介绍: 在日常工作中,我们经常需要处理文档,其中包括删除或修改页眉和页脚。本文将介绍如何使用Python编程语言和wxPython模块创建一个简单的GUI应用程序,帮助我们删除docx文档中的页眉和页脚。 C:\pythoncode\new\deleteyemeiyej…

数据结构:期末考 第六次测试(总复习)

一、 单选题 (共50题,100分) 1、表长为n的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均个数为( D ).(2.0) A、 &am…

51单片机项目-点亮第一个LED灯

目录 新建项目选择型号添加新文件到该项目设置字体和utf-8编码二极管如何区分正负极原理:CPU通过寄存器来控制硬件电路 用P2寄存器的值控制第一个灯亮进制转换编译查看P2寄存器的地址生成HEX文件把代码下载到单片机中下载程序到单片机 新建项目 选择型号 stc是中国…

算法09 日期相关模拟算法【C++实现】

这是《C算法宝典》算法篇的第09节文章啦~ 如果你之前没有太多C基础,请点击👉专栏:C语法入门,如果你C语法基础已经炉火纯青,则可以进阶算法👉专栏:算法知识和数据结构👉专栏&#xff…

【Linux进程通信】匿名管道的常见特性、两进程间通过管道通信的情况分析

目录 一、只有血缘关系的进程之间才可以进行管道通信 二、管道只可以单向通信 三、进程间通信是会协同的-同步与互斥的 1.父子进程读写端都正常,管道为空父进程读端阻塞。 2.父子进程读写端都正常,管道满时子进程写端阻塞。 3.子进程写端关闭&…

idea集成uglifycss压缩混淆css

Uglifycss介绍 https://www.npmjs.com/package/uglifycss 命令行 $ uglifycss [options] [filename] [...] > output 选项: --max-line-len n每个字符添加一个换行符(大约); 表示无换行符,并且是默认值n0 --expand-vars扩…