-
Notifications
You must be signed in to change notification settings - Fork 2
/
KVKK_Model_Test.py
75 lines (64 loc) · 3.24 KB
/
KVKK_Model_Test.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
from sentence_transformers import SentenceTransformer, util
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
def sorulariDosyadanOkuveListeOlarakDondur():
gecici = []
for i in range(100):
gecici.append([])
df = pd.read_csv('KVKK_100_SORU_CEVAP.txt',sep="\t")
for i in range(100):
gecici[i].append(df.to_numpy()[i][1]) #Soru
gecici[i].append(df.to_numpy()[i][2]) #Cevabı
return(gecici)
testSorulari = ["Rızası Açık Nedir","Bizim rıza kimdir","Açık Rıza Nedir","Veri Sorumlusunun Meşru Menfaatini Tespit Etmek İçin Göz Önünde Bulundurulması Gereken Hususlar Nelerdir?","Kanun Kapsamındaki Kısmi İstisna Halleri Nelerdir"]
modelListesi = [\
"sentence-transformers/paraphrase-xlm-r-multilingual-v1",\
"sentence-transformers/paraphrase-MiniLM-L12-v2",\
"sentence-transformers/paraphrase-MiniLM-L3-v2",\
"sentence-transformers/clip-ViT-B-32-multilingual-v1",\
"sentence-transformers/distiluse-base-multilingual-cased-v2",\
"sentence-transformers/quora-distilbert-multilingual",\
"sentence-transformers/msmarco-distilbert-base-v4",\
"flax-sentence-embeddings/multi-qa_v1-distilbert-cls_dot",\
"flax-sentence-embeddings/all_datasets_v3_distilroberta-base",\
"flax-sentence-embeddings/multi-qa_v1-MiniLM-L6-mean_cos",\
"sentence-transformers/stsb-xlm-r-multilingual"]
for m in modelListesi:
model = SentenceTransformer(m)
encodedSoru = []
for soru in testSorulari:
encodedSoru.append(model.encode(soru))
benzerlikListesi = []
soruListesi = sorulariDosyadanOkuveListeOlarakDondur()
sayac=0
for soru in encodedSoru:
for i in range(100):
benzerlikListesi.append(util.cos_sim(soru,model.encode(soruListesi[i][0])))
sayac+=1
benzerlikListesi2 = []
for oge in benzerlikListesi:
benzerlikListesi2.append(float(oge))
del(benzerlikListesi)
grafik, eksen = plt.subplots(sayac)
grafik.suptitle("Modellerin Sorulara Göre Performansları")
renkKatari = "rgbmk"
for s in range(sayac):
bul = benzerlikListesi2.index(max(benzerlikListesi2[0+s*100:99+s*100]))
print("Model: ",m)
print("Test sorusu: ",testSorulari[s])
print("En yakın soru: ",soruListesi[bul%100][0])
print("En yakın sorunun benzerlik puanı: ",max(benzerlikListesi2[0+s*100:99+s*100]))
print("100 soru için standart sapma: ",np.std(benzerlikListesi2[0+s*100:99+s*100]))
print("100 soru için varyans: ",np.var(benzerlikListesi2[0+s*100:99+s*100]))
print("100 soru için en az benzerlik: ",np.min(benzerlikListesi2[0+s*100:99+s*100]))
print("100 soru için en çok benzerlik: ",np.max(benzerlikListesi2[0+s*100:99+s*100]))
eksen[s].hist(benzerlikListesi2[0+s*100:99+s*100], 100, color = renkKatari[s])
eksen[s].set_title(m+" - "+testSorulari[s])
eksen[s].label_outer()
print("\n")
# plt.legend(m)
# plt.gcf().set_dpi(300) Grafik çözünürlüğünü ayarlamak için kullanılabilir.
# dosyaIsmi = m.replace("/"," ") dosya isminde "/" olmasın
# plt.savefig(dosyaIsmi+".png") dosya olarak grafiğimizi kaydedebiliriz.
plt.show()