COMS3040 信息检索综合实践实验2023-05-31 实验8 综合实践_2030416018高歌-实验8-实验报告.docVIP

COMS3040 信息检索综合实践实验2023-05-31 实验8 综合实践_2030416018高歌-实验8-实验报告.doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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

文档评论(0)

zsw19930402 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档