信息检索与数据挖掘 | (五)文档评分、词项权重计算及向量空间模型

目录

📚词项频率及权重计算

🐇词项频率

🐇逆文档频率

🐇tf-idf权重计算

📚向量空间模型

🐇余弦相似度

🐇查询向量

🐇向量相似度计算

📚其他tf-idf权值计算方法

🐇tf的亚线性尺度变换方法

🐇基于最大值的tf归一化

🐇文档权值和查询权重机


我们需要一种方法分配一个分数,如果查询项不出现在文档,分数应该是0,更频繁的查询项的文档,分数越高。

在文档集规模很大的情况下,满足布尔查询的结果文档数量可能非常多,往往会大大超过用户能够浏览的文档数目。因此对搜索引擎来说,对文档进行评分和排序非常重要。

📚词项频率及权重计算

🐇词项频率

  • 首先,我们对于词项t,根据其在文档d中的权重来计算它的得分。最简单的方式是将权重设置为t在文档中的出现次数。这种权重计算的结果称为词项频率(term frequencey),记为 tf_{t,d},其中的两个下标分别对应词项和文档。
  • 对于文档 d,利用上述 tf 权重计算方式(或者任意一个将 tf 映射成实数的权重计算函数)得到的权重集合可以看成是文档的一个经过量化以后得到的浓缩版本。
  • 在这种通常称为词袋模型(bag of words model)的文档视图的情况下,词项在文档中的出现次序被忽略,但是出现的次数非常重要,这和布尔检索形成了鲜明对比。需要指出的是,这里我们只保留了词项在文档中出现的次数。

🐇逆文档频率

  • 原始的词项频率会面临这样一个严重问题,即在和查询进行相关度计算时,所有的词项都被认为是同等重要的。实际上,某些词项对于相关度计算来说几乎没有或很少有区分能力。
  • 例如,在一个有关汽车工业的文档集中,几乎所有的文档都会包含 auto,此时,auto就没区 分能力。为此,我们提出一种机制来降低这些出现次数过多的词项在相关性计算中的重要性。
  • 一个很直接的想法就是给文档集频率collection frequency)较高的词项赋予较低的权重,其中文档集频率指的是词项在文档集中出现的次数。这样,便可以降低具有较高文档集频率的词项的权重。
  • 一个更常用到的因子是文档频率document frequency,它表示的是出现 t 的所有文档的数目。
  • 由于 df 本身往往较大,所以通常需要将它映射到一个较小的取值范围中去。为此,假定所有文档的数目为 N,词项 t idfinverse document frequency, 逆文档频率)的定义如下:

idf_t=log\frac{N}{df_t}

🐇tf-idf权重计算

  • 对于每篇文档中的每个词项,可以将其tf和idf组合在一起形成最终的权值。如下:

tf-idf_{t,d}=tf_{t,d}\times idf_t

  • t 只在少数几篇文档中多次出现时 (对应的df小,idf大), 权重取值最大 (此时能够对这些文档提供最强的 区分能力);
  • t 在一篇文档中出现次数很少,或者在很多文档中出现,权重取值次之(此时对最后 的相关度计算作用不大);
  • 如果 t 在所有文档中都出现,那么权重取值最小。

  • 这样,就可以把文档看成是一个向量(vector),其中的每个分量都对应词典中的一个词项。
  • 分量值为上述公式计算出的权重值。当某词项在文档中没有出现时,其对应的分量值为 0

  • 重合度评分指标overlap score measure),文档d的得分是所有查询词项在文档中的出现次
    tf 之和。当然,我们可以对这种方法进行修正,即不采用 tf 而采用 tf-idf 权重求和:
Score(q,d)=\sum_{t\in q}tf-idf_{t,d}

📚向量空间模型

🐇余弦相似度

  • 假设文档 d 对应的向量用 \vec{V}\left ( d \right )表示,其中每个分量对应一个词项。
  • 针对两篇文档的相似度计算,考虑采用两个文档向量差向量的大小进行计算。但这种计算方式会受文档长度影响。
  • 计算两篇文档相似度的常规方法是求 余弦相似度
