{"id":15158008,"url":"https://github.com/mevlutayilmaz/text-summarization","last_synced_at":"2026-01-30T09:48:59.756Z","repository":{"id":253250584,"uuid":"842915719","full_name":"mevlutayilmaz/text-summarization","owner":"mevlutayilmaz","description":"text summarization in python","archived":false,"fork":false,"pushed_at":"2024-08-16T05:58:16.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T20:58:28.456Z","etag":null,"topics":["docx","matplotlib","networkx","nltk","pyqt5","python","sklearn","text-preprocessing","text-summarization","tf-idf"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mevlutayilmaz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-15T11:35:45.000Z","updated_at":"2024-08-16T05:58:19.000Z","dependencies_parsed_at":"2024-08-15T14:32:11.244Z","dependency_job_id":"e62d80ff-2f5e-4690-91a1-6e0449a45aec","html_url":"https://github.com/mevlutayilmaz/text-summarization","commit_stats":{"total_commits":4,"total_committers":2,"mean_commits":2.0,"dds":0.5,"last_synced_commit":"9bc351dea02e215236a0eaaf11c357dc71d66bdd"},"previous_names":["mevlutayilmaz/text-summarization"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mevlutayilmaz%2Ftext-summarization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mevlutayilmaz%2Ftext-summarization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mevlutayilmaz%2Ftext-summarization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mevlutayilmaz%2Ftext-summarization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mevlutayilmaz","download_url":"https://codeload.github.com/mevlutayilmaz/text-summarization/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248631703,"owners_count":21136561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docx","matplotlib","networkx","nltk","pyqt5","python","sklearn","text-preprocessing","text-summarization","tf-idf"],"created_at":"2024-09-26T20:21:51.345Z","updated_at":"2026-01-30T09:48:59.713Z","avatar_url":"https://github.com/mevlutayilmaz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Text Summarization\n\nBu projede verilen bir dokümandaki cümleler, graf yapısına dönüştürülmüş ve bu graf modeli görselleştirilmiştir. Sonrasında, graf üzerindeki düğümler ile özet oluşturan bir algoritma geliştirilmiştir. Proje, veri yapıları bilgisini pekiştirmek ve problem çözme becerisini geliştirmek amacıyla gerçekleştirilmiştir.\n\n\n## İçindekiler\n\n- [Özellikler](#özellikler)\n- [Kullanılan Teknolojiler](#kullanılan-teknolojiler)\n- [Kullanılan Algoritmalar](#kullanılan-algoritmalar)\n- [Proje Adımları](#proje-adımları)\n- [Kurulum](#kurulum)\n- [Kullanım](#kullanım)\n- [Ekran Görüntüleri](#ekran-görüntüleri)\n\n## Özellikler\n\n- **Belge Yükleme:** Bir DOCX dosyasını yükleyin ve metin ile beklenen özeti çıkarın\n- **Metin Ön İşleme:** Metni özetleme için hazırlamak üzere tokenizasyon, temizlik ve işleme işlemleri yapar.\n- **Özet Üretme:** Metin analizine ve puanlama kriterlerine dayalı olarak özetler oluşturur.\n- **Görselleştirme:** Metindeki kelime ilişkilerini içeren grafikleri oluşturur ve görüntüler.\n\n## Kullanılan Teknolojiler\n\n- **Programlama Dili:** Python\n- **Geliştirme Ortamı:** PyCharm\n- **GUI Araçları:** Qt Designer\n- **Kütüphaneler:**\n  - `nltk` - Doğal Dil İşleme Kitaplığı (NLTK), metin ön işleme için kullanılır; bu, tokenizasyon, kök bulma ve durak kelimelerin kaldırılmasını içerir.\n  - `PyQt5` - Uygulama arayüzünü oluşturmak için kullanılan GUI çerçevesi sağlar.\n  - `networkx` - Grafikler oluşturmak ve görselleştirmek için kullanılır. Bu, kelime ilişkilerini ve cümle benzerliklerini görselleştirmeyi sağlar.\n  - `matplotlib` - NetworkX ile oluşturulan grafiklerin görselleştirilmesi için grafik çizim yetenekleri sağlar.\n  - `sklearn` - Makine öğrenimi araçlarını sağlar, CountVectorizer metin vektörizasyonu ve cosine similarity cümle benzerliğini ölçmek için kullanılır.\n  - `docx` - DOCX dosyalarını okumak ve işlemek için kullanılır.\n  - `rouge` - Özetlerin kalitesini değerlendirmek için ROUGE (Recall-Oriented Understudy for Gisting Evaluation) metriklerini kullanır.\n\n## Kullanılan Algoritmalar\n\n### 1. Metin Ön İşleme\n\nMetin ön işleme aşamasında, aşağıdaki adımlar uygulanır:\n\n- **Noktalama İşaretlerini Kaldırma:** Metindeki tüm noktalama işaretlerini kaldırarak sadece kelimeleri analiz ederiz.\n- **Küçük Harfe Çevirme:** Metni küçük harfe çeviririz, böylece büyük-küçük harf farklılıklarını ortadan kaldırırız.\n- **Durak Kelimeleri Çıkarma:** Anlam taşımayan ve sıklıkla kullanılan kelimeleri (örneğin, \"ve\", \"bu\") metinden çıkarırız.\n- **Kök Bulma (Stemming):** Kelimeleri köklerine indirgeriz. Örneğin, \"yazıyor\", \"yazdı\" kelimeleri kök \"yaz\" olarak işlenir.\n\n### 2. Cümle Benzerliği Hesaplama\n\nCümleler arasındaki benzerliği hesaplamak için kullanılan teknikler:\n\n- **CountVectorizer:** Cümleleri vektörlere dönüştürür. Bu, metindeki kelimeleri sayarak her bir cümleyi bir kelime frekansı vektörü olarak temsil eder.\n- **Kosinüs Benzerliği:** İki cümlenin vektörleri arasındaki açıyı hesaplayarak benzerliklerini ölçer. Kosinüs benzerliği, iki vektör arasındaki açının kosinüsünü kullanarak benzerliği değerlendirir.\n  \n### 3. TF-IDF (Terim Frekansı - Ters Belge Frekansı)\n\nTF-IDF, metindeki kelimelerin önemini değerlendirmek için kullanılır:\n\n- **TF (Term Frequency):** Bir kelimenin bir cümledeki frekansıdır. Bir kelimenin ne kadar sık kullanıldığını ölçer.\n- **IDF (Inverse Document Frequency):** Bir kelimenin tüm belgelerdeki önemini ölçer. Kelimenin ne kadar yaygın olduğunu belirler, yaygın kelimeler düşük IDF puanına sahipken nadir kelimeler yüksek IDF puanına sahiptir.\n- **TF-IDF:** TF ve IDF değerlerinin çarpımıdır. Bu, bir kelimenin belirli bir cümledeki önemini değerlendirir.\n\n### 4. Cümle Puanlama\n\nCümlelerin puanlanması için çeşitli faktörler göz önünde bulundurulur:\n\n- **Başlıktaki Kelimeler:** Cümlede başlıktaki kelimelerin bulunup bulunmadığını kontrol ederiz.\n- **Numerik Veri:** Cümledeki sayısal verileri sayarız. Genellikle bilgi açısından önemli olabilir.\n- **Benzerlik:** Cümlenin diğer cümlelerle olan benzerliğine bakarız. Yüksek benzerlik gösteren cümleler daha fazla önem taşır.\n- **İsimler:** Cümledeki özel isimleri (örneğin, yer adları, kişi isimleri) sayarız.\n- **TF-IDF Temelli Kelimeler:** Cümlede TF-IDF değeri yüksek kelimelerin sayısını ölçeriz.\n\n### 5. Özetleme ve ROUGE Puanı\n\nÖzetleme işlemi, puanlama sonuçlarına dayanarak önemli cümleleri seçer. Bu seçilen cümleler, metnin özetini oluşturur. ROUGE puanı, oluşturulan özet ile beklenen özet arasındaki benzerliği ölçer. ROUGE, genellikle özetlerin kalitesini değerlendirmek için kullanılır.\n\n\n## Proje Adımları\n\n1. **Doküman Yükleme:** Kullanıcıdan doküman yüklemesi sağlanmıştır.\n2. **Graf Oluşturma:** Dokümandaki cümleler graf yapısına dönüştürülmüştür. Her cümle bir düğüm olarak temsil edilmiştir.\n3. **Graf Görselleştirme:** Oluşturulan graf, kullanıcı arayüzünde görselleştirilmiştir.\n4. **Cümle Skorlama:** Cümleler arasındaki anlamsal ilişkiler skorlanmış ve özet çıkarma algoritması geliştirilmiştir.\n5. **Özetleme:** Önemli cümleler seçilerek özet çıkarılmıştır.\n6. **ROUGE Skoru Hesaplama:** Çıkarılan özet ile gerçek özet arasındaki benzerlik ROUGE skoru ile ölçülmüştür.\n\n## Kurulum\n\n1. **Gerekli Kütüphaneleri Yükleyin:**\n   Gerekli Python kütüphanelerini yüklemek için aşağıdaki komutu çalıştırın:\n   ```bash\n   pip install nltk pyqt5 networkx matplotlib scikit-learn python-docx rouge\n\n2. **Proje Dosyalarını İndirin:**\n   Proje dosyalarını GitHub'dan klonlayın veya indirin:\n   ```bash\n   git clone https://github.com/mevlutayilmaz/text-summarization.git\n\n3. **Uygulamayı Çalıştırın:**\n   Proje dizininde `main.py` dosyasını çalıştırarak uygulamayı başlatın:\n   ```python\n   python main.py\n\n4. **GUI'yi Dönüştürün:**\n   Qt Designer ile oluşturulmuş `.ui` dosyasını Python koduna dönüştürün:\n   ```python\n   pyuic5 -o convertGui.py untitled.ui\n   ```\n\n   Bu adım, Qt Designer'da oluşturduğunuz grafik arayüzün Python koduna dönüştürülmesini sağlar. `convertGui.py` dosyasını proje dizininde bulabilirsiniz.\n\n5. **Proje Yapılandırmasını Kontrol Edin:**\n   `main.py`, `convertGui.py`, ve `Gui.py` dosyalarının doğru yapılandırıldığından emin olun. Her dosya, uygulamanızın doğru çalışması için gerekli olan kodu içermelidir.\n\n6. **Test ve Geliştirme:**\n   Uygulamanızı test edin ve gerekli geliştirmeleri yapın. Uygulama işleyişi ve kullanıcı arayüzü ile ilgili her türlü değişiklik bu aşamada yapılmalıdır.\n\n## Kullanım\n\n1. Dokümanı yüklemek için arayüzdeki ilgili alanı kullanın.\n2. \"Visualize Doc.\" butonuna tıklayarak dokümanı graf yapısında görselleştirin.\n3. \"Summary\" butonuna basarak özet çıkarın ve cümle skorlarını görselleştirin.\n4. Özetin gerçek özet ile benzerliğini ROUGE skoru ile ölçün.\n\n## Ekran Görüntüleri\n\n\u003ctable style=\"border-spacing: 0; border-collapse: collapse; width: 100%;\"\u003e\n  \u003ctr\u003e\n    \u003ctd style=\"padding: 0; vertical-align: middle; text-align: center;\"\u003e\n      \u003cimg src=\"https://github.com/user-attachments/assets/368c1c2e-3f34-46b7-abc0-f112fc2e009f\" width=\"400\" /\u003e\n    \u003c/td\u003e\n    \u003ctd style=\"padding: 0; vertical-align: middle; text-align: center;\"\u003e\n      \u003cimg src=\"https://github.com/user-attachments/assets/8041cece-b065-4322-9196-3b8fbfa05c3e\" width=\"400\" /\u003e\n      \u003cp style=\"text-align: center;\"\u003eDoküman Graf Yapısı\u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd style=\"padding: 0; vertical-align: middle; text-align: center;\"\u003e\n      \u003cimg src=\"https://github.com/user-attachments/assets/bdc16433-03fc-460f-95a2-9aecaa074ab9\" width=\"400\" /\u003e\n      \u003cp style=\"text-align: center;\"\u003eÖzet 1\u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd style=\"padding: 0; vertical-align: middle; text-align: center;\"\u003e\n      \u003cimg src=\"https://github.com/user-attachments/assets/c6a1e8e1-efff-4cac-bb76-0e20ee0b2982\" width=\"400\" /\u003e\n      \u003cp style=\"text-align: center;\"\u003eÖzet.1 Cümle Puanları\u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd style=\"padding: 0; vertical-align: middle; text-align: center;\"\u003e\n      \u003cimg src=\"https://github.com/user-attachments/assets/36d2a858-c450-4a3d-b883-6f9ac62f9ee2\" width=\"400\" /\u003e\n      \u003cp style=\"text-align: center;\"\u003eÖzet 2\u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd style=\"padding: 0; vertical-align: middle; text-align: center;\"\u003e\n      \u003cimg src=\"https://github.com/user-attachments/assets/c20ab694-1918-4414-81cc-f74091a8558d\" width=\"400\" /\u003e\n      \u003cp style=\"text-align: center;\"\u003eÖzet.2 Cümle Puanları\u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmevlutayilmaz%2Ftext-summarization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmevlutayilmaz%2Ftext-summarization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmevlutayilmaz%2Ftext-summarization/lists"}