# 信息检索系统
利用倒排索引和向量空间模型实现的信息检索系统.
## 完成工作:
- 带位置信息的倒排索引
- 向量空间模型
- TOP K查询
- BOOL查询
- 短语查询
- 拼写矫正
- 同义词查询
- 拼写矫正(短语)
# 运行
环境要求:python3
在初次运行程序前请下载词干还原依赖的语料库
在`SearchSystem/main.py`中已经注释掉下载语料库的命令
```python
nltk.download("wordnet")
nltk.download("averaged_perceptron_tagger")
nltk.download("punkt")
nltk.download("maxnet_treebank_pos_tagger")
```
取消注释后运行一次即可,语料库下载完成即可正常运行
windows下如果嫌弃语料库下载比较慢,可以直接将该目录下的`nltk_data`文件夹替换掉user下的`AppData/Roaming/nltk_data`文件夹,根目录的`nltk_data`文件夹是已经下载好的语料库
语料库下载完成后请将相应的下载语注释掉。
在`SearchSystem`目录下运行命令:
```batch
python main.py
```
> 注意:运行前请不要修改工程文件的名字和相对位置
`SearchSystem`工程目录是pycharm的工程
# 实现功能
## 词干还原
利用python中自然语言处理的库:nltk对文章中的单词进行词干还原。
在词干还原的过程中会去除无用的标点符号。
## 索引构建
带位置信息的倒排索引:
例子:
```json
{
"word1":{
"1":[5,6,10],
"5":[10,20,30]
},
"word2":{
"2":[5,6,10],
"33":[15,28,30]
}
···
}
```
索引事先建立好储存在文件中,每次运行程序时将索引加载到内存中。
## 向量空间模型
通过查询向量计算出文档的wf-idf评分进行排序。
wf-idf计算方法:
1. 首先对query中出现的单词对应的文档列表取并集。
2. 随后对query中出现的单词对文档进行wf-idf计算并评分。
3. 得到所有文档对该查询的评分后再对所有文档进行排序。
wf-idf 和 tf-idf比较:
1. 通过log计算削弱词项频率对评分的影响。
2. 一篇文章中单词出现n次不代表其权重扩大n倍。
## TOP K 查询
首先通过向量空间模型得到所有文档的评分。
通过堆排序建好最小堆以后进行K次precDown操作。
堆最后的K个元素即为评分前K大的元素。
## 短语查询
利用带位置信息的倒排索引。
首先得到包含query中所有单词的文档列表的交集。
从这些文档集中根据位置索引查找是否有匹配的短语。
遍历第一个词项在文档中的位置,依次检测后面的词项位置中是否包含与其匹配的位置。
## 通配符查询
利用正则表达式找到所有匹配的词项,利用倒排索引检索出词项对应的文档。
支持通配符的短语查询:
首先将检索到的词项存在一个二维数组中,随后对出现的每个短语组合进行短语查询。
## 同义词查询
同样利用nltk语言处理库获取单个单词的同义词列表(有可能是短语)
随后对每个单词或者短语进行检索,获取文档集。
## BOOL查询
- 将查询表达式转为后序表达式:
如 A OR B AND C 转为
A B C AND OR
- 用一个栈来计算后序表达式
## 拼写矫正
![img1](img/img1.png)
c 是 编辑距离为1或者2或者0的词,并且词属于给定的词典.
P(c)是每个词在字典中出现的频率.
P(w)是每一种拼写错误可能出现的概率,这里认为是一个常数
根据贝叶斯理论
计算 P(c|w),即给定词w,纠正到每个c的概率,并且从中选出概率最高的词
这里还需要知道一个项 P(w|c|),即给定c,c就是输入者想要的单词的概率
由于没有错误模型数据,我们简单这么认为
P(W|C0) >> P(W|C1) >> P(W|C2)
C0/1/2 是编辑距离为0/1/2的词,即编辑距离小的有更高的优先级
最后,模型工作如下
1. 如果输入词在词典里找到了原词,这返回
2. 从编辑距离为1的词选出频率最高的,返回
3. 从编辑距离为2的词选出频率最高的返回。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
利用倒排索引和向量空间模型实现的信息检索系统。完成工作:带位置信息的倒排索引、向量空间模型、TOP K查询、BOOL查询、短语查询、拼写矫正、同义词查询、拼写矫正(短语)。
资源推荐
资源详情
资源评论
收起资源包目录
基于Python倒排索引和向量空间模型实现的信息检索系统【100012792】 (2000个子文件)
15875.html 14KB
15871.html 12KB
11224.html 9KB
6657.html 7KB
5214.html 6KB
5985.html 6KB
2521.html 6KB
7135.html 6KB
11083.html 6KB
1963.html 5KB
4944.html 5KB
5070.html 5KB
8746.html 5KB
10780.html 5KB
15549.html 5KB
15063.html 5KB
5258.html 5KB
3534.html 5KB
8943.html 5KB
19432.html 5KB
21508.html 5KB
9170.html 5KB
5318.html 5KB
10455.html 5KB
1312.html 5KB
15352.html 5KB
5376.html 5KB
17700.html 5KB
4067.html 5KB
16072.html 5KB
10344.html 5KB
10931.html 5KB
13261.html 5KB
11504.html 5KB
18086.html 5KB
11753.html 5KB
12136.html 5KB
17896.html 5KB
2618.html 5KB
15442.html 5KB
6346.html 5KB
10771.html 5KB
10689.html 5KB
12848.html 5KB
9022.html 5KB
15906.html 5KB
13462.html 5KB
14890.html 5KB
3762.html 5KB
13053.html 5KB
925.html 5KB
11768.html 5KB
8137.html 5KB
4049.html 5KB
748.html 5KB
4625.html 5KB
7545.html 5KB
14921.html 5KB
16926.html 5KB
5290.html 5KB
10268.html 5KB
6656.html 5KB
4290.html 5KB
3798.html 5KB
6996.html 5KB
311.html 5KB
13046.html 5KB
14826.html 5KB
13115.html 5KB
10306.html 5KB
20764.html 5KB
6400.html 5KB
16200.html 5KB
18849.html 5KB
8055.html 5KB
5473.html 5KB
1579.html 5KB
5561.html 5KB
14891.html 5KB
1836.html 5KB
9978.html 5KB
209.html 4KB
9470.html 4KB
3488.html 4KB
17966.html 4KB
16565.html 4KB
6357.html 4KB
20868.html 4KB
2228.html 4KB
3446.html 4KB
9975.html 4KB
12209.html 4KB
7088.html 4KB
10760.html 4KB
17915.html 4KB
11490.html 4KB
9848.html 4KB
11746.html 4KB
13949.html 4KB
9203.html 4KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
神仙别闹
- 粉丝: 2687
- 资源: 7658
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功