sim(d_1,d_2)=\frac{\vec{V}(d_1)\cdot \vec{V}d_2}{|\vec{V}(d_1)|| \vec{V}d_2|}
  • 上述公式除以分母的效果实际上相当于将向量进行长度归一化(欧式归一化),得到单位向量。因此,公式可以重写为:

sim(d_1,d_2)=\vec{v}(d_1)\cdot \vec{v}(d_2)

  • 以上可以看作是两个归一化以后的文档向量的内积,也就是计算两个向量的夹角余弦

  •  我们考虑在给定文档 d(也许是文档集中的某篇文档 di)的前提下在文档集中搜索与之相近的文档的过程。文档相似度计算就非常有用。
  • 很自然地,将一个包含 N 篇文档的文档集看成向量的集合相当于将整个文档集看成一个 M × N 词项—文档矩阵 term-document matrix ),其中矩阵的每行代表一个词项,每列代表一篇
    文档。

🐇查询向量

  • 将文档表示成向量的一个令人信服的理由是也可以将查询表示成向量
  • 将查询和文档看成两个向量,然后通过计算两者间的余弦相似度来衡量查询Q与文档D之间的相关性。文档或查询向量定义如下: 假设语料库中包含N个词项, 那么文档与查询向量的维数就是N,每一维度对应一个词项。
  • 我们将查询看成词袋,那么就可以将查询当成一篇极短的文档来表示成向量,进而通过计算查询向量与文档向量的余弦相似度来对所有文档进行排名。这样即使一篇文档不包含所有的查询词项也可能会获得较高的余弦得分。
  • 总结下来,整个检索过程就是:计算查询向量和文档集中每个文档向量的余弦相似度,结果按照得分排序,并选择得分最高的 K 篇文档。实际这个过程的代价很大,因为每次相似度计算都是数万维向量之间的内积计算,具体计算方法后续进行讨论。

🐇向量相似度计算

  • 通常情况下,一个典型检索系统的配置包括:一批文档组成的文档集,其中每篇文档表示成一个向量;一个自由文本查询,也表示成一个向量;正整数 K
  • 检索系统的目标是,给定查询,从文档集合中返回得分最高的 K 篇文档。
  • 向量相似度的基本算法

📚其他tf-idf权值计算方法

🐇tf的亚线性尺度变换方法

  • 即使一个词项在文档中出现了 20 次,它所携带信息的重要性也不可能是只出现1 次的词项的 20 倍。也就是说,在把一个文档复制20次之后,该文档的重要性也不应该说是比原文档大。
  • 因此,可对原始的词项频率进行修改,而不仅仅是计算词项出现的次数。
  • 采用原始词项频率的对数函数:
Wf_{t,d}=\left\{\begin{matrix} 1+logtf_{t,d} ,&tf_{t,d}>0, & \\ 0, & others. & \end{matrix}\right.
  • 基于上述方式,tf就可以用wf来替代,于是就可以得到:

wf-idf_{t,d}=wf_{t,d}\times idf_t

🐇基于最大值的tf归一化

  • 采用文档中最大的词项频率对所有词项的频率进行归一化。
ntf_{t,d}=a+(1-a)\frac{tf_{t,d}}{tf_{max}(d)}
  • 阻尼系数a是一个0到1之间的数,通常取0.4,而在一些早期的工作中使用的是 0.5
  • a 主要起平滑smoothing)作用。
  • 这里进行平滑的基本思路是当 tf 适度变化时(如从 1 变到 2 ),使用平滑技术来保证因其引起的 ntf 的波动不会非常剧烈。
  • 我们发现,由于长文档中词项反复出现的可能性大,所以长文档中的词项频率倾向于取更大的值。这显然是不公平的,而 最大 tf 归一化方法的主要思路就是 减轻这种不公平所带来的影响

