Skip to content

hediyeorhan/SummarizingTextWithNLP

Repository files navigation

SummarizingTextWithNLP

1. PROJE KONUSU VE ÖZETİ

Günümüzde aradığımız birçok kaynak internette kolaylıkla bulunabilmektedir. Bu da bilgi fazlalığı ve çok fazla bilgi arasında kaybolmaya sebep olmaktadır. Bu nedenle metin özetleme uygulaması geliştirilmesine karar verilmiştir. Metin özetleme uygulamasında doğal dil işleme algoritmaları kullanılacaktır. Uygulama sayesinde bulunan kaynaklardaki çok uzun metinler özetlenebilecektir. Özetlenen metin içeriği okunarak aranan bilginin metin içerisine yer alıp almadığı kolaylıkla anlaşılabilecektir. İnternette literatür taraması ve kaynak taraması yapılırken hangi kaynakların incelenebileceğinin seçiminde kolaylık sağlayacaktır. Metin özetleme çalışmalarının örnekleri birçok kaynakta mevcuttur. Bu yüzden projeye özgünlük kazandırmak adına özgün bir ara yüz tasarımı yapılacaktır. Uygulama ara yüz üzerinden girilen metnin özetini bize yine ara yüz aracılığı ile gösterecektir. Projenin geliştirilme süresine bağlı olarak imkân olursa uygulama, ara yüze belirli formatlarda dosya eklenebilmesi ve dosyaların özetinin çıkarılması şeklinde revize edilecektir.

2. PROJENİN AMACI VE HEDEFİ

Projenin geliştirilmesindeki amaç insanların bir bilgiye ulaşmak için doğru kaynak ararken çok zaman harcamalarını engellemektir. Metin özetleme ile uzun metinler ve akademik çalışmaların kısa bir özeti elde edilecektir. Elde edilen özet incelenerek istenilen bilginin o çalışmada bulunup bulunmadığı anlaşılacaktır. Bu şekilde kaynak ve literatür taramasında harcanılan zamandan tasarruf edilecektir. Projedeki temel amaç zamandan tasarruf etmektir. Projenin bir diğer hedefi, kullanıcılara kullanışlı bir ara yüz sunmaktır. Ara yüz kullanımının basit olması kullanım kolaylığı sağlayacaktır.

3. PROJEDE KULLANILAN YAZILIMLAR

