-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathweb_kelime_frekans.py
82 lines (68 loc) · 3.66 KB
/
web_kelime_frekans.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
76
77
78
79
80
81
82
import requests
from bs4 import BeautifulSoup
import operator
def sozlukolustur(tumkelimeler): #tüm kelimeleri bir sözlüğe atayıp kaç defa geçtiğini bulacağız.
kelimesayisi = {} #kelimesayisi diye sozluk oluşturduk.
for kelime in tumkelimeler:
if kelime in kelimesayisi:
kelimesayisi[kelime] += 1
else:
kelimesayisi[kelime] = 1
return kelimesayisi
#işlemler tamamladıktan sonra kelimelerdeki ifadeleri temizlemek için
def temizle(tumkelimeler):
sembolsuz = [] #temizlenen kelimeleri sembolsuz listesine ekleyeceğiz.
semboller = "!@$+#^\"\',.;:`”’“©£<>/()[]{}=*?\\_-|é" #ifadelerimiz bunlar. Yani bunlardan temizleyeceğiz kelimeleri.
for kelime in tumkelimeler: #tumkelimelerin içinde birer defa dönecek.
for sembol in semboller: #sonra sembollerin içinde birer defa dönecek.
if sembol in kelime: # eğer sembol kelimenin içinde varsa
kelime = kelime.replace(sembol, "") #kelimenin içindeki sembolü boş karakterle değiştirecek.
if (len(kelime) > 0): #kelime sadece temizlenecek ifadeden oluşuyosa almayacak. Çünkü onun uzunluğu "0" olacak
sembolsuz.append(kelime) #sembolsüz kelimeleri sembolsuz listesine ekleyecek
return sembolsuz # döndürdüğü bu listenin içindeki her bir kelimeyi tumkelimeler listesine for döngüsüyle ekleyeceğiz.
#URL'Yİ TANIMLAYALIM
url = (str(input("Lütfen site linkini giriniz:")))
#KELİME LİSTESİ OLUŞTURALIM. İLERDE KELİMELERİ APPEND İLE İÇİNE EKLEYECEĞİZ.
tumkelimeler = []
#REQUSETS MODÜLÜ İLE URL ADRESİNİN KAYNAK BİLGİLERİNİ ÇEKİYORUZ.
r = requests.get(url)
#SOUP İLE BUNLARI DAHA DÜZGÜN BİR HALE SOKUYORUZ. OKUNABİLİR OLMASI İÇİN
soup = BeautifulSoup(r.content, "html.parser")
#P ETİKETİ İLE BAŞLAYAN HER YERİ ALIP HER BİRİNE KELİME GURUBU DİYELİM
for kelimegrubu in soup.find_all("p"): #FIND_ALL FONKSİYONU O ETİKETLE BAŞLAYAN PROGRAMLARI BULACAK.
icerik = kelimegrubu.text #.TEXT DİYEREK SADECE TEXT OLAN KISIMLARI ALDIK. YOKSA HTML BİLGİLERİNİ DE ALIRDI.
kelimeler= icerik.lower().split() #SPLİT FONKSİYONU KELİMELE GRUPLARINI BOŞLUKLARA GÖRE AYIRIP LİSTEYE ATAR.
# DAHA SONRA SPLİT FONKSİYONUYLA LİSTELERE ATANAN KELİMELERİ ÖNCEDEN TANIMLADIĞIMIZ LİSTEYE ATIYORUZ.
for i in kelimeler: #TUM KELİMELERİ LİSTEYE TEKER TEKER EKLİYORUZ.
tumkelimeler.append(i)
tumkelimeler = temizle(tumkelimeler) #TEMİZLE FONKSİYONUNU TUMKELİMELER LİSTESİ ÜZERİNDE ÇALIŞTIRDIK VE YENİ TUM KELİMELER LİSTESİNİ OLUŞTURDUK.
kelimesayisi =sozlukolustur(tumkelimeler) #TUM KELİMELERİ KELİMESAYISI SÖZLÜĞÜNÜ ATTIM. ÇÜNKÜ KELİMENİN KAÇ DEFA GEÇTİĞİNİ SÖZLÜKLE BULABİLİRİZ.
for kelime in tumkelimeler: #TUM KELİMELERİ EKRANA YAZDIRIYORUZ.
print (kelime)
for anahtar,deger in sorted(kelimesayisi.items(), key=operator.itemgetter(1)):
print(anahtar,":",deger)
""" BURADAN SONRASINI DOSYALARA YAZDIRMAK İÇİN YAPTIM!!!
b = open("kelime_frekansı.txt", "w")
#DAHA SONRA KELİMELER DİYE BİR TEXT DOSYASI OLUŞTURUP KELİMELERİ ORAYA YAZALIM...
a = open("kelimeler.txt", "w")
for kelime in tumkelimeler:
a.write(kelime)
a.write("\n")
metin2 = open("kelimeler.txt", "r")
a = metin2.read()
frekans = dict()
for karakter in a:
if (karakter in frekans):
frekans[karakter] += 1
else:
frekans[karakter] = 1
for i, j in frekans.items():
print(i, ":", j)
sayi = len(frekans)
print("Toplam Harf sayısı: ", sayi)
sonuc = open("sonuc.txt","w")
sonuc.write("Toplam Harf Sayısı\n")
sonuc.write(str(sayi))
sonuc.write("\nToplam Kelime Sayısı\n")
sonuc.write(str(len(kelimesayisi)))
"""