🐇文档权值和查询权重机制

  • SMART系统:给不同的tf,idf实现方式命名

  •  文档向量和查询向量权重计算方法的组合字母表示为 ddd.qqq
  • 3 位字母代表文档向量的权重计算方法,而后 3 位字母代表查询向量的权重计算方法。
  • 每个 3 位字母组合中的1 位字母表示权重计算中的 tf 因子,第 2 位表示 df 因子,第 3 位表示归一化形式。
  • 比如:一个普遍使用的权重计算机制是 lnc.ltc ,这表明文档向量采用了对数 tf 计算方法、没有采用 idf 因子(同时基于效 率和效果的考虑)及采用余弦归一化方法,而此时查询向量则采用了对数 tf 计算方法、 idf 权重因子 及余弦归一化方法。

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

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

相关文章

Jmeter —— jmeter参数化实现

jmeter参数化 在实际的测试工作中,我们经常需要对多组不同的输入数据,进行同样的测试操作步骤,以验证我们的软件的功能。这种测试方式在业界称为数据驱动测试, 而在实际测试工作中,测试工具中实现不同数据输入的过程称…

数据库管理-第112期 Oracle Exadata 03-网络与ILOM(20231020)

数据库管理-第112期 Oracle Exadata 03-网络与ILOM(202301020) 在Exadata中,除了对外网络以外,其余网络都是服务于一体机内部各组件的网络,本期对这些网络的具体情况和硬件管理相关做一个讲解。 1 网络分类 1.1 生产…

记调试SMBUS的心得

为什么电池电压读的不对 仔细一看是I2C读取数据的时候少了一个CLK I2C是非常严密的 读数据之后,发送 ACK,让从机准备数据 发送NACK,告诉从机别准备了 ACK和NACK的区别是啥,告诉你,就是NACK先拉高SDA,再…

十四天学会C++之第五天:类的详细讨论

1. 友元函数和友元类 什么是友元函数和友元类,它们的作用。如何声明和使用友元函数和友元类,访问类的私有成员。 友元函数(Friend Functions) 友元函数是一种特殊的函数,它被允许访问类的私有成员。这意味着即使成员…

为什么要做字节对齐 alignment?

下面这段 C 代码的输出是什么&#xff1f;定义的 Type 占用的字节数&#xff08;下面简称为字节数&#xff09;是多少呢&#xff1f; #include <iostream>struct Type {char a;int b; };int main(void) {std::cout << sizeof(Type) << \n; }经过编译运行&am…

阿里面试(持续更新)

一面&#xff1a; 1 HashMap 实现原理&#xff0c;ConcurrentHashMap 实现原理 HashMap和ConcurrentHashMap都是存储键值对的数据结构&#xff0c;不同的是HashMap是线程不安全的&#xff0c;ConcurrentHashMap是线程安全的&#xff0c;HashMap在高并发情况下会出现数据不一致…

企业知识库软件,快速构建企业知识分享与团队协同的软件

企业知识库是一种特殊的在线协同文档工具&#xff0c;支持包括FAQ、文档、视频、知识图谱等。从本质上讲&#xff0c;它是基于企业知识库软件从而实现内部或外部知识的沉淀、集合、更新、共享等&#xff0c;能为员工或客户提供常见问题的标准回答。 今天我就基于HelpLook &…

敏捷是怎么提高工作效率的

敏捷管理是一门极力减少不必要工作量的艺术。 谷歌、亚马逊、苹果、微信、京东等全球 500 强企业都在用的管理方法&#xff0c;适用于各行各业&#xff0c;被盛赞为应获“管理学的诺贝尔奖”。 它专注于让员工不受种种杂事的羁绊&#xff0c;激发个体斗志&#xff0c;释放出巨大…

阶段六-Day05-MyBatis3

一、多表查询&#xff08;面试题&#xff09; 1. 介绍 多表查询是在企业中必不可少的&#xff0c;无论多么简单的项目里通常会出现多表查询的操作。因为只要是关系型数据库&#xff0c;在设计表时都需要按照范式进行设计&#xff0c;为了减少数据冗余&#xff0c;都会拆成多个…

Proteus仿真--量程自动切换数字电压表(仿真+程序)

本文主要介绍基于51单片机的量程自动切换数字电压表Proteus仿真设计&#xff08;完整仿真源文件及代码见文末链接&#xff09; 简介 硬件电路主要分为单片机主控模块、AD转换模块、量程选择模块以及数码管显示模块 &#xff08;1&#xff09;单片机主控模块&#xff1a;单片…

