- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
苏州大学实验报告
院、系
计算机科学与技术
年级专业
2020
软件工程
姓名
高歌
学号
2030416018
课程名称
信息检索综合实践
成绩
指导教师
贡正仙
同组实验者
无
实验日期
2023年6月14日
实验名称实验8信息检索综合实践
一.实验目的
综合本学期学到的有关信息检索的全部知识,实现从爬取网页、解析、索引到查询的综合实践任务。
二.实验内容
具体要求
1.将南京大学计算机科学技术学院NLP组所有老师的信息保存到硬盘地址:/homepage/people.html
可以用爬虫进行信息的原始收集,如果无法实现用爬虫,可以手工下载多个相关页面2.基于爬取的网页,做一个完整的检索系统
采用前面讲过的网页正文提取,数据预处理,建立倒排索引,建立TF/IDF文档向量
实现输入检索词(教师姓名/教学/论文/项目)后,能把教师相关的信息展现给查询者下载en.txt,
加分项
●细致的数据处理
●除了TF-IDF的其它信息检索技术(词向量:word2vecglovebert)
●对比,分析
●使用爬虫
●友好的用户界面●效率高
●
爬取基本方法和注意事项
●以主页作为起点,根据其中包含的链接,递归爬取,直到没有新的页面可以爬到
●要记录已经爬取的网页,避免重复爬取(死循环)
●为了避免爬不是目标对象的网页,可以检查网址,例如南大网页都包含
●为了避免给机构的服务器太大的压力,同学们可以考虑爬10个网页就停止;爬的时候,间隔合适的时间(随机数几秒)。
三.实验步骤和结果
注:代码使用TypeScript编写,运行时使用ts-node。使用Prettier与ESLint作为代码格式化工具,
代码风格遵从TypeScriptESLintRecommended标准。建立索引时使用了JS上的NLP库Cmpromise进
行英文词形还原;数据预处理时使用了LangChain.js调用了OpenAI提供的GPT-3.5API将中文翻译为英文。
(一)实验步骤
1.本实验逻辑稍有些复杂,这里对目录结构做一个简单解释:
src
√types
Tscommon.d.ts
utils
tsbitmap.ts
sdataframe.tssfile.ts
slog.ts
sseries.ts
iindexer.ts
slexical-vector.tssmain.ts
smodel.ts
sproxy-bootstrap.tssspider.ts
图1目录结构
其中,types/目录下包含了一些必要的类型定义,实际上仅包含了有关索引字典的类型定义;
utils/目录下包含了一些工具函数,bitmap.ts包含了与位图相关的函数,用来辅助集合操作如去重等,file.ts包含了一些与文件相关的工具函数,log.ts包含了一些与日志相关的工具函数,而
dataframe.ts包含了一个用于本次实验的DataFrame数据类型定义(类似于Python中Pandas的DataFrame),series.ts则供dataframe.ts使用,作为其内部数据的存储方式;
而indexer.ts包含了构建与读取索引文件所需的相关函数,lexical-vector.ts中包含本次实验中与计算词汇向量有关的几个函数,model.ts中包含了与调用OpenAIAPI并进行翻译的相关代码,
proxy-bootstrap.ts中包含了代理相关配置,spider.ts中包含了与爬虫相关的代码;main.ts则为主入口文件。
其中,utils/目录下的所有文件都与上次实验完全一致,而indexer.ts和lexical-vector.ts只做了一些微小的修改,会在之后说明。
接下来将一一解释剩余文件中的代码逻辑。
1.先解释一下indexer.ts中的小改动。在上次实验中,数据是已经分好词的,因此直接用空格分隔就可以了。但本次实验获得的是原始数据,因此需要处理分词。
不过,实际上在Compromise库中这非常简单,只需要以下改动:
Generatetheindexfromcorpus.“@paramcorpusThecorpus.
@returnsTheindexmap.
exportconstgenerateIndex=async(documents:string[],
{lemmatize:doesLemmatize=true]:GeneratelndexOptions=0,
):PromiseIndexMap={
co
您可能关注的文档
最近下载
- 苏教版小学英语3a-5a单词表(2015).doc VIP
- 贵州钢绳(集团)有限责任公司招聘笔试真题2021.docx VIP
- 2025年职业卫生评价考试真题二十 .pdf VIP
- 2025年贵州钢绳集团有限责任公司控股人员招聘笔试备考试题及答案解析.docx VIP
- 全血和各种血液成分的临床应用.ppt VIP
- 软件系统安全保障方案.docx VIP
- 2025年云南省中考地理试卷(含解析).pdf
- 四川省拟任县处级试题 四川省拟任县处级党政领导干部任职资格考试题.doc VIP
- CECS 349-2013 一体化给水处理装置应用技术规程.docx
- 茶皂素杀螺活性及对3种水生生物的安全性.docx
文档评论(0)