“Ir-2026-spring”的版本间的差异

来自SUDA-HLT
跳到导航 跳到搜索
(建立内容为“ <nowiki>考虑来2-3 次考试。 2次考试的方案: 倒排搞完 考一次 最后一次 3次考试的方案: 最大匹配分词搞完,考一次…”的新页面)
 
 
(未显示2个用户的24个中间版本)
第1行: 第1行:
  
  <nowiki>考虑来2-3 次考试。
+
 
 +
= 信息检索综合实践 =
 +
 
 +
李正华
 +
 
 +
* 学生:计23计科1班
 +
* 助教:吕喆、梅睿桐 
 +
* QQ群: xx
 +
* 时间:周四 6-9 节课 1-17 周
 +
* 地点:理工楼238
 +
 
 +
== 上课基本要求 ==
 +
* 不能做的事情:打游戏、看课程无关视频、刷网页
 +
* 认真读作业要求,按时交作业。csteaching
 +
* 不能抄袭别人或网上的,自己做;不要把自己的作业给别人
 +
 
 +
== 课程建议 ==
 +
* 每个作业,截止时间后,把成绩发给大家,并用ppt给大家讲一下批作业发现的问题,题目分析
 +
* 上课期间:请大家积极提问。遇到大家都无法理解的公共问题,我会补充讲解
 +
* 非上课时间提问
 +
** 建议同学们在群里提问(包括但不限于代码的bug、不理解算法、作业资源和提交等),由其他同学帮助解答;
 +
** 群里的提问如果其他同学也无法回答,可以私信助教(吕喆:周三晚上7点到9点,梅睿桐:周四晚上7点到9点);
 +
 
 +
== 计算成绩的规则和说明(待定) ==
 +
* <font color='red>核心要求:掌握最基本的概念、方法、算法</font>
 +
* 实验作业:70分
 +
** 一系列作业,每个作业 5-15分(形式检查为辅、平时考核为主)
 +
*** <font color='red>平时考核:考察课程相关的基础知识,看看作业是否是自己做的</font>
 +
** 必须按照规定时间,按照规定格式要求,将实验报告+源代码,提交到网站(见下面)中
 +
* 平时成绩:30分
 +
** 不能迟到、早退,特殊情况必须请假,并带辅导员签字的假条;
 +
** 签到表:除了姓名,还要写一下进展
 +
 
 +
== 提交作业说明 ==
 +
