访问博客查看 本文 最新内容,排版更美观ヾ(•ω•`)o 如有错误欢迎指出~
IR 信息检索系列笔记:
该笔记是本人于哈尔滨工业大学(深圳)2021 年夏季学期「信息检索」课程的笔记,授课教师为 陈清财 教授。姑且算是一门 NLP 入门课程。
概论 | Overview
What’s Information Retrieval?
Indexing, retrieving, and organizing text by probabilistic or statistical.
Comparing IR to Databases:
Databases | IR | |
---|---|---|
Data | Structured | Unstructured |
Fields | Clear semantics | No fields |
Queries | Defined(SQL) | Free text (自然语言) + Boolean |
Recoverability | Critical | Downplayed |
Matching | Exact | Imprecise (need to measure) |
信息检索的基本方法 | Basic Approach to IR
大多数成功的方法都是基于概论统计,而不是自然语言理解。因为自然语言在缺少约束的状态(unrestricted domains)下具有极大不确定性,而人工标注又十分昂贵。
统计方法的核心思想:Relevant (相关) Items are Similar (相似). Usually look for documents matching query words.
The similarity can be measured by:
- String matching/comparison (字符串匹配)
- Same vocabulary (词汇)
- Probability that documents arise from same model (文档出现概率)
- Same meaning of text (语义) -- Hard to achieve
词袋 | “Bag of Words”
Compares words without regard to order.
Stop word (停用词):屏蔽对文章分类无效的高频词。
基础检索模型 | Retrieval Models
检索模型:建立在 Doc 和 Query 之间的模型,用于描述相似性、排序相似性。
检索变量:queries (查询), documents (文档), terms (术语), relevance
judgments (相关性判别)。
Exact vs. Best Match
精确匹配:二值 (0/1) 匹配,检索结果无序,可以用 boolean queries (布尔查询)、proximity operators (邻接算子)、simple regular expressions (正则表达式)。对文档量级有限制。
最佳匹配:相似度 (0~1) 匹配,检索结果按照相似度排序。
布尔模型 | Boolean Retrieval
一种最常见的精确匹配模型,通常结果是无序呈现(unranked),有的模型会增加简单的排序。
精确匹配模型最直接的想法:线性扫描,从头到尾扫描文档集,对每个文档都查看是否包含关键词。在 Unix/Linux 系统中的文本扫描命令 grep 做的就是这种工作。然而,当需要检索的文档规模非常大时,这种线性扫描的方式的效率会变得非常低下。
如何实现 Boolean Retrieval
需要实现如下的模块:
Term-document incidence (词典表): 类似 index (索引) 的文档呈现的形式,一个矩阵中,用 0 和 1 标记文档中出现的 term (词项)。
Boolean queries (布尔查询): AND, OR, AND-NOT.
Incidence vector (关联向量): 0/1 vector, bitwise AND。
Proximity operators (邻接算子): phrases - “”、same sentence - “ /s ”、same paragraph - “/p” 等等。
实现中的要点
在词典表实现中,为了避免矩阵过大,还可以引入 inverted index (倒排索引) 存储矩阵,这里不再赘述。下面介绍两个实现步骤中的概念。
token (词条) vs. term (词项):
对于英文文本而言,词条就是根据空格把单词一个一个地提取出来,把原始文本分割开。词项则是更加统一规范的的词条。
例如在文本中可能出现 “apple”、“apples”、“Apple” 这类 token,但我们知道这几个 token 都是表达苹果(apple)的意思,因此,在构建索引的时候通常会把这几个 token 统一还原为 “apple”,只为 “apple” 建立索引项,那么 “apple” 就是一个 term 了。
Features to Note about Queries
- Queries are developed incrementally. 查询表达式是可增长的,往往一直增加直到查询出正确结果。
- Queries are complex. 用到了一定公式,对初学者不友好。
- Queries are long (av. 9-10 words). 不同于通常的自然语言询问,只需要 1-2 个单词。