-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreducer_1.py
More file actions
56 lines (42 loc) · 1.61 KB
/
reducer_1.py
File metadata and controls
56 lines (42 loc) · 1.61 KB
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
#!/usr/bin/python3
import sys
import math
cur_film = None
old_1, old_2 = None, None
up = 0
down_1 = 0
down_2 = 0
for line in sys.stdin:
if not line:
continue
a, b = line.strip().split('\t')
film1, film2 = a.split(';')
user_f_1, user_r_1, user_f_2 = b.split(';')
user_r_2 = user_r_1
try:
user_r_1, user_f_1, user_r_2, user_f_2 = float(user_r_1), float(user_f_1), float(user_r_2), float(user_f_2)
except ValueError:
continue
if cur_film is not None:
if film1 == old_1 and film2 == old_2:
up += (user_f_1 - user_r_1) * (user_f_2 - user_r_2)
down_1 += (user_f_1 - user_r_1) ** 2
down_2 += (user_f_2 - user_r_2) ** 2
else:
sim = up / (max(math.sqrt(down_1), 1e-8) * max(math.sqrt(down_2), 1e-8))
if sim > 0:
print(old_1 + '\t' + old_2 + '\t' + str(sim))
up = (user_f_1 - user_r_1) * (user_f_2 - user_r_2)
down_1 = (user_f_1 - user_r_1) ** 2
down_2 = (user_f_2 - user_r_2) ** 2
old_1, old_2 = film1, film2
else:
up += (user_f_1 - user_r_1) * (user_f_2 - user_r_2)
down_1 += (user_f_1 - user_r_1) ** 2
down_2 += (user_f_2 - user_r_2) ** 2
old_1, old_2 = film1, film2
cur_film = film1
if old_1 is not None and old_2 is not None:
sim = up / (max(math.sqrt(down_1), 1e-8) * max(math.sqrt(down_2), 1e-8))
if sim > 0:
print(old_1 + '\t' + old_2 + '\t' + str(sim))