* 作业网址:本学期开始的实验布置、提交与批改等不再使用csteaching平台,统一改用工程认证管理系统。请各位老师通过工程认证管理系统(网址[http://42.244.43.76:8000/ http://42.244.43.76:8000/])开展实验布置、批改等相关工作,并烦请同步通知班级学生在该系统完成实验提交。
 +
* <font color='red>作业迟交了则最终成绩会按一定比例缩减</font>
 +
* 以.zip压缩包形式提交,需包含以下内容
 +
** 源代码:代码不要都团在一起,请用空行对代码进行分隔,并简单注释代码块的功能
 +
** readme.txt文件:说明如何运行你的程序,需要什么环境,如windows或linux,python版本如python3.5
 +
** 实验报告(pdf文件,<font color='red>请把word转为pdf</font>)
 +
*** 请按照实验模版[[:文件:ir-2022-spring-report.doc]],认真填写个人信息、实验题目、实验内容等
 +
*** 不要大段粘贴代码,最多可以粘贴核心的一小段代码,<font color='red>粘贴大段代码会扣分</font>
 +
*** 写清楚自己的解决思路,尤其是遇到的难点和如何解决
 +
*** 建议可以画流程图或者写伪代码。
 +
*** 解决思路的流程图中是以文字为主还是以代码为主?报告中不要直接放代码。文字为主,不在于写得长,而在于写清楚,表明你确实做了、想了。
 +
*** 问:流程图可以改成自然语言描述或者是伪代码吗?答:流程图也可以画的很high-level的。大家自由发挥。也可以画到纸上然后拍照截图。模块化思维 大问题分解小问题 。
 +
*** <font color='red>将程序运行结果截图,没有运行结果会扣分</font>,中间的输出结果/文件可以截图一部分
 +
* 提交前自我检查
 +
** 是否有包含readme.txt文件解释如何编译执行你的程序。 <font color='red>如没有该文件,将减分。</font>
 +
** 是否认真完成实验报告
 +
** 是否可以按照readme.txt正确编译和运行程序
 +
** 是否包含别人的代码,<font color='red>抄袭和被抄袭的都是0分</font>
 +
** 期末可能会用软件做自动抄袭检查
 +
** 等这学期最后几周,我们可能统一对所有的作业做自动查重,到时候也会查出一些问题。 <font color='red>请大家一定要自己做,编程能力差一点,就做得简单一点,能力强,就做得好一点。但是一定要自己做。 </font>
 +
* 提交作业命名规则
 +
** 压缩包(姓名学号.zip)
 +
*** 实验报告(姓名学号.pdf)
 +
 
 +
== 实验报告word模板 ==
 +
* [[:文件:ir-2022-spring-report.doc]]
 +
 
 +
== 具体内容(含作业:平时:30 分;实验:70 分) ==
 +
 
 +
{| class="wikitable"
 +
! style="text-align:left;"| 作业
 +
! 成绩比例
 +
! 评分要点
 +
|-
 +
| 分字
 +
| 5%
 +
| 按字节读取并判断高位
 +
|-
 +
| 单词计数
 +
| 5%
 +
| 无
 +
|-
 +
| 最大匹配分词
 +
| 10%
 +
| 算法和评价正确实现
 +
|-
 +
| 网页正文抽取
 +
| 10%
 +
| 按要求完成两个任务
 +
|-
 +
| 倒排索引
 +
| 15%
 +
| 高效创建倒排文件
 +
|-
 +
| 布尔查询
 +
| 10%
 +
| inter和union的复杂度为O(n),复杂查询用堆栈判断优先级
 +
|-
 +
| 网页相关性排序
 +
| 15%
 +
| 基于向量空间模型VSM、tf-idf权重
 +
|-
 +
| 爬虫和某机构主页检索系统
 +
| 15%
 +
| 实现爬虫,系统架构设计良好,说明文档详细,UI完整
 +
|-
 +
| <font color='black>基于深度学习的检索系统</font>
 +
| 15%
 +
| Contriever:重现部分实验结果;自己实现评价指标;在上一个作业中的爬虫和检索系统的基础上,自己设计、标注 10 个 query,对比向量空间模型VSM 和Contriever 的效果,给出评价结果。建议:VSM 给 100 个结果,然后 Contriever 重排序,然后人工标注,具体如何标注更合理,自己考虑好。
 +
|-
 +
|}
 +
 
 +
== 信息检索课程介绍 ==
 +
* [http://hlt.suda.edu.cn/~zhli/teach/ir-2019-spring/ir-introduction-v0.4.pdf PPT下载]
 +
* 2022春视频和图片:
 +
** 低画质:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/course-intro-low-quality.mp4 课程介绍]
 +
** 高画质:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/course-intro-part-1.mp4 课程介绍-part1]、 [http://hlt.suda.edu.cn/LA/Ir-2022-Spring/course-intro-part-2.mp4 课程介绍-part2]
 +
** 图片:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/course-intro.jpg 图]
 +
 
 +
* <font color='red>和2022年课程的区别</font>:增加了'''基于深度学习的检索'''的内容,删除'''词性标注'''相关内容
 +
 
 +
== 信息检索系统介绍 ==
 +
* 2022春视频:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/intro-to-info-retrieval.mp4 信息检索系统介绍]
 +
 
 +
= 具体作业 =
 +
 
 +
== 作业1:分字(C++语言) ==
 +
* 2022春视频和图片:
 +
** 低画质:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/split-char-low-quality.mp4 作业1]
 +
** 高画质:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/split-char-part-1.mp4 作业1-part1]、 [http://hlt.suda.edu.cn/LA/Ir-2022-Spring/split-char-part-2.mp4 作业1-part2]
 +
** 图片:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/split-char-figure-1.jpg 图1]、 [http://hlt.suda.edu.cn/LA/Ir-2022-Spring/split-char-figure-2.jpg 图2]
 +
* UTF-8数据:[[文件:sentence.txt]]
 +
* UFT-8编码规则:【2003 年发布的RFC 3629标准中,已经废除了 5-6 个字节,所以只用考虑 1-4 个字节的情况。感谢曹诗伟同学指出错误。】
 +
<nowiki>
 +
1字节 0xxxxxxx
 +
2字节 110xxxxx 10xxxxxx
 +
3字节 1110xxxx 10xxxxxx 10xxxxxx
 +
4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
 +
5字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
 +
6字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx </nowiki>
 +
 
 +
== 作业2:单词计数 ==
 +
* 课件 [http://hlt.suda.edu.cn/~zhli/teach/ir-2019-spring/word-count.pdf PPT下载]
 +
* 2022春视频:
 +
** 低画质:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/word-count-low-quality.mp4 作业2]
 +
** 高画质:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/word-count-2.mp4 作业2]
 +
* 数据 [http://hlt.suda.edu.cn/~zhli/teach/ir-2019-spring/sample-en.txt txt下载]
 +
 
 +
== 作业3:最大匹配分词 ==
 +
* 作业提交时间截止时间:第4周下课之前提交
 +
* 课件:前向最大匹配 PDF文件--[[文件:Word-seg-max-match.pdf]];PPT文件--[[文件:Word-seg-max-match.zip]]
 +
* 2022春视频和图片:
 +
** 低画质:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/word-seg-max-match-low-quality.mp4 作业3]
 +
** 高画质:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/word-seg-max-match.mp4 作业3]
 +
** 图片:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/word-seg-max-match.jpg 图]
 +
 
 +
* 数据下载:
 +
** 字典:[[文件:dict.txt]]
 +
** 待分词:[[文件:sentence.txt]]
 +
** 正确答案(人工标注的,你的模型的预测结果要和这个文件进行对比,从而得到P/R/F值):[[文件:answer.txt]];
 +
** 正向最大匹配分词模型的预测结果(如果你的程序写对了,那么应该和这个结果一模一样):[[文件:out.txt]]
 +
 
 +
<nowiki>
 +
*正确实验结果
 +
**正确识别的词数:20263
 +
**识别出的总体个数:20397
 +
**测试集中的总体个数:20454
 +
**正确率:0.99343
 +
**召回率:0.99066
 +
**F值:0.99204 </nowiki>
 +
 
 +
== 作业4:网页正文抽取 ==
 +
 
 +
* 作业提交时间截止时间:第 6 周下课前提交
 +
* 2022春视频: [http://hlt.suda.edu.cn/LA/Ir-2022-Spring/web-page-content-extraction.mp4 作业4]
 +
* 课件(<font color='red'>请严格按照课件要求完成作业</font>):
 +
** [[:文件:ir-2022-spring-web-page-content-extraction.ppt]]
 +
** [[:文件:ir-2022-spring-web-page-content-extraction.pdf]]
 +
* 数据
 +
** 1.html和2.html [[:文件:ir-2022-spring-example-html.zip]]
 +
** data-1k:1000个html文件 [[:文件:ir-2022-spring-all-html.zip]] (如果文件出现乱码,请到qq群里下载)
 +
 
 +
== 作业5:倒排索引 ==
 +
 
 +
* 作业提交时间截止时间:第8周下课前提交
 +
* 课件:
 +
** 仅供参考,与本次作业要求无关:[[:文件:ir-2022-spring-inverted-index-simplified.ppt]]
 +
*  2022春视频和图片:
 +
** 视频:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/inverted-index.mp4 作业5]
 +
** 图片:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/inverted-index.jpg 图]
 +
* 数据
 +
** 停用词表:[https://github.com/goto456/stopwords github网址] [http://hlt.suda.edu.cn/LA/Ir-2022-Spring/stopwords.zip 苏大本地下载]
 +
** 结巴词典:[https://github.com/fxsjy/jieba/tree/master/extra_dict github网址] [http://hlt.suda.edu.cn/LA/Ir-2022-Spring/word_dict.zip 苏大本地下载]
 +
** 结巴词典文件每一行有3列,为:单词、词频、词性,只需要使用第一列的单词即可,使用small进行调试,提交作业用big
 +
 
 +
== 作业6:布尔查询 ==
 +
 
 +
* 作业提交时间截止时间:第 10 周下课前提交
 +
*  2022春视频和图片:
 +
** 视频:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/bool-query.mp4 作业6]
 +
** 图片:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/bool-query.jpg 图]
 +
* 作业提交说明:
 +
** 附件中给出本次作业使用的倒排索引文件(可以在作业5的基础上进行优化),<font color="red">不需要提供构建倒排索引的代码,但在实验报告中给出倒排索引文件的说明,参考侯皓文同学</font>
 +
** 交集、并集操作用inter()、union()这两个函数单独封装
 +
** <font color="red">对4个语句</font> 'A', 'B', 'A AND B', 'A OR B' (A、B为自定义的查询词) 分别进行一次查询,每次的查询结果单独保存到一个txt文件中,以查询语句作为文件名(如 'A AND B.txt'`)
 +
** 结果展示部分,文件按名字字母序排序:指字符序(用内置的sort即可),先用pinyin包转成拼音再排序也可以,不要自行改变文件名(如 阿大.txt -> 34.txt)
 +
** 实现更复杂的查询,如:'A AND B OR C' 可以加分
 +
** 查询词的加重(用#标记)不做强制要求,但做了加分
 +
 
 +
== 作业7:基于向量空间模型(VSM)和tf-idf权重的网页相关性排序 ==
 +
 
 +
* 作业提交时间截止时间:第 12 周之前提交
 +
** 视频:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/web-page-rank.mp4 作业7]
 +
** 图片:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/web-page-rank-1.jpg 图片1]  [http://hlt.suda.edu.cn/LA/Ir-2022-Spring/web-page-rank-2.jpg 图片2]
 +
* 作业要求:
 +
** 如果无法理解向量空间模型,可以选择做tf-idf作业,但最多只给50分
 +
** 实现基于向量空间模型的网页相关性排序
 +
** 给定一个查询Q:可以是手动用空格分好词的"李正华 招收 学生";也可以是未分词的"李正华招收学生",之后用最大匹配分词分好词 -> "李正华 招收 学生"
 +
** 注释:一个给定分词的查询Q实际上等价于布尔查询OR:"李正华 招收 学生" <=> "李正华 OR 招收 OR 学生"
 +
* 作业提交说明:
 +
** 附件中给出本任务所使用的倒排索引文件
 +
** 在实验报告中说明对于余弦相似度计算中的:di[k]、q[k]、|di|、|q|是如何处理或存储的
 +
** 附件中给出一个查询Q的结果,保存为文本文件"Q.txt"中,格式为:
 +
 
 +
  文档名1(余弦相似度Sim) # Sim值可不除以|q|的值,一个例子: 阿鲁巴岛.txt(0.64)
 +
  句子1
 +
  句子2
 +
  ...
 +
  文档名2(余弦相似度Sim)
 +
  句子1
 +
  句子2
 +
  ...
 +
  ......
 +
 
 +
== 作业8:爬虫和某机构主页检索系统(综合项目) ==
 +
 
 +
* 作业提交时间截止时间:第14 周下课之前提交
 +
** 视频:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/web-spider.mp4 作业8]
 +
** PPT:[http://hlt.suda.edu.cn/LA/Ir-2022-Spring/web-spider.pptx PPT]
 +
* 任务一:用<font color="red">爬虫模块</font>尽量完整地爬下来一个机构对应的所有静态网页(html或htm后缀),保存到磁盘中:
 +
** 苏大、苏大计算机学院(规模小一点)都可以
 +
** orphan网页不用考虑
 +
* 任务二:基于爬取的网页,做一个完整的检索系统(以后可以考虑不断完善、定时更新):
 +
** 1. <font color="red">网页正文提取模块</font>(同作业4的实战部分一致)
 +
** 2. 处理网页正文的<font color="red">分句、分词模块</font>(可以用作业3的最大匹配分词,也可以用第三方的分词器,如jieba)
 +
** 3. <font color="red">倒排索引模块</font>:基于处理好的网页正文,建立倒排索引文件(同作业5一致)
 +
** 4. <font color="red">网页排序模块</font>:实现网页相关性排序(同作业7一致)
 +
** 5. <font color="red">查询模块</font>:提供查询接口,用户输入查询词后显示网页名(暂定为网页的title),和包含查询词的句子,查询词进行highlight处理(如#查询词#)。查询接口可以用命令行实现,提供前端UI界面(Web或Application都可以)会获得加分。
 +
 
 +
注意:把网页源文件(html文件)保存好,避免重复爬。例如优化了网页正文提取模块、或突然想用一个更好的分词器
 +
 
 +
* 作业提交说明:
 +
** 源代码:任务一和任务二的所有代码都要提交,每个模块(共6个,在上方已用红色标出)在readme中指明在哪个python文件中实现的
 +
** 处理好的网页数据(可选):原始网页,提取出并分好句、分好词的网页正文,若网页数据特别大的话可以不要
 +
** 在实验报告中将三项统计信息放到表格中:网页(文档)数、句子数、单词数
 +
** 倒排索引文件(必备)
 +
** 说明文档:(每个模块的)实现的功能,如何使用,接口等,内容不限
 +
 
 +
== 作业9:深度学习方法&检索结果的评价 ==
 +
* 作业提交时间截止时间:第16 周下课之前提交
 +
* 要求
 +
** 账号环境,跑推理代码,重现完成部分实验。
 +
*** 具体要跑哪些实验,请看文档最后的表格:[https://resplendent-gumdrop-ad2cd4.netlify.app/contriever-ir-course-assignment/ 具体文档]
 +
** 自己实现评价指标,自己的评价指标的结果,和contriever 的结果一致。
 +
** VSM和 Contriever 的对比
 +
<nowiki> 针对自己实现的“苏大计算机官网搜索引擎”,去对比VSM和Contriever的效果。
 +
    自己设计10个难度不同的 query,然后 VSM 返回 50 个结果,把这 50 个结果随机打乱顺序(这一步很重要),然后人工做一个标注(给一个排序)【如果觉得 10 个 query 太多,5 个也行】
 +
    Contriever对 50 个结果重排序
 +
    比较两种方法的结果:NDCG@5      NDCG@10      NDCG@20等
 +
    如果有能力、有时间,可以分析下:什么样的query,VSM 做得好;什么样的 query,Contriever 做得好。 </nowiki>
 +
** 实验报告体现出自己做了什么、遇到的困难及如何解决。
 +
 
 +
* 参考资料
 +
** 上面的文档
 +
** 微信公众号”语析LAGroup“中 contriever 论文解读
 +
** contriever 原文
 +
 
 +
== 时间表 ==
 +
 
 +
 
 +
  <nowiki>
 +
3.5 第1周
 +
3.12 第2周
 +
 
 +
xxx
 +
3.25 第5周
 +
4.1 第6周
 +
4.29 第10周
 +
5.6 第11周
 +
5.27 第14周
 +
6.3 第15周
 +
6.17 第17周
 +
 
 +
1 08:00-08:45
 +
2 08:50-09:35
 +
3 09:55-10:40
 +
4 10:45-11:30
 +
5 11:35-12:20
 +
6 14:00-14:45
 +
7 14:50-15:35 【休息5分钟,+15分钟】
 +
8 15:55-16:40
 +
9 16:45-17:30 【17:15】 
 +
 
 +
 
 +
考虑来2-3 次考试。
 +
闭卷考试,比较正式的那种。在机房里就行。然后拍照留存?
  
 
2次考试的方案:
 
2次考试的方案:
 
 
倒排搞完 考一次
 
倒排搞完 考一次
 
最后一次  
 
最后一次  
第9行: 第307行:
  
 
3次考试的方案:
 
3次考试的方案:
 
 
最大匹配分词搞完,考一次
 
最大匹配分词搞完,考一次
 
布尔查询搞完 考一次
 
布尔查询搞完 考一次
 
最后一次  
 
最后一次  
 +
 +
上机课9 个作业,实验报告,主要是形式审查,占比比较低。要根据考试的成绩,然后加权得到每一次作业的成绩。
 +
最后,9 个作业再按照一定比例,得到实验成绩。
 +
 
</nowiki>
 
</nowiki>

2026年3月20日 (五) 08:28的最新版本


信息检索综合实践

李正华

  • 学生:计23计科1班
  • 助教:吕喆、梅睿桐
  • QQ群: xx
  • 时间:周四 6-9 节课 1-17 周
  • 地点:理工楼238

上课基本要求

  • 不能做的事情:打游戏、看课程无关视频、刷网页
  • 认真读作业要求,按时交作业。csteaching
  • 不能抄袭别人或网上的,自己做;不要把自己的作业给别人

课程建议

  • 每个作业,截止时间后,把成绩发给大家,并用ppt给大家讲一下批作业发现的问题,题目分析
  • 上课期间:请大家积极提问。遇到大家都无法理解的公共问题,我会补充讲解
  • 非上课时间提问
    • 建议同学们在群里提问(包括但不限于代码的bug、不理解算法、作业资源和提交等),由其他同学帮助解答;
    • 群里的提问如果其他同学也无法回答,可以私信助教(吕喆:周三晚上7点到9点,梅睿桐:周四晚上7点到9点);

计算成绩的规则和说明(待定)

  • 核心要求:掌握最基本的概念、方法、算法
  • 实验作业:70分
    • 一系列作业,每个作业 5-15分(形式检查为辅、平时考核为主)
      • 平时考核:考察课程相关的基础知识,看看作业是否是自己做的
    • 必须按照规定时间,按照规定格式要求,将实验报告+源代码,提交到网站(见下面)中
  • 平时成绩:30分
    • 不能迟到、早退,特殊情况必须请假,并带辅导员签字的假条;
    • 签到表:除了姓名,还要写一下进展

提交作业说明

  • 作业网址:本学期开始的实验布置、提交与批改等不再使用csteaching平台,统一改用工程认证管理系统。请各位老师通过工程认证管理系统(网址http://42.244.43.76:8000/)开展实验布置、批改等相关工作,并烦请同步通知班级学生在该系统完成实验提交。
  • 作业迟交了则最终成绩会按一定比例缩减
  • 以.zip压缩包形式提交,需包含以下内容
    • 源代码:代码不要都团在一起,请用空行对代码进行分隔,并简单注释代码块的功能
    • readme.txt文件:说明如何运行你的程序,需要什么环境,如windows或linux,python版本如python3.5
    • 实验报告(pdf文件,请把word转为pdf
      • 请按照实验模版文件:ir-2022-spring-report.doc,认真填写个人信息、实验题目、实验内容等
      • 不要大段粘贴代码,最多可以粘贴核心的一小段代码,粘贴大段代码会扣分
      • 写清楚自己的解决思路,尤其是遇到的难点和如何解决
      • 建议可以画流程图或者写伪代码。
      • 解决思路的流程图中是以文字为主还是以代码为主?报告中不要直接放代码。文字为主,不在于写得长,而在于写清楚,表明你确实做了、想了。
      • 问:流程图可以改成自然语言描述或者是伪代码吗?答:流程图也可以画的很high-level的。大家自由发挥。也可以画到纸上然后拍照截图。模块化思维 大问题分解小问题 。
      • 将程序运行结果截图,没有运行结果会扣分,中间的输出结果/文件可以截图一部分
  • 提交前自我检查
    • 是否有包含readme.txt文件解释如何编译执行你的程序。 如没有该文件,将减分。
    • 是否认真完成实验报告
    • 是否可以按照readme.txt正确编译和运行程序
    • 是否包含别人的代码,抄袭和被抄袭的都是0分
    • 期末可能会用软件做自动抄袭检查
    • 等这学期最后几周,我们可能统一对所有的作业做自动查重,到时候也会查出一些问题。 请大家一定要自己做,编程能力差一点,就做得简单一点,能力强,就做得好一点。但是一定要自己做。
  • 提交作业命名规则
    • 压缩包(姓名学号.zip)
      • 实验报告(姓名学号.pdf)

实验报告word模板

具体内容(含作业:平时:30 分;实验:70 分)

作业 成绩比例 评分要点
分字 5% 按字节读取并判断高位
单词计数 5%
最大匹配分词 10% 算法和评价正确实现
网页正文抽取 10% 按要求完成两个任务
倒排索引 15% 高效创建倒排文件
布尔查询 10% inter和union的复杂度为O(n),复杂查询用堆栈判断优先级
网页相关性排序 15% 基于向量空间模型VSM、tf-idf权重
爬虫和某机构主页检索系统 15% 实现爬虫,系统架构设计良好,说明文档详细,UI完整
基于深度学习的检索系统 15% Contriever:重现部分实验结果;自己实现评价指标;在上一个作业中的爬虫和检索系统的基础上,自己设计、标注 10 个 query,对比向量空间模型VSM 和Contriever 的效果,给出评价结果。建议:VSM 给 100 个结果,然后 Contriever 重排序,然后人工标注,具体如何标注更合理,自己考虑好。

信息检索课程介绍

  • 和2022年课程的区别:增加了基于深度学习的检索的内容,删除词性标注相关内容

信息检索系统介绍

具体作业

作业1:分字(C++语言)

  • 2022春视频和图片:
  • UTF-8数据:文件:Sentence.txt
  • UFT-8编码规则:【2003 年发布的RFC 3629标准中,已经废除了 5-6 个字节,所以只用考虑 1-4 个字节的情况。感谢曹诗伟同学指出错误。】
1字节 0xxxxxxx
2字节 110xxxxx 10xxxxxx
3字节 1110xxxx 10xxxxxx 10xxxxxx
4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
5字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
6字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 

作业2:单词计数

作业3:最大匹配分词

  • 数据下载:
    • 字典:文件:Dict.txt
    • 待分词:文件:Sentence.txt
    • 正确答案(人工标注的,你的模型的预测结果要和这个文件进行对比,从而得到P/R/F值):文件:Answer.txt
    • 正向最大匹配分词模型的预测结果(如果你的程序写对了,那么应该和这个结果一模一样):文件:Out.txt
*正确实验结果
**正确识别的词数:20263
**识别出的总体个数:20397
**测试集中的总体个数:20454
**正确率:0.99343
**召回率:0.99066
**F值:0.99204 

作业4:网页正文抽取

作业5:倒排索引

作业6:布尔查询

  • 作业提交时间截止时间:第 10 周下课前提交
  • 2022春视频和图片:
  • 作业提交说明:
    • 附件中给出本次作业使用的倒排索引文件(可以在作业5的基础上进行优化),不需要提供构建倒排索引的代码,但在实验报告中给出倒排索引文件的说明,参考侯皓文同学
    • 交集、并集操作用inter()、union()这两个函数单独封装
    • 对4个语句 'A', 'B', 'A AND B', 'A OR B' (A、B为自定义的查询词) 分别进行一次查询,每次的查询结果单独保存到一个txt文件中,以查询语句作为文件名(如 'A AND B.txt'`)
    • 结果展示部分,文件按名字字母序排序:指字符序(用内置的sort即可),先用pinyin包转成拼音再排序也可以,不要自行改变文件名(如 阿大.txt -> 34.txt)
    • 实现更复杂的查询,如:'A AND B OR C' 可以加分
    • 查询词的加重(用#标记)不做强制要求,但做了加分

作业7:基于向量空间模型(VSM)和tf-idf权重的网页相关性排序

  • 作业提交时间截止时间:第 12 周之前提交
  • 作业要求:
    • 如果无法理解向量空间模型,可以选择做tf-idf作业,但最多只给50分
    • 实现基于向量空间模型的网页相关性排序
    • 给定一个查询Q:可以是手动用空格分好词的"李正华 招收 学生";也可以是未分词的"李正华招收学生",之后用最大匹配分词分好词 -> "李正华 招收 学生"
    • 注释:一个给定分词的查询Q实际上等价于布尔查询OR:"李正华 招收 学生" <=> "李正华 OR 招收 OR 学生"
  • 作业提交说明:
    • 附件中给出本任务所使用的倒排索引文件
    • 在实验报告中说明对于余弦相似度计算中的:di[k]、q[k]、|di|、|q|是如何处理或存储的
    • 附件中给出一个查询Q的结果,保存为文本文件"Q.txt"中,格式为:
 文档名1(余弦相似度Sim) # Sim值可不除以|q|的值,一个例子: 阿鲁巴岛.txt(0.64)
 句子1
 句子2
 ...
 文档名2(余弦相似度Sim)
 句子1
 句子2
 ...
 ......

作业8:爬虫和某机构主页检索系统(综合项目)

  • 作业提交时间截止时间:第14 周下课之前提交
  • 任务一:用爬虫模块尽量完整地爬下来一个机构对应的所有静态网页(html或htm后缀),保存到磁盘中:
    • 苏大、苏大计算机学院(规模小一点)都可以
    • orphan网页不用考虑
  • 任务二:基于爬取的网页,做一个完整的检索系统(以后可以考虑不断完善、定时更新):
    • 1. 网页正文提取模块(同作业4的实战部分一致)
    • 2. 处理网页正文的分句、分词模块(可以用作业3的最大匹配分词,也可以用第三方的分词器,如jieba)
    • 3. 倒排索引模块:基于处理好的网页正文,建立倒排索引文件(同作业5一致)
    • 4. 网页排序模块:实现网页相关性排序(同作业7一致)
    • 5. 查询模块:提供查询接口,用户输入查询词后显示网页名(暂定为网页的title),和包含查询词的句子,查询词进行highlight处理(如#查询词#)。查询接口可以用命令行实现,提供前端UI界面(Web或Application都可以)会获得加分。

注意:把网页源文件(html文件)保存好,避免重复爬。例如优化了网页正文提取模块、或突然想用一个更好的分词器

  • 作业提交说明:
    • 源代码:任务一和任务二的所有代码都要提交,每个模块(共6个,在上方已用红色标出)在readme中指明在哪个python文件中实现的
    • 处理好的网页数据(可选):原始网页,提取出并分好句、分好词的网页正文,若网页数据特别大的话可以不要
    • 在实验报告中将三项统计信息放到表格中:网页(文档)数、句子数、单词数
    • 倒排索引文件(必备)
    • 说明文档:(每个模块的)实现的功能,如何使用,接口等,内容不限

作业9:深度学习方法&检索结果的评价

  • 作业提交时间截止时间:第16 周下课之前提交
  • 要求
    • 账号环境,跑推理代码,重现完成部分实验。
      • 具体要跑哪些实验,请看文档最后的表格:具体文档
    • 自己实现评价指标,自己的评价指标的结果,和contriever 的结果一致。
    • VSM和 Contriever 的对比
 针对自己实现的“苏大计算机官网搜索引擎”,去对比VSM和Contriever的效果。
     自己设计10个难度不同的 query,然后 VSM 返回 50 个结果,把这 50 个结果随机打乱顺序(这一步很重要),然后人工做一个标注(给一个排序)【如果觉得 10 个 query 太多,5 个也行】
     Contriever对 50 个结果重排序
     比较两种方法的结果:NDCG@5      NDCG@10       NDCG@20等
     如果有能力、有时间,可以分析下:什么样的query,VSM 做得好;什么样的 query,Contriever 做得好。 
    • 实验报告体现出自己做了什么、遇到的困难及如何解决。
  • 参考资料
    • 上面的文档
    • 微信公众号”语析LAGroup“中 contriever 论文解读
    • contriever 原文

时间表

3.5 第1周
3.12 第2周

xxx
3.25 第5周
4.1 第6周
4.29 第10周
5.6 第11周
5.27 第14周
6.3 第15周
6.17 第17周

1	08:00-08:45
2	08:50-09:35
3	09:55-10:40
4	10:45-11:30
5	11:35-12:20
6	14:00-14:45
7	14:50-15:35 【休息5分钟,+15分钟】
8	15:55-16:40 
9	16:45-17:30 【17:15】   


考虑来2-3 次考试。
闭卷考试,比较正式的那种。在机房里就行。然后拍照留存?

2次考试的方案:
倒排搞完 考一次
最后一次 


3次考试的方案:
最大匹配分词搞完,考一次
布尔查询搞完 考一次
最后一次 

上机课9 个作业,实验报告,主要是形式审查,占比比较低。要根据考试的成绩,然后加权得到每一次作业的成绩。
最后,9 个作业再按照一定比例,得到实验成绩。