-
Notifications
You must be signed in to change notification settings - Fork 0
/
avaliacao.py
145 lines (123 loc) · 4.4 KB
/
avaliacao.py
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
import matplotlib.pyplot as plt
from indexer import read_docs,tratar_consulta,isEmpty
from ind_inveted import Index_inverted
def cobertura_precisao():
ind = Index_inverted()
ind.sref('/home/marcus/Dropbox/Semestre 2018.1/Recuperação da informação/Indice_invertido/avaliacao/arquivos/')
xs = list()
ys = list()
hs = list()
gs = list()
ts = list()
qs = list()
m_precision = 0
qtd = 0
for query in read_docs('/home/marcus/Dropbox/Semestre 2018.1/Recuperação da informação/Indice_invertido/avaliacao/consultas_cfc/'):
actualQuery, realAmount, realResult = tratar_consulta(query)
resultado = ind.busca(actualQuery)
precision, lastIndex, xs, ys, fMeasure = tratar_documentos(resultado, set(realResult))
m_precision += precision
#plotar_grafico(xs, ys)
resultado = resultado[:lastIndex]
print('\nBusca: '+actualQuery)
print('qtd_origin: '+str(realAmount))
print('qtd_return: '+str(len(resultado)))
print('F-Measure: '+str(fMeasure))
print('Precisao Media: '+str(precision))
hs.append(qtd)
gs.append(fMeasure)
ts.append(qtd)
qs.append(precision)
qtd += 1
print('media_precisao_media = ',m_precision/qtd)
plotar_f(hs,gs)
plotar_p(ts,qs)
def stemming_test():
source_folder = '/home/marcus/Dropbox/Semestre 2018.1/Recuperação da informação/Indice_invertido/avaliacao/nosafe/'
ind = Index_inverted()
ind.sref('/home/marcus/Dropbox/Semestre 2018.1/Recuperação da informação/Indice_invertido/avaliacao/arquivos/')
ind1 = Index_inverted()
ind1.sref1('/home/marcus/Dropbox/Semestre 2018.1/Recuperação da informação/Indice_invertido/avaliacao/arquivos/')
xs = list()
ys = list()
ts = list()
qs = list()
qtd = 0
for query in read_docs(source_folder):
nekis = None
actualQuery, nekis, realResult = tratar_consulta(query)
resultado = ind.busca(actualQuery)
prec1, nekis, xs, ys, nekis = tratar_documentos(resultado, realResult[:])
resultado1 = ind1.busca1(actualQuery)
prec2, nekis, zs, ps, nekis = tratar_documentos(resultado1, realResult[:])
qtd+=1
plotar_grafico_stem(xs,ys,zs,ps)
nekis = 'perdeu perdeu passa o lapis mlk !!!'
def interpola(x):
result = x
for i in range(0,len(x)):
for j in range(i,len(x)):
if x[i] < x[j]:
result[i] = x[j]
return result
def tratar_documentos(resultado, pos_rec):
precision = 0
pos_size = len(pos_rec)
r_precisao = 0
r_cob = 0
xs = list()
ys = list()
for index, result in enumerate(resultado):
if result in pos_rec:
pos_rec.remove(result)
index += 1
precision += 1
xs.append(precision/pos_size)
ys.append(precision/index)
if isEmpty(pos_rec): break
for x in xs:
r_precisao += x
for y in ys:
r_cob += y
r_precisao = r_precisao/len(xs)
r_cob = r_cob/len(ys)
if r_precisao != 0 and r_cob != 0:
f_measure = 2/((1/r_precisao) + (1/r_cob))
return r_precisao, index, xs, ys, f_measure
def plotar_grafico(x, y):
plt.plot(x, y, linestyle='-', marker='o', color='green')
plt.title('Cobertura/Precisao')
plt.xlabel('cobertura')
plt.ylabel('precisão')
plt.show()
def plotar_grafico_stem_p(x, y,z,k):
plt.plot(x, y, linestyle='-', marker='', color='green',label='Stem')
plt.plot(z, k, linestyle='-', marker='', color='red',label='noStem')
plt.title('Stem/notStem')
plt.xlabel('Consultas')
plt.ylabel('Precisão')
plt.legend(loc='right')
plt.show()
def plotar_grafico_stem(x, y,z,k):
plt.plot(x, y, linestyle='-', marker='', color='green',label='Stem')
plt.plot(z, k, linestyle='-', marker='', color='red',label='noStem')
plt.title('Stem/notStem')
plt.xlabel('cobertura')
plt.ylabel('precisão')
plt.legend(loc='right')
plt.show()
def plotar_f(x,y):
plt.plot(x, y, linestyle='-', marker='o', color='green')
plt.title('Medida F')
plt.xlabel('Consultas')
plt.ylabel('F-measure')
plt.show()
def plotar_p(x,y):
plt.plot(x, y, linestyle='-', marker='o', color='green')
plt.title('Media Precisao')
plt.xlabel('Consultas')
plt.ylabel('Precisao')
plt.show()
if __name__== '__main__':
cobertura_precisao()
#stemming_test()