-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLabo5.py
43 lines (41 loc) · 2.3 KB
/
Labo5.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
# print("Справка: Сходство Жаккара - показатель сходства между двумя наборами данных
# = (количество наблюдений в обоих наборах) / (число в любом наборе)\n"
# " Коэффициент Танимото = Сходство Жаккара или K = c / ((a+b-c)), где\n"
# " a-количество символов в 1й строке,\n"
# " b-количество символов во 2й строке,\n"
# " c-количество одинаковых символов в строках\n"
# " Расстояние Жаккара - показатель несходства между двумя наборами данных\n"
# " = 1 – Сходство Жаккара\n")
def tanimoto(s1, s2) -> str:
# def tanimoto(s1: str, s2: str) -> float:
c = 0
s1 = set(s1)
s2 = set(s2)
a = len(s1)
b = len(s2)
for ch in s1:
if ch in s2:
c+=1
# return 1 - c / (a + b - c)
rez = (c/(a+b-c)) * 100
return str(rez) + "%"
if __name__ == "__main__":
word_1 = 'компьютер'
word_2 = 'компьютеризация'
list_1 = [0, 1, 2, 5, 6, 8, 9]
list_2 = [0, 2, 3, 4, 5, 7, 9]
list_3 = [0, 1, 2, 3, 4, 5]
list_4 = [6, 7, 8, 9, 10]
list_5 = ['cat', 'dog', 'hippo', 'monkey']
list_6 = ['monkey', 'rhino', 'ostrich', 'salmon']
list_7 = {(1, 2, 3), 4, 'cat'}
list_8 = {(1, 2, 4), 4, 'cat'}
list_9 = {"Lena", 30, 165, "Ленина, 1, 1"}
list_10 = {"Helena", 42, 167, "Мильчакова, 17, 95"}
print(f'Коэффициент Танимото между наборами данных \'{word_1}\' и \'{word_2}\' равен {tanimoto(word_1, word_2)}')
print(f'Коэффициент Танимото между наборами данных \'{list_1}\' и \'{list_2}\' равен {tanimoto(list_1, list_2)}')
print(f'Коэффициент Танимото между наборами данных \'{list_3}\' и \'{list_4}\' равен {tanimoto(list_3, list_4)}')
print(f'Коэффициент Танимото между наборами данных \'{list_5}\' и \'{list_6}\' равен {tanimoto(list_5, list_6)}')
print(f'Коэффициент Танимото между наборами данных \'{list_7}\' и \'{list_8}\' равен {tanimoto(list_7, list_8)}')
print(f'Коэффициент Танимото между наборами данных \'{list_9}\' и \'{list_10}\' равен {tanimoto(list_9, list_10)}')
# В лабе 6 метод tanimoto использовать нельзя, т.к. метод воспринимает строку в списке/словаре как один элемент