Ir-2022-spring

来自SUDA-HLT
跳到导航 跳到搜索

信息检索课程设计(Comprehensive Practice on Information Retrieval)Course Resources

Teacher: 李正华

Teach Assistant: 侯洋...

课程交流学习群(qq) 群 号: 见学院通知

2022春季学期1-17周 周一5-8节 理工楼315(21级计科图领班,21级计算机科技)


课程建议

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

计算成绩的规则和说明

  • 实验作业:70-80分
    • 一系列作业,每个作业10-20分
    • 必须按照规定时间将实验报告+源代码,提交到csteaching
  • 期末面对面小测验:10分(待定)
    • 考察课程相关的基础知识,看看作业是否是自己做的
  • 平时成绩:10-20分
    • 不能迟到、早退,特殊情况必须请假,并带辅导员签字的假条;
    • 点名时,如果发现名单上没有你的名字,及时提出
  • 按照以前同学查成绩的惯例:如果对成绩不认同,查了之后,发现成绩没问题,在原有成绩上再减分。

提交作业说明

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

实验报告word模板

具体课程(含作业)

  • 作业提交时间
    • 作业2(1周):2022年3月13日22:00前提交
    • 作业3(1周):2022年3月20日22:00前提交
    • 作业4(2周):2022年4月3日22:00前提交
    • 作业5(1周):2022年4月10日22:00前提交
    • 作业6(2周):2022年4月27日22:00前提交
    • 作业1(1周):2022年5月1日22:00前提交
    • 作业7(2周):2022年5月18日22:00前提交
    • 作业8(2周):2022年6月12日22:00前提交
    • 作业9(2周):2022年6月12日22:00前提交
作业 成绩比例 评分要点
分字 5% 按字节读取并判断高位
单词计数 5%
最大匹配分词 10% 算法和评价正确实现
网页正文抽取 10% 按要求完成两个任务
倒排索引 10% 高效创建倒排文件
布尔查询 10% inter和union的复杂度为O(n),复杂查询用堆栈判断优先级
网页相关性排序 15% TBD
爬虫和某机构主页检索系统 25% TBD
词义标注/词性标注 10% TBD

信息检索课程介绍

信息检索系统介绍

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

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:布尔查询

  • 作业提交时间截止时间:4.24号22:00之前提交
  • 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:基于向量空间模型和tf-idf权重的网页相关性排序

  • 作业提交时间截止时间:2022年5月15日22:00之前提交
  • 作业要求:
    • 如果无法理解向量空间模型,可以选择做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:爬虫和某机构主页检索系统(综合项目)

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

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

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

作业9A:词义标注(这个作业会插入到作业列表中,在我们的系统上做,自动会评分)

  • 作业提交时间截止时间: 2022年6月12日22:00
  • Questions & Answers
    • Q: 之前课上老师好像提到说现在一次标注相同的词语会比较多,但是目前做到的好像六七个就换一次词语了,请问这个后面会做调整吗?
    • A: 这次对任务解锁机制进行了一部分调整,第一次申请分配词语时,会解锁该词语30%的任务,当这30%任务标注完成并且审核完成后,会解锁剩下的70%任务。
    • Q: 请问目前遇到了很多没有例句的情况,于是在做了这道题后看到下一道题的题目便想对上一道题的结果进行更改,这样的操作是不可支持的吗?
    • A: 目前不支持对已提交答案的修改
    • Q: 想请问一下助教 最后确定标注总数具体是多少300-500的区间差距还挺大的
    • A: 大于等于500,且完成一个词语的例句
    • Q: 请问那个标注的正确率到底标不标准,我标了挺多的正确率一直是0%。
    • A: 因为是双人标注的任务,当这句的任务有另一个人标注完成时,这个任务才算完成,然后才可以计算正确率。

作业9B:有监督HMM词性标注

数据集 开发 测试
小数据集 75% -
大数据集 88% 88%

下面的不用管了

== 作业7:网页排序 ==

* 课件 
** 网页排序原理课件  [http://hlt.suda.edu.cn/yingli/teach/ir-2019-spring/web-page-rank.ppt PPT下载]  
** 网页排序实验作业课件  [http://hlt.suda.edu.cn/yingli/teach/ir-2019-spring/web-page-rank-task.ppt PPT下载]  
* 数据
** 数据下载   [http://hlt.suda.edu.cn/yingli/teach/ir-2019-spring/files-web-page.tar.gz data下载]
* 作业提交时间截止时间:2019.5.14上机课之前


== 作业9:综合练习:苏大主页搜索、或者计算机学院主页搜索 ==
* 两个作业任选一个,前一个作业更难,分数会相对高一些
* 把之前所有的内容串起来
* 桌面搜索
** 对整个操作系统所有的文件名建立倒排
** 用户输入一些关键字,可以返回相关(根据tf-idf排序)的文件
** 不要求分析文件内容,只看文件名即可。
* 苏大网页搜索
** 需要爬取所有的苏大网页,从苏大主页开始,根据锚文本和链接递归爬取
** 正文抽取
** 建立倒排
** 支持查询和排序


== 作业8:有监督隐马尔可夫模型HMM:用于词性标注 ==
* 上课时间:2019.5.14
* 极大似然估计推导
** 极大似然估计的由来,公式推导见 [http://hlt.suda.edu.cn/yingli/teach/ir-2019-spring/max-eq.pdf PDF下载] 
**  HMM模型中极大似然估计的由来,公式推导见 [http://hlt.suda.edu.cn/yingli/teach/ir-2019-spring/hmm-eq.pdf PDF下载] 
* 隐马尔科夫模型(HMM)  
** Collins教授的课件 [http://hlt.suda.edu.cn/yingli/teach/ir-2019-spring/collins-tagging.pdf PDF下载],介绍至三元HMM模型最大似然参数估计,未讲Viterbi解码。
** 李老师的课件 [http://hlt.suda.edu.cn/yingli/teach/ir-2019-spring/HMM-v2.pptx PPT下载],李老师新增一页PPT [http://hlt.suda.edu.cn/yingli/teach/ir-2019-spring/zhli-add.ppt PPT下载]
** Viterbi解码的一个动画例子[http://hlt.suda.edu.cn/yingli/teach/ir-2019-spring/hmm-zhli.pdf PDF下载]
* 数据
** 数据下载   [http://hlt.suda.edu.cn/yingli/teach/ir-2019-spring/data.tar.gz data下载]




== 作业 5:中文多粒度分词标注 ==
* 上课时间:2019.4.16
* 中文多粒度分词标注系统网址:http://101.132.166.249/anno-sys/index.php?action=index
* 多粒度分词标注规范  [http://hlt.suda.edu.cn/yingli/teach/ir-2019-spring/MWS_guideline.pdf PDF下载]  
* 多粒度分词介绍以及标注系统使用说明  [http://hlt.suda.edu.cn/yingli/teach/ir-2019-spring/MWS.pptx PPT下载]
* 作业完成时间:2019.4.26上午12:00以前。
*作业完成要求:完成110句的标注以及所有的学习任务。