Algoritmanın geliştirilme aşamasında Python programlama dili kullanılacaktır. Python, nesne yönelimli, yorumlamalı, birimsel, etkileşimli ve yüksek seviyeli bir programlama dilidir. Python programlama dili ile algoritmayı kodlamak için Visual Studio Code ortamı kullanılacaktır. Visual Studio Code, içerisinde birçok eklentiyi barındıran, çapraz platformlarda çalışabilen ve birçok programlama dili (C, C#, Java, Python, PHP ve Go) desteği olan tam özellikli bir kod editörüdür. Visual Studio Code, hata ayıklama, gömülü Git kontrolü, sözdizimi vurgulama, akıllı kod tamamlama, snippet’ler ve kodu yeniden yapılandırma desteği içerir. Uygulamada kullanılacak ara yüz için pyqt5 kullanılacaktır. Pyqt, bir Python eklentisi olarak uygulanan platformalar arası GUI araç seti Qt’nin bir Python bağlantısıdır.

PROJENİN YAPIM AŞAMALARI VE SONUÇ

Proje geliştirilirken öncelikle bir veri setinin gerekli olup olmadığı araştırılmıştır. Yapılan araştırmalar sonucunda veri setine gerek duyulmadığı anlaşılmıştır. Projede kullanılacak ara yüz için pyqt5 [3] kütüphanesi kurulumu gerçekleştirilmiştir. Kurulum aşaması ve kullanılan komut Şekil 1’de görülmektedir.

image

Şekil 1: Pyqt5 kurulumu

Pyqt5 kurulumu gerçekleştirildikten sonra metin üzerinde işlemler yapılmasını sağlayan ntlk [4] kütüphanesi kurulumu ve internet üzerinden veri çekerken kullanılacak beautifulsoup [5] kütüphanesi kurulumu gerçekleştirilmiştir. Gerekli kurulumlar gerçekleştirildikten sonra ilk olarak metin özetleme fonksiyonu üzerinde çalışılmıştır. Sonrasında ara yüz oluşturulmuştur ve özetleme fonksiyonu ile ara yüz birleştirilmiştir. Projede metin özetleme kısmında iki seçenek bulunmaktadır. Wikipedia sitesinde istenilen konuda bir metin üzerinde özetleme gerçekleştirilebilmektedir. Özetlenmesi istenilen konunun url adresi belirtilerek buradan çekilen konu ile ilgili metin özetleme algoritmasına verilerek özetlenecektir. Şekil 2’de verilerin çekilmesi ve özetlenecek metin formatına getirilmesi görülmektedir.

image

Şekil 2: Verilerin çekilmesi ve istenilen formata getirilmesi

Veriler çekildikten sonra wikipedia metinlerinde bulunan referans numaraları kaldırılmıştır. Metindeki cümleler ayrıştırılmıştır ve bir liste yapısında tutulmuştur. Sonrasında kelimelerin tekrar sayılarını bulmak için metinlerde bulunan noktalama işaretleri kaldırılmıştır. Şekil 3’te bu işlemlerin sırası ile yapıldığı görülmektedir.

image

Şekil 3: Veri ön işleme adımları

Noktalama işaretlerinin kaldırıldığı ve sadece kelimelerden oluşan metin üzerinden kelimelerin tekrar etme sayıları bir sözlük yapısında tutulmuştur. En çok tekrar eden kelimenin tekrar sayısı elde edilmiştir. Bu maksimum tekrar sayısı tüm kelimelerin tekrar sayılarına tek tek bölünerek ağırlıklı sıklık değeri elde edilmiştir. Sonrasında bu değerler cümle puanlamaları yapmak için kullanılacaktır. Yapılan işlemlere ait kod blokları Şekil 4’te görülmektedir.

image

Şekil 4: Kullanılacak değerlerin elde edilmesi

Elde edilen metindeki cümleler ayrılıp bir cümle listesinde tutulmuştur. Cümlelerin bulunduğu liste for döngüsü ile gezilerek her bir cümle tek tek ele alınmıştır sonrasında bu cümlelerdeki kelimeler yine for döngüsü ile ayrıştırılmıştır. Sonrasında cümlelerde bulunan kelimeler oluşturulan kelime tekrarı sözlüğünde bulunuyorsa bu cümlelerin puanı hesaplanmıştır. Cümlelerdeki kelimeler boşluklara göre ayrılmıştır ve bu kelimeler kelime tekrarlarının bulunduğu sözlük yapısında mevcut ise buradaki frekans değerleri eklenmiştir mevcut değil ise başlangıç olarak 1 değeri atanmıştır. Şekil 5’te yapılan cümle puanlarının hesaplanması görülmektedir.

image

Şekil 5: Cümle puanlarının hesaplanması

Hesaplanan cümle puanlarından en yüksek puana sahip n adet cümle alınarak özetleme işlemi bitiriliyor. Kaç adet cümle alınacağı isteğe göre belirlenebilir. Şekil 6’da en yüksek puana sahip ilk 7 cümlenin alındığı görülmektedir. Daha sonra bu cümleler birleştirilerek bir özet metin oluşturulmuştur.

image

Şekil 6: Özetlenen cümlelerin birleştirilmesi ve özet metnin oluşturulması

Özetlenen metin kayıt altına alınması ve tutulması için bir txt dosyasına yazdırılmıştır. Şekil 7’de bu işlem görülmektedir.

image

Şekil 7: Özetlenen metnin txt formatında kayıt edilmesi

Metin özetleme algoritmaları bittikten sonra ara yüz tasarımına geçilmiştir. Ara yüz tasarımın Qt Designer kullanılmıştır. Şekil 8’de ara yüz uygulamalarının oluşturulma aşaması görülmektedir. Qt Designer kullanılarak oluşturulan ara yüz dosyası, python dosyası haline çevrilerek metin özetleme fonksiyonları dâhil edilmiştir. Şekil 9’da .ui uzantılı tasarım dosyasının python dosyasına dönüşümü görülmektedir.

image

Şekil 8: Ara yüz oluşturulma aşaması

image

Şekil 9: .ui dosyasının .py dosyasına dönüşümü

Kullanıcı hangi tür metin özetlemek istediğini seçim ekranı aracılığıyla seçebilmektedir. Bu seçimlere göre kullanıcının hizmetine iki ayrı pencere açılmaktadır.

image

Şekil 10: Seçim ekranı

Kullanıcı wikipedia seçeneğini seçtiğinde url girilmesi gereken bir kısım gelmektedir. Girilen url adresindeki metnin özetlenmiş hali özet metin kutusunda görülecektir. Wikipedia için geliştirilen ara yüz ve kullanımı Şekil 11’de görülmektedir.

image

Şekil 11: Wikipedia için geliştirilen ara yüz ve kullanımı

Kullanıcının istediği herhangi bir metni girmesi ve bu metnin özetlenmesi için bir de metin ara yüzü oluşturulmuştur. Şekil 12’de kullanıcıdan alınan metin özetlenmiştir.

image

Şekil 12: Kullanıcıdan alınan metnin özetlenmesi

Ara yüz üzerindeki wikipedia ve kullanıcı metinlerinin özetlenmiş hallerinin kayıt edilmesi ve kaybolmaması için özetler txt formatında tutulmuştur. Şekil 13’ de görülmektedir.

image

Şekil 13: Özet metinlerin txt formatında tutulması

KAYNAKLAR

[1] Metin Özetleme Algoritmaları. Available: https://mgminsights.com/2021/05/09/nlpde-metin-ozetleme-algoritmalari/

[2] Text Summarization. Available: https://www.projectpro.io/article/text-summarization-python-nlp/546

[3] PyQT5. Available: https://pypi.org/project/PyQt5/

[4] NLTK Library. Available: https://www.nltk.org/

[5] Beatiful Soup Library. Available: https://pypi.org/project/beautifulsoup4/