- Moden information retrival
- 每双周一实验课,每四周一个实验。
- 学习目的:
- 了解IR(Information Research)的原理
- 考核标准
- 上课问答表现
- 实验课35%
- 期末考试50%
- 突出表现5%
【考试】
Outline
- 什么是信息检索
- 为什么要学习?
- Overview
- 不同检索系统的不同的设计目标:提高检索质量
- 用户检索需求:关键词,
信息检索
信息检索涉及到信息的获取、存储、组织和访问。
用户输入的关键词首先需要先作自然语言处理,在存储系统里面进行检索,一次检索不成功时,用户二次检索(闭环)。
从大规模非结构化数据(文本数据)
机构化数据与非结构化数据
信息检索的应用
- 舆情分析
- 情报分析
- 内容安全
信息去噪音。
SEO营销:加一些什么样的关键词可以让搜索引擎把“我”排到前面。
- 文档(非结构化/半结构化:xml)
- 信息需求
- 文档集,语料库
- 组织
- 存储
倒排索引(实验相关)
金庸的哪本小说包含郭靖和黄蓉但不包含张无忌?
除了整个扫描的更好的方法?
建立一个Term-doc的关联矩阵
利用矩阵可以满足 郭靖and黄蓉not 张无忌
郭靖与黄蓉:11010 与 11010
not 张无忌=11011
基于布尔表达式就不需要排序。
三项进行简单对比,即可以查询满足的要求。
缺点:这张表是一个稀疏矩阵,即有很多空间信息是我们不需要的。
典型的搜索过程
如何让用户的需求变得越来越specific,即类人一样的抽象过程?
查询重构的闭环。
检索效果的评价
Precision/recall
如何定义新的评价指标?(【考试】时学会计算)
- Precision:返回结果文档中正确的比例。返回80,20相关
- Recall:全部文档中返回的正确的比例,返回100,20篇相关,相关的文档一共是100,所以是20%
Recall更看重相关返回的多不多(占一共有的,这些有的不一定都返回)。Precision看中返回的里面有多少相关。
大文档集
Term-Doc 矩阵是高度稀疏的
如何做到只记住1的位置?即,将文档词向量空间进行压缩。
列数,远远大于每一行文档所应该包含的词数(unique term)。
倒排索引
- 对于每一个词T,记录所有包含T的文档列表
- 问题:能否采用定长数组的方式来存储DOCID列表
- 定长:不够flexible:太大,太小
- 非定长:指针链表(空间消耗:多存指针)
Posting:倒排(记录)表【考试】
考试画图—>填出来?
为什么要按照DOCID顺序排列?二分查找(单纯数组的时候)
构建
构建过程:词典+倒排记录表
分词工具(现有的工具包)
Tokenization(切词)
Linguistic modules:语言分析工具,将不同的词的形式用同一种表达方式表达)
如Windows,等大小写的变化会带来很多转义时候的错误,从而导致检索精度的损失。
Indexer
按照这个流程构建所需要的Posting.
过程:<词条,DOCID>
- 按词项排序(字母序)
- Posting按,DOCID进行排序,
- 某词项出现多次时会被合并
- 词项(Doc,frequency,df)
为什么要记录这个词在多少个文档里面?
存储开销
词项+频率
链表+指针