-
Notifications
You must be signed in to change notification settings - Fork 0
/
odev4.py
74 lines (55 loc) · 2.47 KB
/
odev4.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
import sqlite3
def temizle(metin):
"""Metni temizleme işlemi"""
temiz_metin = metin.lower() # Metni küçük harflere dönüştür
temiz_metin = ''.join(char for char in temiz_metin if char.isalnum() or char.isspace()) # Harf veya boşluk dışındaki karakterleri kaldır
return temiz_metin
def kelime_sayisi_ve_sikligi(metin):
"""Metindeki kelimelerin sayısını ve sıklıklarını hesaplama"""
kelimeler = metin.split() # Metni kelimelere ayır
kelime_siklikleri = {}
for kelime in kelimeler:
kelime_siklikleri[kelime] = kelime_siklikleri.get(kelime, 0) + 1 # Kelimenin sıklığını arttır
return kelime_siklikleri
def benzerlik_skoru(metin1, metin2):
"""İki metin arasındaki benzerlik skorunu hesaplama"""
temiz_metin1 = temizle(metin1)
temiz_metin2 = temizle(metin2)
kelime_siklikleri1 = kelime_sayisi_ve_sikligi(temiz_metin1)
kelime_siklikleri2 = kelime_sayisi_ve_sikligi(temiz_metin2)
ortak_kelimeler = set(kelime_siklikleri1.keys()) & set(kelime_siklikleri2.keys())
toplam_siklik_farki = 0
for kelime in ortak_kelimeler:
toplam_siklik_farki += abs(kelime_siklikleri1[kelime] - kelime_siklikleri2[kelime])
benzerlik_skoru = 1 - (toplam_siklik_farki / (len(temiz_metin1.split()) + len(temiz_metin2.split())))
return benzerlik_skoru
# SQLite veritabanı bağlantısını oluştur
conn = sqlite3.connect('metinler.db')
c = conn.cursor()
# veritabanında metinler tablosunu oluştur
c.execute('''CREATE TABLE IF NOT EXISTS metinler
(id INTEGER PRIMARY KEY, metin TEXT)''')
# kullanıcıdan metinleri alıp veritabanına ekle
metin1 = input("İlk metni girin: ")
metin2 = input("İkinci metni girin: ")
c.execute("INSERT INTO metinler (metin) VALUES (?)", (metin1,))
c.execute("INSERT INTO metinler (metin) VALUES (?)", (metin2,))
conn.commit()
# veritabanındaki metinleri al
c.execute("SELECT * FROM metinler")
rows = c.fetchall()
# Benzerlik skorunu hesapla
skor = benzerlik_skoru(rows[0][1], rows[1][1])
# benzerlik durumunu belirle
if skor > 0.5:
benzerlik_durumu = "Metinler birbirine benziyor."
else:
benzerlik_durumu = "Metinler birbirine benzemiyor."
# benzerlik skorunu ekrana yazdır
print("Metinler arasındaki benzerlik skoru:", skor)
print(benzerlik_durumu)
# benzerlik skorunu dosyaya yaz
with open('benzerlik_durumu.txt', 'w') as dosya:
dosya.write(f"Metinler arasındaki benzerlik skoru: {skor}\n")
dosya.write(benzerlik_durumu)
conn.close()