现代信息检索笔记(二)——布尔检索
目录
信息检索概述
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 非结构化数据
结构化数据
通常指表格中的数据。
数据库常常支持范围或者精确匹配查询。
非结构化数据
通常指自由文本
允许
- 关键词加上操作符号的查询
- 更复杂的概念性查询,
找出所有的有关药物滥用(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从小到大排序。
布尔检索可以限定很多条件。
布尔检索构造复杂,对用户极其不友好。
布尔检索没有排序。
没有利用词频信息。
相关文章:
现代信息检索笔记(二)——布尔检索
目录 信息检索概述 IR vs数据库: 结构化vs 非结构化数据 结构化数据 非结构化数据 半结构化数据 传统信息检索VS现代信息检索 布尔检索 倒排索引 一个例子 建立词项(可以是字、词、短语、一句话)-文档的关联矩阵。 关联向量 检索效果的评价 …...
使用Python实现学生管理系统
文章目录 1. 系统概述2. 系统功能3. 实现细节3.1 初始化学生列表3.2 添加学生3.3 显示所有学生3.4 查找学生3.5 删除学生3.6 主菜单 4. 运行系统 在本文中,我们将使用Python编程语言来开发一个简单的学生管理系统。该系统将允许用户执行基本的学生信息管理操作&…...
【嵌入式DIY实例】- LCD ST7735显示DHT11传感器数据
LCD ST7735显示DHT11传感器数据 文章目录 LCD ST7735显示DHT11传感器数据1、硬件准备与接线2、代码实现本文介绍如何将 ESP8266 NodeMCU 板 (ESP-12E) 与 DHT11 (RHT01) 数字湿度和温度传感器连接。 NodeMCU 从 DHT11 传感器读取温度(以 C 为单位)和湿度(以 rH% 为单位)值,…...
基于Tools体验NLP编程的魅力
大模型能理解自然语言,从而能解决问题,但是就像人类大脑一样,大脑只能发送指令,实际行动得靠四肢,所以LangChain4j提供的Tools机制就是大模型的四肢。 大模型的不足 大模型在解决问题时,是基于互联网上很…...
强化学习-3深度学习基础
文章目录 1 强化学习与深度学习的关系2 线性回归3 梯度下降4 逻辑回归5 全连接网络6 更高级的神经网络6.1 卷积神经网络6.2 循环神经网络6.3 transformer 将深度学习和强化学习结合起来,利用深度学习网络强大的拟合能力通过将状态、动作等作为输入,来估计…...
SOC模块LoRa-STM32WLE5有哪些值得关注
SoC 是片上系统的缩写,是一种集成芯片,集成了计算机或其他电子系统的所有或大部分组件。这些组件通常包括中央处理器 (CPU)、内存、输入/输出接口和辅助存储接口。包含数字、模拟、混合信号和通常的 RF 信号处理功能,具体取决于应用。片上系统…...
CSS中的display属性:布局控制的关键
CSS的display属性是控制元素在页面上如何显示的核心属性之一。它决定了元素的显示类型,以及它在页面布局中的行为。本文将详细介绍display属性的不同值及其使用场景,帮助你更好地掌握布局控制。 display属性的基本值 block 特点:块级元素&…...
【Spring Boot AOP通知顺序】
文章目录 一、Spring Boot AOP简介二、通知顺序1. 通知类型及其顺序示例代码 2. 控制通知顺序示例代码 一、Spring Boot AOP简介 AOP(Aspect-Oriented Programming,面向切面编程)是对OOP(Object-Oriented Programming,…...
k8s是什么
1、k8s出现的背景: 随着服务器上的应用增多,需求的千奇百怪,有的应用不希望被外网访问,有的部署的时候,要求内存要达到多少G,每次都需要登录各个服务器上执行操作更新,不仅容易出错,…...
使用雪花算法(Snowflake Algorithm)在Python中生成唯一ID
使用雪花算法Snowflake Algorithm在Python中生成唯一ID 使用雪花算法(Snowflake Algorithm)在Python中生成唯一ID雪花算法简介Python实现代码解析使用示例优势注意事项适用场景结论 使用雪花算法(Snowflake Algorithm)在Python中生…...
Docker期末复习
云计算服务类型有: IaaS 基础设施及服务 PaaS 平台及服务 SaaS 软件及服务 服务类型辨析示例: IaaS 服务提供的云服务器软件到操作系统,具体应用软件自己安装,如腾讯云上申请的云服务器等;SaaS提供的服务就是具体的软件,例如微软的Office套件等。 云计算部署模式有: 私有云…...
DP:子数组问题
文章目录 引言子数组问题介绍动态规划的基本概念具体问题的解决方法动态规划解法:关于子数组问题的几个题1.最大子数组和2.环形子数组的最大和3.乘积最大子数组4.乘积为正数的最长子数组长度5.等差数列划分 总结 引言 介绍动态规划(DP)在解决…...
[Day 20] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
AI在醫療領域的創新應用 隨著科技的快速發展,人工智能(AI)在各行各業的應用越來越廣泛,醫療領域也不例外。AI技術在醫療中的應用不僅提高了診斷的準確性,還改善了病患的治療效果,優化了醫療資源的配置。本…...
Handling `nil` Values in `NSDictionary` in Objective-C
Handling nil Values in NSDictionary in Objective-C When working with Objective-C, particularly when dealing with data returned from a server, it’s crucial (至关重要的) to handle nil values appropriately (适当地) to prevent unexpected crashes. Here, we ex…...
【深入浅出 】——【Python 字典】——【详解】
目录 1. 什么是 Python 字典? 1.1 字典的基本概念 1.2 字典的用途 1.3 字典的优势 2. 字典的基本特点 2.1 键的唯一性 2.2 可变性 2.3 无序性 3. 如何创建字典? 3.1 使用 {} 符号 3.2 使用 dict() 工厂方法 3.3 使用 fromkeys() 方法 4. 字…...
开发RpcProvider的发布服务(NotifyService)
1.发布服务过程 目前完成了mprpc框架项目中的以上的功能。 作为rpcprovider的使用者,也就是rpc方法的发布方 main函数如下: 首先我们init调用框架的init,然后启动一个provider,然后向provider上注册服务对象方法,即us…...
Suno: AI音乐创作的新时代
名人说:一点浩然气,千里快哉风。 ——苏轼 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、什么是Suno?1、Suno2、应用场景二、如何使用Suno制作音乐?步骤1:注册并登录Suno平台步骤2:创建音乐项目步骤3:生成音乐片段三、Suno的影响很高兴你打开了…...
六西格玛项目实战:数据驱动,手机PCM率直线下降
在当前智能手机市场日益竞争激烈的背景下,消费者对手机质量的要求达到了前所未有的高度。PCM(可能指生产过程中的某种不良率或缺陷率)作为影响手机质量的关键因素,直接关联到消费者满意度和品牌形象。为了应对这一挑战,…...
数据结构递归(01)汉诺塔经典问题
说明:使用递归时,必须要遵守两个限制条件: 递归存在限制条件,满⾜这个限制条件时,递归不再继续; 每次递归调⽤之后越来越接近这个限制条件; 1 汉诺塔(Hanoi Tower)经典…...
计算机专业课面试常见问题-计算机网络篇
目录 1. 计算机网络分为哪 5 层? 2. TCP 协议简述? 3. TCP 和 UDP 的区别?->不同的应用场景? 4. 从浏览器输入网址到显示页…...
LabelImg标注的YOLO格式txt坐标转换保姆级教程(附Python代码)
LabelImg标注的YOLO格式坐标转换实战指南:从原理到Python实现 在计算机视觉项目中,数据标注是模型训练前的关键步骤。LabelImg作为一款开源的图像标注工具,支持生成YOLO格式的标注文件。然而,许多开发者在实际应用中发现ÿ…...
Heightmapper完全指南:5步将全球地形数据变成3D模型
Heightmapper完全指南:5步将全球地形数据变成3D模型 【免费下载链接】heightmapper interactive heightmaps from terrain data 项目地址: https://gitcode.com/gh_mirrors/he/heightmapper 还在为3D地形建模发愁吗?Heightmapper让你的地形创作效…...
RP2040内置温度传感器:零成本实现精准温度监测与校准
1. 项目概述:为什么要在Pico上折腾内置温度传感器?如果你手头有一块树莓派Pico,或者任何基于RP2040芯片的开发板,你可能已经用它点亮过LED、驱动过电机,甚至玩过一些简单的通信协议。但你是否知道,就在这块…...
极简黑魔法:用 gh gist 搭建我们的私有配置分发 CDN
在多端协作的时代,我们经常需要在 PC、手机和路由器之间同步一些私密的订阅配置(如应用服务配置文件,凭据等)。 如果使用公共 Gist 会有隐私泄露风险;维护一个私有 Git 仓库又需要处理复杂的 API Token 鉴权࿰…...
保姆级教程:用PyTorch在MuJoCo的Ant-v2环境跑通PPO算法(附完整代码)
从零实现PPO算法:MuJoCo Ant-v2环境实战指南 在强化学习领域,让一个虚拟蚂蚁学会行走是经典的基准测试任务。本文将带你用PyTorch框架,在MuJoCo的Ant-v2环境中完整实现PPO算法。不同于理论讲解,我们聚焦于可运行的代码实现和实际…...
如何快速构建你的第一个AI Discord聊天机器人:gpt-discord-bot完整指南
如何快速构建你的第一个AI Discord聊天机器人:gpt-discord-bot完整指南 【免费下载链接】gpt-discord-bot Example Discord bot written in Python that uses the completions API to have conversations with the text-davinci-003 model, and the moderations API…...
C++二叉树控制台可视化:从递归布局到层序遍历的图形化实现
1. 项目概述:为什么我们需要“看见”二叉树?在C的学习和数据结构实践中,二叉树是一个绕不开的核心概念。我们经常需要实现它的插入、删除、遍历等操作。然而,无论是调试一个复杂的平衡算法,还是向他人展示你的数据结构…...
Windows热键侦探:快速定位热键冲突的终极解决方案
Windows热键侦探:快速定位热键冲突的终极解决方案 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾经遇…...
避坑指南:为什么你的PyTorch 1.8 + CUDA 10.1跑不了Grad-CAM?深入torch.fx模块依赖
避坑指南:为什么你的PyTorch 1.8 CUDA 10.1跑不了Grad-CAM?深入torch.fx模块依赖 当你兴致勃勃地准备用Grad-CAM可视化模型注意力时,终端突然抛出ModuleNotFoundError: No module named torch.fx——这个看似简单的报错背后,其实…...
哈佛医学院:空间组学范式转变!单细胞分子谱→多细胞功能
摘要 空间分辨单细胞技术能够实现细胞的原位分子谱分析,但能够同时发现多细胞空间模式并表征其分子程序的计算方法仍十分有限。本文提出SpatialQuery框架,可同时识别细胞基序(即反复出现的多细胞共定位模式)并开展基序靶向的分子分析。该框架通过差异表达分析挖掘受空间微…...
