数据结构大作业之英语例句搜索系统

第一篇博客记录我的大作业,第一个完整的项目还是非常有纪念意义的。
做这个系统需要部分信息检索的知识,这里推荐书《信息检索导论》,里面介绍了非常多经典算法,我只是用C语言代码实现了里面最简单的例子。实现了倒排索引,布尔查询和词典扩展功能。
本项目用到了数据结构中的树,链表,栈。一共五个页面,千余行代码。架构是参考了GitHub上一个大佬的C++搜索项目,不过我暂时也找不到链接了。

系统概述

例句搜索系统

文本预处理

  • 寻找英语文章:可以寻找英语课本,新闻,小说等。我使用的是一本英语小说。
  • 处理语料:分句并删除标点符号和记号,删除停止词,停止词是指“the,a,or”等使用频率非常高的词。词条归一化,将看起来不完全一致的多个词条归纳为一个等价类。比如把read和reading都映射到read上,在搜索reading的时候就可以搜到read相关的语句了。

构建倒排索引

  • 索引粒度:我是将一个句子作为一个微型文档来建立索引。
  • 词典采用二叉搜索树结构,倒排索引表采用单链表结构
    词典
    倒排索引表

文本查询

词典查询采用二叉查找算法,布尔查询采用栈算法

评价模块

采用向量空间模型方法来计算查询词项在所有出现过的文档中的相关性。按照得分进行排序,选出得分最高的十个句子呈现给用户。

具体实现架构

项目是用C语言实现,开发工具是VS2019。项目结构如下图:
在这里插入图片描述

结构体定义和算法设计如下:

使用的数据结构图示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

代码链接在评论区里补充。

来自程序媛的交友

想和我交流的可以发邮件给我或者加QQ:740175476@qq.com
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值