网络数据挖掘之倒排索引

课程名称:网络数据挖掘

实验课时:3

试验项目:倒排索引

试验时间: 2016/3/14

实验目的:使用任意方式,建立一组指定文件的倒排索引。

试验环境windows 10 + python 2.7

实验内容

  • 算法程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import string
import glob
import os
#变量
i=0
#文件编号
buf=""
#文件内容
s=os.getcwd()
#文件目录
sub_list=[]
#所有单词,去重
word=[]
#词表
result={}
#输出结果
txt_filenames=glob.glob(s+'/*.txt')
#print txt_filenames
for filename in txt_filenames:
txt_file=open(filename,'r')
buf=buf+txt_file.read()+"\n"
txt_file.close()
#读取目录下所有txt文件内容到buf,并以\n分隔不同文件
buf = buf.translate(None,string.punctuation)
#去除文件内容中的标点符号
print "文件索引写入到file_index.txt文件"
file=open('file_index.txt','w')
for filename in txt_filenames:
print >> file,i,filename
i=i+1
print "写入完成"
#print buf
sp_data=buf.split()
#建立词表
set_data=set(sp_data)
#去重
word=list(set_data)
#转换为list,用来索引
src_list=buf.split("\n")
#分割成单个文件
for w in range(0,len(word)):
index = []
#记录文件号以及单词在文件中出现的位置:[(文件号,位置),(文件号,位置)]
for i in range(0,len(src_list)):
#遍历所有文件
sub_list=src_list[i].split()
for j in range(0,len(sub_list)):
#遍历文件中的所有单词
if sub_list[j]==word[w]:
index.append((i,j))
#print index
result[word[w]]=index
print "单词索引写入到word_index.txt文件"
file=open('word_index.txt','w')
for k in result.keys():
#print str(k)单词
#print(result[k])单词所在的文件号以及在该文件中出现的位置
file.writelines(str(k)+str(result[k])+"\n")
print "写入完成"
  • 结果

在给定的一组文件所在目录下运行上述程序,生成文件索引 file_index.txt文件和单词索引 word_index.txt 文件。

  1. file_index.txt

  2. word_index.txt: