Python kelime bulma

Elimde bulunan bir txt dosyasında geçen en fazla kullanılan 10 kelimeyi Python kullanarak bulmam gerekiyor. Müsait olup zaman ayirirsaniz çok mutlu olurum.

paragraf = """Kendisinden söz etmeyi kötü görmek,
yasak etmek adet olmuştur;
çünkü kendinden söz etmek her zaman kendini övmek gibi görünür.
Kendini övmek ise herkesin zıddına gider;
ama kendinden söz etmeyi yasak etmek, çocuğun burnunu silecek yerde,
burnunu koparmak olur.
Bu tedbirde insan kardan çok zarar görür."""

sozluk = {}

kelimeler = set(paragraf.split())

for kelime in kelimeler:
    kelime = kelime.replace(",", "").replace(".", "").replace(";", "")
    sozluk.update({kelime: paragraf.count(kelime)})

print("Öncesi:", sozluk)

def bubblesort(sozluk):
    yerel_sozluk = {}
    j, k = 0, 0
    items = list(sozluk.items())
    for _ in range(len(sozluk)):
        for i in range(len(sozluk)):
            k = items[i][1]
            if k > j and i != 0:
                items[i - 1], items[i] = items[i], items[i - 1]
            j = k

    for key, item in items:
        yerel_sozluk.update({key: item})

    return yerel_sozluk

sozluk = bubblesort(sozluk)
print("Sonrası:", sozluk)

ilk_on = {key: sozluk[key] for key in list(sozluk.keys())[:10]}
print("İlk on:", ilk_on)
Öncesi: {'kardan': 1, 'görünür': 1, 'burnunu': 2, 'her': 2, 'ise': 1, 'olmuştur': 1, 'herkesin': 1, 'gibi': 1, 'kendini': 1, 'koparmak': 1, 'görmek': 1, 'söz': 3, 'yasak': 2, 'çünkü': 1, 'adet': 1, 'Kendini': 1, 'tedbirde': 1, 'zaman': 1, 'yerde': 1, 'etmeyi': 2, 'olur': 1, 'çok': 1, 'silecek': 1, 'zıddına': 1, 'etmek': 3, 'çocuğun': 1, 'zarar': 1, 'övmek': 2, 'ama': 2, 'Bu': 1, 'insan': 1, 'görür': 1, 'gider': 1, 'kendinden': 2, 'kötü': 1, 'Kendisinden': 1}
Sonrası: {'söz': 3, 'etmek': 3, 'burnunu': 2, 'her': 2, 'yasak': 2, 'etmeyi': 2, 'övmek': 2, 'ama': 2, 'kendinden': 2, 'kardan': 1, 'görünür': 1, 'ise': 1, 'olmuştur': 1, 'herkesin': 1, 'gibi': 1, 'kendini': 1, 'koparmak': 1, 'görmek': 1, 'çünkü': 1, 'adet': 1, 'Kendini': 1, 'tedbirde': 1, 'zaman': 1, 'yerde': 1, 'olur': 1, 'çok': 1, 'silecek': 1, 'zıddına': 1, 'çocuğun': 1, 'zarar': 1, 'Bu': 1, 'insan': 1, 'görür': 1, 'gider': 1, 'kötü': 1, 'Kendisinden': 1}
İlk on: {'söz': 3, 'etmek': 3, 'burnunu': 2, 'her': 2, 'yasak': 2, 'etmeyi': 2, 'övmek': 2, 'ama': 2, 'kendinden': 2, 'kardan': 1}
  • set() ve split() kullanarak paragraf içerisindeki kelimeleri tekrar etmeyecek şekilde bir tuple içerisine alalım.
  • Ardından count() kullanarak her bir kelimenin, paragraf içerisinde kaç kez bulunduğu bilgisini elde edelim ve bu bilgiyi bir sözlük içerisinde saklayalım.
  • Sonrasında ise bubblesort yöntemi ile sözlüğü sort edelim.
  • Son olarak ise sort edilen sözlüğün ilk 10 elemanını başka bir sözlüğe aktaralım.

Not: Daha önce açılan benzer bir konudaki çözümümü burada da kullandım.
Sözlüklerde sıralama - Gok_Mavisi_Anka tarafından #3

2 Beğeni
import collections

with open("/usr/share/doc/git-doc/user-manual.txt", 'r') as f:
    print(sorted(collections.Counter(f.read().split()).items(), key=lambda w: w[1], reverse=True)[:10])

[(‘the’, 1221), (‘a’, 624), (‘to’, 582), (‘of’, 459), (‘you’, 394), (‘and’, 375), (‘$’, 362), (‘git’, 344), (‘-------------------------------------------------’, 328), (‘in’, 324)]

1 Beğeni