Golang开发软件

1. 引言 Go&#xff08;也称为Golang&#xff09;是一种开源的编程语言&#xff0c;由Google在2007年启动的项目中开发而来。它是一种静态类型的编译型语言&#xff0c;旨在提供高效、可靠的性能。相比于其他编程语言&#xff0c;Golang具有更高的执行效率和并发能力&#xff…

OpenStack云计算平台实战-----创建空白虚拟机

1、创建空白虚拟机 需要注意的步骤会截图一下&#xff0c;其它的基本都是下一步&#xff0c;默认的即可 建议将虚拟机命名为自己的名字加后缀 将处理器数量和每个处理器的内核量都修改为2 将虚拟机的内存设置为8G&#xff0c;不然不够用 将指定磁盘大小设置为200G&#xff0c;…

精讲stable diffusion的controlNet插件

controlNet插件是stable diffusion的一个重要插件&#xff0c;甚至可以说正是因为有了controlNet插件&#xff0c;stable diffusion才会具有midjourney所不具备的独特魅力&#xff01; 我们今天就一起来学习下controlNet插件的安装和每个模型的用法 插件主页 独立的controlN…

微信小程序授权登录介绍

目录 一. 小程序登录如何获取微信用户信息 二. 小程序微信授权登录示例 后台代码 小程序代码 效果展示 三. 微信emoji存储问题 一. 小程序登录如何获取微信用户信息 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识&#xff0c;快速建立小程序内…

【Java 进阶篇】手把手教你创建 Bootstrap 旅游网站

随着互联网的普及&#xff0c;旅游行业在全球范围内迅速发展。人们通过网络规划、预订和分享他们的旅行经历。因此&#xff0c;拥有一个令人印象深刻的旅游网站对于吸引游客和提供有用信息至关重要。在本篇博客中&#xff0c;我们将手把手教您如何创建一个令人兴奋的旅游网站&a…

华为eNSP配置专题-OSPF路由协议的配置

文章目录 华为eNSP配置专题-OSPF路由协议的配置0、概要介绍1、前置环境1.1、宿主机1.2、eNSP模拟器 2、基本环境搭建2.1、终端构成和连接2.2、终端的基本配置 3、OSPF路由的配置3.1、OSPF路由的配置3.1.1、在R1上配置OSPF3.1.2、在R2和R3上配置OSPF3.1.3、查看和监控OSPF 华为e…

[传智杯 #5 初赛] I-不散的宴会

洛谷P8877 [传智杯 #5 初赛] I-不散的宴会 题目大意 学生社会可以被看作一个排列成等腰直角三角形的节点阵列。该节点阵列共有 n n n行&#xff0c;第 i i i行共有 i i i个节点&#xff0c;我们将第 i i i行第 j j j列的节点标号为 ( i , j ) (i,j) (i,j)。 这些点具有权值。…

正则表达式之学习笔记

正则表达式学习笔记 一、概念二、正则表达式组成三、常见的正则表达式3.1 .匹配任意字符3.2 * 匹配前一个字符的0个或多个实例3.3 ^ 匹配输入字符串的开头3.4 $ 匹配行尾3.5 [] 匹配字符集合\<\> 精确匹配符号 一、概念 正则表达式是由一系列特殊字符组成的字符串&#…

【笔试题】华为研发工程师编程题

1.汽水瓶 某商店规定&#xff1a;三个空汽水瓶可以换一瓶汽水&#xff0c;允许向老板借空汽水瓶&#xff08;但是必须要归还&#xff09;。 小张手上有n个空汽水瓶&#xff0c;她想知道自己最多可以喝到多少瓶汽水。 数据范围&#xff1a;输入的正整数满足 1≤n≤100 1≤n≤…

localforage-本地存储的优化方案

前言 前端本地化存储算是一个老生常谈的话题了&#xff0c;我们对于 cookies、Web Storage&#xff08;sessionStorage、localStorage&#xff09;的使用已经非常熟悉&#xff0c;在面试与实际操作之中也会经常遇到相关的问题&#xff0c;但这些本地化存储的方式还存在一些缺陷…