-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrecommendOnSimilarity.py
72 lines (61 loc) · 1.94 KB
/
recommendOnSimilarity.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
import csv
with open("users.txt") as users:
users = users.read().splitlines()
with open("values4.txt") as values:
values = values.read().splitlines()
with open("userRepoTypeInfo.txt") as userInfo:
userInfo = userInfo.read().splitlines()
repoInfo = []
with open('lang.csv', 'r') as file:
reader = csv.reader(file, delimiter='\t')
for row in reader:
repoInfo.append(row[0].split(','))
f = open("reposBasedOnSimilarity.txt", "a")
iter = 0
for i in range(len(values)):
values[i] = values[i].split()
user = 0
maxsim = []
for value in values:
f.write(users[user])
if(user+12 < len(values)):
maxsim = [[float(value[user+1]), user+1],
[float(user+2), user+2], [float(user+3), user+3]]
else:
maxsim = [[float(value[user-1]), user-1],
[float(user-2), user-2], [float(user-3), user-3]]
maxsim.sort(key=lambda x: x[0])
for i in range(len(value)):
if(users[user] == users[i]):
continue
if(float(value[i]) > maxsim[0][0]):
l = [float(value[i]), i]
maxsim.append(l)
maxsim.sort()
maxsim = maxsim[1:]
newUserInfo = (userInfo[user].split())[1:]
userTypes = [0]*400
for lang in newUserInfo:
i = 0
while(lang[i] != '-'):
i += 1
userTypes[int(lang[:i])] = int(lang[i+1:])
reposScore = {}
for i in range(3):
for repo in repoInfo:
if(repo[0] == users[maxsim[i][1]]):
if(len(repo) > 2):
reposScore[repo[0]+"/"+repo[1]] = 0
for types in repo[2:]:
reposScore[repo[0]+"/"+repo[1]] += userTypes[int(types)]
reposScore = sorted(reposScore.items(), key=lambda kv: (
kv[1], kv[0]), reverse=True)
j = 0
for i in reposScore:
f.write(" "+i[0])
j += 1
if(j == 10):
break
f.write("\n")
user += 1
print(user)