Bu Projede Metin Ön İşleme İşlemleri, Python Trankit ve NumPy Kütüphaneleri, TextRank ve RAKE Algoritmaları Kullanılarak Metin Üzerinde Anahtar Kelimelerin Çıkarılması Amaçlanmıştır.
Özet
Anahtar Kelimeler, Doküman İçeriğindeki Konuyu Anlamamızı Büyük Ölçüde Kolaylaştırır. Doküman İçeriğinin Tamamını Okumaya Gerek Kalmadan Doküman Hakkında Çıkarımlar Yapılabilir. Anahtar Kelimeler; Arama Motoru Optimizasyonu (SEO) İşlemlerinde, Yorum ve Sosyal Medya Analizlerinde, Dokümanın Konusunun Bulunması ve Daha Sonra Konuya Göre Doküman Sınıflandırma İşlemleri gibi Birçok Yerde Kullanılabilir.
Projenin Birinci Kısmında Doküman Üzerinde Metin Ön İşleme İşlemleri Uygulanmıştır. Metin Ön İşleme, Birbirine Bağlı İşlemlerden Oluşmaktadır. Bu İşlemler Sırasıyla; Metni Küçük Harflere Dönüştürme, Metindeki Her Bir Kelimeyi Ayırma, Kelimelerin Türlerini Belirleme, Kelimelerin Kök Halini Bulma, Metindeki Etkisiz Kelimeleri Bulma ve Metinden Çıkarma, Metinden İstenen Türdeki Kelimelerin Alınması ve Tekrar Eden Kelimelerin Çıkarılmasıdır.
Projenin İkinci Kısmında Metin Ön İşleme İşlemleri ile Elde Edilen Kelimeler Kullanılarak Otomatik Anahtar Kelime Çıkarma Algoritmaları ile Metinden Anahtar Kelimeler Çıkarılmaya Çalışılmıştır. Bu Çalışmada Otomatik Anahtar Kelime Çıkarma Algoritmalarından TextRank ve RAKE Kullanılmıştır. TextRank Algoritması ile Kelimelerin Değeri Hesaplanmıştır. RAKE Algoritması ile Metin, Dokümandaki Etkisiz Kelimelere Göre Kelime Gruplarına Ayrılmıştır. Kelime Gruplarının Değerini Bulabilmek için TextRank Algoritması ile Hesaplanan Kelime Değerleri Kullanılmıştır. Son Olarak Kelime Gruplarının Değerleri Büyükten Küçüğe Sıralanarak Nihai Anahtar Kelimeler Bulunmuştur.
Proje İngilizce ve Türkçe Dokümanları Desteklemektedir. İngilizce Dokümanlarda TextRank ve RAKE Algoritması Birlikte Kullanılmıştır. Bu Nedenle Anahtar Kelimelerde Birden Fazla Kelime Bulunabilmektedir. Türkçe Dokümanlarda ise Sadece TextRank Algoritması Kullanılmıştır. Bunun Nedeni RAKE Algoritmasının Türkçe Dokümanlarda İyi Performans Vermemesidir.
Projede İşlemlerin Görselleştirilmesi Amacıyla Arayüz Geliştirilmiştir. Arayüz Üzerinden Dil Seçimi Yapıldıktan Sonra Gerekli Formatta Doküman Dosyası Verildiğinde, Bulunan Anahtar Kelimeler Sıralanmış Şekilde Arayüzde Gösterilmektedir. Ayrıca Sonuçlar Arayüz Aracılığı ile Veritabanına Kayıt Edilebilmekte Ve Veritabanı, Arayüz Üzerinden Gerekli Butona Basılarak Web Tarayıcısı Aracılığı ile Görüntülenebilmektedir.
Giriş
Her Geçen Gün Dijital Dünyada Üretilen Metin Tabanlı Veriler Hızla Büyümektedir. Bu Durum Yapılandırılmamış Olan Bu Verileri Analiz Etmeyi ve İşlemeyi Zorlaştırır. Bu Verileri Sınıflandırmak için Anahtar Kelime Çıkarımı Yapılıp Veriler Sınıflandırılabilir. Böylece Dokümanlarda Arama Yaparken İstenilen Bilgiye Ulaşım Daha Hızlı Olur ve Arama Yaparken Büyük Miktarda Zaman Tasarrufu Sağlanabilir.
Anahtar Kelime Çıkarma, Bir Dokümandaki En Alakalı ve En Çok Kullanılan Kelimeleri veya Kelime Gruplarını Ayıklama İşlemidir. Anahtar Kelimeler, Doküman İçindeki Bilgiye En Hızlı Şekilde Ulaşmaya ve Dokümandaki İçeriğin Özetini Anlamaya Yardımcı Olur. Bu Sayede Dokümanın Tüm İçeriğini Okumaya Gerek Kalmadan Anahtar Kelimeler Sayesinde Doküman Hakkında Fikir Sahibi Olunabilir.
Dokümanlardan Anahtar Kelime Çıkarma ile İlgili İki Durum Vardır. Birincisi İnsan Gücüyle Anahtar Kelime Çıkarma, İkincisi ise Otomatik Anahtar Kelime Çıkarma Algoritmaları Kullanılarak Dokümandan Anahtar Kelime Çıkarılmasıdır.
İnsan Gücüyle Anahtar Kelime Çıkarmada Bazı Zorluklar Vardır. Veriler Çok Büyük Boyutlu Olduğu için İnsanların Metinleri Okuyup Anahtar Kelime Çıkarması Hem Zaman Alıcı Bir İştir Hem de Maliyetlidir. Ayrıca İnsan Gücünde Anahtar Kelime Çıkarımında Önceden Belirlenmiş Kurallar Olmadığı için Anahtar Kelime Çıkarma Kişiden Kişiye Değişebilir ve Bu Durum Anahtar Kelime Çıkarmada Hataya Yol Açabilir.
Otomatik Anahtar Kelime Çıkarma Algoritmalarında ise İstenilen Kadar Veriden Anahtar Kelime Çıkarımı Yapılabilir. Bu Durum Çok Büyük Bir Zaman Tasarrufu Ve Maliyet Kazancı Sağlar. Ayrıca Anahtar Kelimeler Belirli Kurallara Uygun Çıkarıldığı için Sonuçlarda Tutarlılık Elde Edilir. Bu Nedenle Otomatik Anahtar Çıkarma Algoritmalarının İnsan Gücüne Göre Birçok Avantajı Bulunmaktadır. Otomatik Anahtar Kelime Çıkarma Algoritmalarının Dezavantajı ise Doküman İçinde Az Sayıda Geçen, Fakat Dokümanın Konusuyla Alakalı Olan Bir Kelime Gözden Kaçırılabilir.
Otomatik Anahtar Kelime Çıkarmak için Genellikle TF-IDF, RAKE, TextRank gibi Algoritmalar Kullanılmaktadır. Otomatik Anahtar Kelime Çıkarımı Algoritmaları Herhangi Bir Veri Seti Kullanmamaktadır. Bu Algoritmalar Tamamen Dokümandaki İstatistiksel Bilgilere Göre ve Dilden Bağımsız Olarak Çalışmaktadır. Bu Algoritmaların Temelinde Dokümandaki Kelimelerin Geçme Sıklığı, Dokümandaki Belirli Kelime Çiftlerinin Dokümanda Kaç Defa Geçtiği, Dokümandaki Etkisiz Kelimelerin Yerleri Gibi Kriterler Vardır.
Anahtar Kelime Çıkarmanın Kullanıldığı Alanlar
Anahtar Kelimeler Birçok Alanda Kullanılmaktadır. Anahtar Kelimeler ile Veriler Analiz Edilebilir. Aşağıdaki Başlıklar Altında Anahtar Kelimelerin Kullanıldığı Bazı Alanlar Belirtilmiştir.
Arama Motoru Optimizasyonu
Arama Motoru Optimizasyonu (SEO) Alanında Anahtar Kelimeler Sıkça Kullanılır. Arama Motorları Web Sitelerindeki İçeriği Anahtar Kelimelere Göre Dizine Yerleştirir ve Bir Kullanıcı Arama Motorunda Bir Arama Yaptığında Anahtar Kelimelere Göre Sonuçlar Getirilir. Sonuçlarda Bir Web Sitesinin Üst Sıralarda Yer Alabilmesi için Web Site İçeriğindeki Anahtar Kelimelerin Önemi Çok Büyüktür.
Yorum Ve Geri Bildirim Analizleri
Haber, Alışveriş, Anket, Video Web Sitesi gibi Müşterilerin Yorum veya Geribildirim Yapabildiği Yerlerde Bulunan Metinlerin Anahtar Kelimeleri Çıkarılarak Yorumun veya Geribildirimin Olumlu veya Olumsuz Olarak Sınıflandırılması veya Duygu Analizi Amacıyla Anahtar Kelimeler Kullanılabilir. Böylece Bir Yönetici veya Yetkili Bir Kişi Müşterilerin Yaptığı Yorum ve Geri Bildirimlerin Analizlerine Bakarak Daha Hızlı ve Anlık Bir Şekilde Çıkarımda Bulunabilir, Müşterilerin Düşünceleri Hakkında Bilgi Sahibi Olabilir.
Sosyal Medya Analizi
Markalar Sosyal Medyadaki Verileri Kullanarak Anahtar Kelime Çıkarımı Yapabilir. Kullanıcıların Markadan İstekleri, Kullanıcıların Diğer Markalar Hakkında Ne Söylediği, Rekabet Analizinin Çıkarılması veya Ürünlerin Geliştirilmesi Amacıyla Anahtar Kelimeler Kullanabilir.
Dokümanın Konusunun Bulunması
Kullanıcıların Bir Konu Hakkında Araştırma Yaparken İstediği Bilgiye Ulaşması Bilimsel Alanda Verilerin Artması Dolayısıyla Zorlaşmıştır. Burada Anahtar Kelimeler Devreye Girmektedir. Anahtar Kelimeler, İlgili Dokümanın İçeriğinin Konusunu ve Özetini Kullanıcının Dokümanın Tamamını Okumasına Gerek Kalmadan Vermektedir. Böylece Kullanıcı Anahtar Kelimeler Sayesinde Ulaşmak İstediği Bilgiye En Hızlı Bir Şekilde Ulaşabilmektedir.
Projenin Amacı
Bir Dokümandan En Alakalı ve En Hatasız Şekilde Anahtar Kelimeler Çıkartılıp Dokümanın İçeriği Hakkında Hızlı Bilgi Alınması Amaçlanmıştır. Ayrıca Dokümandan Çıkarılan Anahtar Kelimeler Bir Veritabanına Kaydedilerek Sonuçların Kaybolmaması ve Sonuçların Bir Web Tarayıcısı Yardımıyla Görüntülenip Sonuçlar Hakkında Yorum Yapılabilmesi Amaçlanmıştır.
Otomatik Anahtar Çıkarma Algoritmaları
TextRank
TextRank, PageRank Algoritmasına Dayalı Otomatik Kelime Çıkarma Algoritmasıdır. PageRank, Google’ın da Kullandığı Bir Web Sayfasını Diğer Web Sayfalarına Göre Önemini Tanımlamak için Kullanılan Bir Algoritmadır. Tek Bir Web Sayfasına Ne Kadar Çok Sayfa İstekte Bulunursa, O Sayfa O Kadar Önemlidir.
TextRank Algoritması, Rada Mihalcea ve Paul Tarau Tarafından Yazılan "TextRank: Bringing Order into Texts" Adlı Makalede Açıklanmıştır.
TextRank Algoritması, Graf Tabanlı ve Denetimsiz Bir Algoritmadır. Bu Algoritmada Herhangi Bir Veri Setine İhtiyaç Yoktur. Tamamen Graf Yapısını Kullanan ve İstatiksel Olarak Sonuç Veren Bir Algoritmadır. Veri Setine İhtiyaç Olmadığından Herhangi Bir Dile Bağımlı Değildir. Fakat TextRank Algoritmasının Sağlıklı Sonuç Verebilmesi için Dokümandaki İçeriğin Ön İşleme İşlemlerinin İyi Yapılmış Olması Gerekmektedir. Doküman İçeriği Ön İşleme İşlemleri ile İyi Analiz Edilmeli ve TextRank Algoritmasının Kullanacağı Nihai Kelimeler Belirlenmelidir.
TextRank Algoritmasında Kelimeler Grafın Düğümlerini Oluşturur. Herhangi İki Kelime Arasındaki Bağlantı Doküman İçeriğinde Bulunuyorsa, Bu Bağlantı Graftaki İki Düğüm Arasındaki Kenar ile Temsil Edilir. Bu Bağlantı, Doküman İçeriğinde Ne Kadar Çok Geçiyorsa Graftaki Bu Kenar O Kadar Değerlidir. Graftaki Kenarlar, Kelimeler Arasındaki İlişkileri Tanımlar.
TextRank Algoritması Belirli Adımlardan Oluşmaktadır. Doküman İçeriği Üzerinde Uygulanan Metin Ön İşleme İşlemleri ile Elde Edilen Kelimeler Kullanılarak Yönsüz Bir Graf Oluşturulur ve Graftaki Düğümler Kelimeleri Temsil Etmektedir. Graf Oluşturulduktan Sonra Düğümler Arasındaki Kenarları Oluşturabilmek için Kelimelerin Birbirleri Arasındaki Tüm Bağlantılar, Dokümandaki Metnin İçerisinde Önceden Oluşturulmuş Bir Hareketli Pencere İçinde Aranarak Kelime Bağlantılarının Pencere İçinde Geçme Durumuna Göre Düğümler Arasında Gerekli Kenarlar Oluşturulur. Pencere Boyutu 2 ile 10 Arasında Olabilir ve Pencere Doküman İçeriğinde Baştan Sona Doğru Hareketli Bir Şekilde Dolaştırılarak Kelime Bağlantıları Aranmaktadır. Pencere Boyutunun 2 Kelimeden Fazla Olması, İki Kelime Bağlantısı Arasında Yabancı Kelimeler Olabileceğini Belirtmektedir ve 2 Kelime Arasındaki Yabancı Kelimelere Rağmen Grafta Kenar Oluşturulacağı Anlamına Gelmektedir. 2 Kelimenin Arasında Yabancı Kelimelerin Olması O Bağlantının Değerini Düşürecektir. Örnek Olarak "Ali Playing Basketball" Cümlesinde Pencere Boyutu 3 ise, "Ali-Basketball" Kelime Bağlantısı için Kelimeler Arasında Geçen “Playing” Kelimesine Rağmen Grafta Kenar Oluşturulacaktır, Fakat Bu Bağlantının Değeri Daha Düşük Olacaktır. Graftaki Kenarlar Oluşturulduktan Sonra Düğümlerin Değerini Hesaplayabilmek için Aşağıdaki Formül Uygulanır.
Formül Uygulanmadan Önce Tüm Düğümlerin Varsayılan Değeri 1’dir. Formüldeki "Vi" Hesaplanacak Olan Düğümü Temsil Eder. "D" Sönümleme Faktörünü Belirtir, 0 ile 1 Arasında Değer Verilebilir ve Genellikle 0.85 Değeri Verilir. Hesaplanacak Olan Düğümün Bağlantı Yaptığı Düğüm "Vj" ile Temsil Edilmektedir. İki Düğümün Arasındaki Bağlantı Değeri, Hesaplanacak Olan Düğümün Bağlantı Yaptığı Düğümün Bağlantı Sayısına (|OutV(j)|) Bölünüp, Hesaplanacak Olan Düğümün Bağlantı Yaptığı Düğümün Değeri (S(Vj)) ile Çarpılır. Bu İşlemler Hesaplanacak Olan Düğümün Tüm Bağlantıları için Yapılıp Toplamları Bulunduktan Sonra Formül Uygulanır. Graftaki Tüm Düğümlere Formül Bir Kere Uygulanıp Düğümlerin Değerleri Bulunduktan Sonra 1 Yineleme Tamamlanmış Olur.
Bu Formülden Çıkarılan Sonuç, Düğümlerin Değeri Kendisine Gelen Düğümlerin Bağlantı Sayısına ve Değerine Bağlıdır. Düğümlerin Doğru Değerlerini Bulabilmek için Birden Çok Yineleme Yapılması Gerekmektedir. Son Yineleme ile Bir Önceki Yineleme Arasındaki Düğüm Değerleri Eşik Değerinden (0.0001) Küçük Olursa Algoritma Durdurulur. Belli Bir Yinelemeden Sonra Düğümlerin Değeri Sabit Kalmaktadır.
TextRank Algoritmasında Grafa Eklenecek Kelimeler Kısıtlanabilir. Doküman İçeriği Belirli Bir Kelime Türü Filtresinden Geçirilebilir. Örnek Olarak Metin İçerisinde Sadece İsim ve Fiil Olan Kelimeler İstenirse Grafta Sadece İsim Ve Fiiller Arasındaki İlişkilerin Kenarları Oluşturulur. Çeşitli Kelime Türü Filtreleri Denenmiştir, Yalnızca İsim Ve Sıfatlar için En İyi Sonuçlar Gözlemlenmiştir.
TextRank Algoritması ile Hesaplanan Düğümlerin Değerleri Büyükten Küçüğe Sıralanarak Dokümandaki En Önemli Kelimeler Elde Edilmektedir.
RAKE
RAKE, Dokümanlar Üzerinde Ön İşleme İşlemlerine İhtiyaç Duyulmadan ve Belirli Bir Dile Bağımlı Olmayan, En Hızlı, Basit ve Verimli Bir Şekilde Anahtar Kelime Çıkarılmasını Sağlama Amacıyla Geliştirilmiştir.
RAKE Algoritması Belirli Adımlardan Oluşmaktadır. Doküman İçeriğindeki Kelimeler Parçalara Ayrılarak Bir Liste Oluşturulur. Bu Listedeki Kelimeler İçinden "ve", "ile", "veya" gibi Etkisiz Kelimeler Belirlenir. Etkisiz Elemanlara Noktalama İşaretleri de Dahildir. Liste Etkisiz Kelimelere Göre Kelime Gruplarına Bölünür. Bu Kelime Grupları Aday Anahtar Kelimeler Olarak Tanımlanır. Kelime Gruplarının Değerlerini Bulmak için Kelime Grupları İçindeki Kelimelerin Değerleri Hesaplanmalıdır.
Kelimelerin Değerlerini Hesaplamak için Kelime Frekansı (Freq(W)), Kelime Derecesi (Deg(W)) ve Kelime Derecesinin Kelime Frekansına Oranını (Deg(W)/Freq(W)) Hesaplamamız gerekir. "W", Kelimeyi Temsil Etmektedir.
Her Kelime için Derece Değerini, Frekans Değerine Bölerek (Deg(W)/Freq(W)) Kelimenin Değeri Hesaplanır. Son Olarak Kelime Grubunu Oluşturan Kelimelerin Değerleri Toplanarak Tüm Aday Anahtar Kelimelerin Değerleri Bulunmaktadır. Kelime Grupları Değerlerine Göre Büyükten Küçüğe Doğru Sıralanıp En Önemli Aday Anahtar Kelimeler Dokümandan Çıkarılmış Olur.
RAKE Algoritması Hızı, Basitliği ve Verimliliği ile Ön Plana Çıkar. Diğer Otomatik Anahtar Kelime Çıkarma Yöntemlerden Farklı Olarak Metin Ön İşleme İşlemlerine Bağlı Değildir ve Bu İşlemler Kullanılmadığı için Kaynak Yönetimi Açısından Avantaj Sağlamaktadır. Fakat Bu Algoritma Tüm Diller için Aynı Başarıyı Göstermeyebilir. Bazı Dillerde Etkisiz Kelimelere Göre Kelime Grupları Bulunsa da Dilin Yapısından Ötürü Kelime Grupları Anlamsız Olabilmektedir. Ayrıca RAKE Algoritmasının Başarısını Arttırmak için Metindeki Etkisiz Kelimelerin Yüksek Doğrulukla Bulunması Gerekmektedir.
TF-IDF
TF-IDF, Dokümandaki Bir Kelimenin Önemini İstatistiksel Yöntemleri Kullanarak Bulmayı Amaçlayan Bir Algoritmadır.
TF, Bir Kelimenin Belge İçinde Geçme Sıklığı Anlamına Gelir. Kelimenin Belge İçindeki Geçme Sıklığına Göre Kelimenin Önemli Olup Olmadığı Düşünülmektedir. Fakat Bu Kelimenin Anahtar Kelime Olarak Değerlendirilebilmesi için TF Yeterli Olmayabilir. Çünkü Etkisiz Kelimeler Belge İçerisinde Genellikle Yüksek Sıklıkta Geçen Kelimelerdir. TF, Etkisiz Kelimeleri Önemli Olarak Bulabilir. Kelimenin Belge için Önemini Daha Doğru Bulabilmek için TF ile Birlikte IDF Kullanılır.
Yukarıdaki Formüle Göre Belgedeki Bir Kelimenin TF Değeri Hesaplanır. Formüldeki "i" Belgedeki Bir Kelimeyi, "j" Belgeyi, "F(i)" Kelimenin Belgedeki Sıklığını ve "N" ise Belgedeki Toplam Kelime Sayısını Temsil Etmektedir.
Yukarıdaki Formüle Göre Belgedeki Bir Kelimenin IDF Değeri Hesaplanır. Formüldeki "B" Bir Belge Koleksiyonundaki Belgeleri Simgeler ve "|B|" Belge Koleksiyonundaki Toplam Belge Sayısı Anlamına Gelmektedir. Koleksiyondaki Toplam Belge Sayısı, Kelimeyi İçeren Belge Sayısına Bölünür ve Bölümün Logaritması Alınarak IDF Hesaplanır. IDF Formülünde Paydanın 0 Olma İhtimali Vardır. Çünkü Aranılan Kelime Hiçbir Belgede Geçmiyor Olabilir. Bu Durum 0’a Bölme Hatası Oluşturacağından Genellikle Formülde Paydaya 1 Eklenir. IDF, Bir Kelimenin Tüm Belgelerde Geçen Bir Ortak Kelime mi, Yoksa Nadir Bir Kelime Olduğunu Bulabilir ve IDF için Nadir Kelimeler Daha Değerlidir. Belgedeki Etkisiz Kelimeler Yüksek Sıklıkta Geçebilir, Bu Nedenle Önemsiz Kelimelerin Önemini Düşürmek için IDF Kullanılır.
TF-IDF Değeri Yukarıdaki Formül ile Hesaplanır. Bir Kelimenin TF-IDF Değeri Kelime Belgede Her Geçtiğinde Artarken, Koleksiyondaki Diğer Belgelerde Her Geçtiğinde Azalır. TF-IDF ile Bir Belgedeki Kelimelerin Önemini Hesaplayarak En Yüksek Değere Sahip Kelimeler Anahtar Kelime Olarak Kullanılabilir. TF-IDF Algoritmasının Dezavantajlarından Biri Belgedeki Bir Kelimenin TF-IDF Değeri Hesaplanırken Koleksiyondaki Belgelerin Sayısı ve Koleksiyondaki Belgelerde Aranılan Kelimenin Geçip Geçmediği Başarıyı Doğrudan Etkiler. Örnek Olarak "Bilim" Kelimesinin Futbol Konusuna Sahip Bir Belge Koleksiyonunda Geçme İhtimali Çok Düşüktür. Bu Nedenle Aranılan Kelime Belge Koleksiyonu ile Uyumlu Olmalıdır. TF-IDF Algoritmasının Bir Başka Dezavantajı ise Diğer Otomatik Anahtar Çıkarma Algoritmalarından Farklı Olarak Bir Belge Koleksiyonu İçerdiğinden ve Kelime Araması Gerçekleştireceğinden Dolayı Daha Yavaş Çalışmasıdır.
Projede Kullanılan Araçlar ve Yöntemler
Bu Bölümde Projenin Uygulanması için Birbirine Bağlı Olan Aşamalar Anlatılmıştır. İlk Olarak Çalışmanın Uygulanması için Gereken Programlama Dili, Platform ve Kütüphaneler Tanıtılmıştır. Sonrasında Kullanıcıya Arayüz Üzerinden Dil Seçimi Yaptırılmakta ve Dokümanın Metnini İçeren TXT Formatında Olan Dosya Alınmaktadır. Arayüzden Seçilen Dil ile Alınan Dosyadaki Metin Dilinin Eşleşmesi Amacıyla Bir Kontrol Yapılmaktadır. Daha Sonra Alınan Metin Üzerinde Ön İşleme İşlemleri Uygulanmaktadır. Ön İşleme İşlemleri Uygulanmış Metin Üzerinde, Metin Dili İngilizce ise TextRank ve RAKE Algoritmaları Uygulanmaktadır. Metin Dili Türkçe ise Sadece TextRank Algoritması Uygulanmaktadır. Algoritmaların Uygulanmasından Sonra Sonuçlar Anahtar Kelimelerin Değerlerine Göre Büyükten Küçüğe Sıralanarak Arayüzde Gösterilmiştir. Arayüz Kısmından İstenirse Sonuçlar Veritabanına Kaydedilebilmekte ve Web Tarayıcısı Aracılığıyla Veritabanı Görüntülenebilmektedir. Aşağıdaki Resimde Projenin Genel Bir Akış Diyagramı Görülmektedir.
Kullanılan Programlama Dili, Platform ve Kütüphaneler
Projede JetBrains Firmasına Ait PyCharm Programlama Platformu Kullanılmıştır. PyCharm Platformu, Python için Çeşitli Özellikler İçermektedir. Otomatik Kod Tamamlama, Harici Kütüphane Yükleme Arayüzü, Debug Desteği Gibi Özellikler İçermesinden Dolayı Tercih Edilmiştir. Bu Özellikler Sayesinde Zamandan Tasarruf Edilmiş ve Kod Kalitesi Arttırılmıştır. Projede PyCharm 2020.3.3 Sürümü Kullanılmıştır.
Projedeki Aşamaların Uygulanabilmesi için Python Programlama Diline Ait Harici Kütüphaneler Kullanılmıştır. Bu Kütüphaneler Özet Bir Şekilde Aşağıdaki Tabloda Gösterilip Ayrıntıları Alt Başlıklarda Anlatılmıştır.
Kullanılan
Harici Kütüphaneler |
Çalışmada Kullanılma
Amacı |
Trankit |
Metin Ön İşleme İşlemleri |
NumPy |
Graf Oluşturma ve Matris İşlemleri |
PyQt5 |
Grafiksel Arayüz Oluşturma |
SQLite |
Veritabanı İşlemleri |
Flask |
Veritabanını Görüntüleme |
Langdetect |
Metinin Dilini Algılama |
Trankit
Trankit, Çok Dilli Doğal Dil İşleme (NLP) İşlemleri için Kullanılan Transformer Model Tabanlı Bir Kütüphanedir. Trankit Kütüphanesi, NLP Görevleri için XLM-RoBERTa Derin Öğrenme Ağ Modelini Kullanmaktadır. NLP İşlemlerinin Sonucunda ise Hiyerarşik Olarak Bir Python Sözlük Yapısı Geri Döndürmektedir. XLM-RoBERTa, 2 TB’tan Fazla Filtrelenmiş CommonCrawl Verisi Kullanılarak 100 Dil için Önceden Eğitilmiş Bir Derin Öğrenme Ağ Modelidir. Aşağıdaki Resimde Trankit Kütüphanesinin Genel Mimarisi Verilmiştir.
Trankit Kütüphanesi ile Metin Ön İşleme İşlemlerindeki Başarının Arttırılması Amaçlanmıştır. Projede Metin Ön İşleme İşlemleri için Birçok Doğal Dil İşleme (NLP) Kütüphanesi Denenmiş, Fakat İngilizce ve Türkçe Dilleri için En Başarılı Sonucu Veren Kütüphane Trankit Kütüphanesi Olmuştur. Ayrıca Trankit Kütüphanesinin İngilizce ve Türkçe Dillerini Desteklemesi Tercih Edilme Sebeplerindendir. Projede Trankit 0.3.7 Sürümü Kullanılmıştır.
NumPy
NumPy Bilimsel Hesaplamalar, Çok Boyutlu Matris İşlemleri, Sıralama İşlemleri Gibi Amaçlar için Kullanılan Bir Kütüphanedir. Numpy Kütüphanesi Kullanılmadan da Bu İşlemler Yapılabilmektedir, Fakat NumPy İşlevsellik ve Hız Açısından Avantaj Oluşturmaktadır. NumPy Kütüphanesinin Temelinde Matrisler ve Matrisler ile Yapılan Matematiksel İşlemler Vardır.
TextRank Algoritmasında Grafı Temsil Eden Matrisi Oluşturmak ve Matris Üzerinde Matematiksel İşlemler Yapılması için Projede NumPy Kütüphanesi Kullanılmıştır. Ayrıca TextRank ve RAKE Algoritmaları ile Bulunan Anahtar Kelimelerin Değerlerini Sıralama için de Kullanılmıştır. Projede NumPy 1.20.1 Sürümü Kullanılmıştır.
PyQt5
PyQt5, Grafiksel Arayüz (GUI) Oluşturma Amaçlı Kullanılan Bir Kütüphanedir. Grafiksel Arayüz, Sadece Python Kodu Yazılarak veya PyQt5 Kütüphanesi ile Hazır Gelen Qt Designer Programı Kullanılarak Arayüzün Tasarımı Yapılıp Python Kodlarına Çevrilerek Oluşturulabilir.
Projede Kullanıcı ile Etkileşimin Daha İyi ve Hızlı Sağlanması, Çalışmada Bulunan Anahtar Kelimelerin Arayüzde Gösterilmesi ve Sonuçları Veritabanına Kaydetme İşlemleri için PyQt5 Kütüphanesi ile Arayüz Oluşturulmuştur. Qt Designer Programı ile Arayüz Tasarlanıp Python Kodlarına Çevrilerek Kullanılmıştır. Projede PyQt5 5.15.2 Sürümü Kullanılmıştır.
SQLite
SQLite, Veritabanı İşlemleri için Kullanılan Tamamen Ücretsiz, Sunucu Yazılımı Gerektirmeyen, Dünyada En Çok Kullanılan İlişkisel Bir SQL Veritabanı Motorudur. SQLite Diğer Veritabanı Motorlarından Farklı Olarak Ayrı Bir Sunucuya İhtiyaç Duymaz ve Doğrudan Disk Dosyalarına Yazar ve Okur. SQL Veritabanı Tek Bir Dosyada Tutulur.
Projede Elde Edilen Sonuçların Kaybolmaması ve Tek Bir Dosyada Tutulması için SQLite Veritabanı Kullanılmıştır. Dokümanın Orijinal Metni, Orijinal Metindeki Kelimelerin Köklerinin Bulunması (Lemmatization) İşleminden Sonra Oluşan Metin, Orijinal Metindeki Kelimelerin Türleri (POS) ve Metnin Anahtar Kelimeleri Veritabanına Eklenebilmektedir.
Flask
Flask, Armin Ronacher Tarafından Geliştirilen Bir Web Geliştirme Çatısıdır. Diğer Web Geliştirme Kütüphanelerine Göre Basit ve Hazır Yapısıyla Öne Çıkmaktadır. Flask Kütüphanesi Netflix, Reddit, Mozilla, Red Hat Gibi Global Şirketler Tarafından Kullanılmaktadır.
Projede Veritabanının Web Tarayıcısı Üzerinden Görüntülenmesi için Flask Kütüphanesi Kullanılmıştır. Ayrıca Flask Kütüphanesinin Bir Uzantısı Olan SQLAlchemy, Veritabanı İşlemlerinde SQLite Kütüphanesi ile Birlikte Kullanılmıştır.
Langdetect
Langdetect, Metin Dilinin Otomatik Olarak Algılanması için Kullanılan Bir Kütüphanedir. Projede Girdi Olarak Verilen Metinin Dilini Otomatik Bir Şekilde Algılanarak Arayüzden Seçilen Dil ile Eşleşip Eşleşmediğini Kontrol Etmek Amacıyla Kullanılmıştır.
Doküman Dosyasının Seçilmesi
Metin Ön İşleme
Metin ön işleme, projenin en önemli aşamalarından biridir. Metnin TextRank ve RAKE algoritmaları için uygun formata getirilmesi için gerekli bir işlemdir. Metinden çıkarılmak istenen kelimelerin veya kelime gruplarının doğruluğunu arttırır. Böylece algoritmaların metni işlemesinin kolaylaştırılması amaçlanmıştır.
Metin ön işleme, anahtar kelimelerin kalitesini doğrudan etkiler. Projede metin ön işleme işlemlerini uygulamak için Trankit kütüphanesi kullanılmıştır. Metin ön işleme, birbirine bağlı 4 işlemden oluşmaktadır. Projenin buradan sonraki aşamaları aşağıdaki metin üzerinden anlatılacaktır.
Metindeki Kelimeleri Parçalara Ayırma (Tokenization)
TextRank ve RAKE algoritmalarında kelimeler için büyük-küçük harf duyarlılığı vardır. Örnek olarak "Car" kelimesi ile "car" kelimesi farklı olarak nitelendirilir. Bu yüzden metindeki kelimeler küçük harfe dönüştürülür.
Bir metindeki kelimelerin makine tarafından okunabilir olması gerekir ve potansiyel aday anahtar kelimelerin belirlenmesi için ilk aşama metindeki kelimeleri parçalara ayırıp bir liste oluşturmaktır. Listedeki her bir elamana "Token" adı verilmektedir. Projede ayrıca İngilizce metinler için karakter filtresi uygulanmıştır. Örnek olarak İngilizce metinlerde "ı" harfi kabul edilmemektedir, bu harf herhangi bir kelimede varsa harf çıkartılır. Fakat Türkçe dili için Türkçe metinlerin içinde İngilizce kelimelerin geçebileceği ihtimali düşünülerek karakter filtresi uygulanmamıştır. İngilizce dili için kabul edilen harfler ve özel karakterler aşağıdaki resimde belirtilmiştir.
Örnek metin üzerinde tokenization işlemi uygulandıktan sonra elde edilen kelime listesi.
Metindeki Kelimelerin Türlerini Belirleme (POS Tagging)
Metindeki her bir kelimenin türünün bulunması işlemine POS Tagging denilmektedir. Metinden istenilen türdeki kelimelerin alınması için gerekli bir işlemdir. Her dilin gramer yapısı farklı olduğu için POS Tagging işleminin başarısı dilden dile farklılık gösterebilmektedir. Kelimelerin türleri bulunduktan sonra metinden istenilen türdeki kelimeler alınacağı için POS Tagging işleminin başarısı çok önemlidir, çünkü anahtar kelimelerin kalitesini doğrudan etkilemektedir. Kelimelerin türleri cümlede geçen anlamlarına göre bulunur. Örnek vermek gerekirse "Green car is nice" cümlesinde "Green" kelimesi sıfattır. Fakat "Green is a beautiful color" cümlesindeki "Green" kelimesi ise isimdir.
Trankit kütüphanesi kelime türlerini ifade etmek için UPOS Tagset kullanmaktadır. UPOS Tagset, aşağıdaki tabloda gösterilmiştir.
Kelime Türü |
Anlam |
İngilizce Kelime Örnekleri |
Türkçe Kelime Örnekleri |
ADJ |
Adjective (Sıfat) |
big, old, green |
büyük, eski, yeşil |
ADP |
Adpoint (Edat) |
by, to, of |
ile, gibi, için |
ADV |
Adverb (Zarf) |
very, then, never, if |
çok, sonra, hiç, eğer |
AUX |
Auxiliary (Yardımcı) |
has, is, must |
- |
CONJ |
Conjuction (Bağlaç) |
and, or, but |
ve, veya, fakat |
DET |
Determiner (Belirleyici) |
Every, which |
her, hangi |
INTJ |
Interjection (ünlem) |
hey, psst |
hey,pişt |
NOUN |
Noun (isim) |
tree, word, cat |
ağaç, kelime, kedi |
NUM |
Numeral (Rakam) |
three, 3,
III |
üç, iki, |
PART |
Particle (Parçacık) |
‘s |
- |
PRON |
Pronoun (zamir) |
he, my, us |
o, benim, bizim |
PROPN |
Propernoun (Özel isim) |
John, Madrid |
Mustafa, İstanbul |
PUNCT |
Punctuation(Noktalama) |
.,!() |
.,!() |
SYM |
Symbol (Sembol) |
$, %, +, - |
$, %, +, - |
VERB |
Verb (Fiil) |
play, run, eat |
oynamak, koşmak, yemek |
X |
Other (Diğer) |
Kelime türü bulunamamış kelime |
Kelime türü bulunamamış kelime |
Projede kelime türü olarak İngilizce ve Türkçe metinler için; isim (Noun), sıfat (Adjection), özel isim (Propernoun) olan kelimeler alınarak çıkarılacak anahtar kelimelerin kalitesi arttırılmaya çalışılmıştır. Örnek metin üzerinde Tokenization işlemi uygulandıktan sonra elde edilen kelime listesine Trankit kütüphanesi ile POS Tagging işlemi uygulanarak aşağıdaki liste elde edilmiştir.
Kelime listesine POS Tagging işlemi uygulandıktan sonra elde edilen liste
Metindeki Kelimelerin Kökünü Bulma (Lemmatization)
Metindeki her bir kelimenin cümlede geçtiği anlama göre kelime köklerinin bulunması işlemine Lemmatization denilmektedir. Kelime kökleri bulunurken cümledeki anlamına göre bulunması önemlidir, çünkü kelimenin yanlış bir kökü bulunursa kelimenin cümlede geçen anlamı kaybolabilir. Örnek vermek gerekirse "Kitapçıya gideceğim" cümlesindeki "Kitapçıya" kelimesinin cümlede geçen anlamına göre kökü "Kitapçı" kelimesi olmalıdır. "Kitapçıya" kelimesinin cümledeki anlamına bakılmasaydı kökü "Kitap" kelimesi bulunabilirdi. Bu yüzden kelimenin cümlede geçen anlamına göre kökünün bulunması anahtar kelimelerin kalitesini arttırır ve anlam kaybolması ihtimalini düşürür. Kelime köklerinin bulunması her dil için farklılık göstermektedir. Metindeki kelimelerin kökünü bularak anahtar kelimeler çıkarılırken kelimelerin metinde geçtiği gibi alınmamasını sağlayıp anahtar kelimelerin kalitesi arttırmış oluyoruz. Örnek metin için Lemmatization işlemi uygulandığında elde edilen liste aşağıda gösterilmiştir.
Örnek metin üzerinde Lemmatization işlemi uygulandıktan sonra elde edilen kelime listesi
Metindeki Kelimeleri Türüne Göre Filtreleme ve Etkisiz Kelimeleri Çıkarma (Stopword)
Metindeki tek başına anlamsız ve istenmeyen kelime türünde olan tüm kelimelere etkisiz kelime (stopword) denilmektedir. Etkisiz kelimelere edat, bağlaç, zarf, zamir gibi kelime türündeki kelimeler ve noktalama işaretleri örnek verilebilir. Bu kelimeler genelde metinde yüksek sıklıkta geçmektedir. Metinden anahtar kelime çıkarabilmek için etkisiz kelimelerin metinden çıkarılması gerekmektedir.
Metin ön işleme işlemleri sonucunda metinden istenilen kelimeler elde edilmektedir. İşlenmiş metin listesinde tekrar eden kelimeler çıkarılarak aşağıdaki eşsiz işlenmiş metin listesi elde edilir.
Eşsiz İşlenmiş Metin Listesi
TextRank ve RAKE Algoritmasının Uygulanması
TextRank Algoritmasının Uygulanması
TextRank algoritması, işlenmiş metin listesi ve eşsiz işlenmiş metin listelerini kullanarak kelimelerin değerini hesaplamaktadır. İşlenmiş metin listesi metindeki istenilen kelimeleri içeren listedir ve listedeki kelime sırası, kelimelerin metinde geçtiği sıradadır. Eşsiz işlenmiş listesi, işlenmiş metin listesindeki tekrar eden kelimelerin çıkartılmış halidir ve kelime bağlantıları bu liste üzerinden alınacaktır.
TextRank Algoritması, İşlenmiş Metin ve Eşsiz İşlenmiş Metin Listesi üzerinden adım adım anlatılmak istenilirse;
- Bir pencere boyutu belirlenir. Eşsiz işlenmiş metin listesindeki kelimelerin bağlantıları işlenmiş metin listesi üzerinde baştan sona doğru hareketli bir pencere içinde aranır. Kelime bağlantısını işlenmiş metin listesi içinde aramamızın sebebi bir bağlantı birden çok yerde bulunabilir. Başlangıçta kelime bağlantılarının değeri 0’dır ve bağlantılar yönsüzdür. Çalışmada pencere boyutu 2 olarak belirlenmiştir.
- Kelime bağlantısı işlenmiş metin listesinde bir pencere ile aranırken, bağlantı pencere içinde bulunursa kelimeler arasında bir bağlantı var olduğu anlamına gelir ve ilgili bağlantının değerine +1 eklenir. Eşsiz metin listesindeki ilk bağlantı "keyword-keyword" şeklindedir, fakat kelimenin kendisi ile bağlantısı olamayacağından bu bağlantının değeri hesaplanmaz ve bağlantı değeri 0 olarak bırakılır. Eşsiz metin listesindeki ikinci bağlantı "keyword-document" şeklindedir. Bu bağlantı işlenmiş metin listesinde ilk pencere (['keyword', 'document']) içinde aranır. Kelime bağlantısı pencere içinde bulunduğundan bağlantının değerine +1 eklenir. Daha sonra bu bağlantı işlenmiş metin listesindeki ikinci pencere (['document', 'keyword']) içinde aranır. Bağlantılar yönsüz olduğundan bu pencere içinde de bağlantı bulunmuş olur ve bağlantı değerine +1 eklenerek bağlantı değeri 2 olur. Bağlantı işlenmiş metin listesindeki üçünce pencere (['keyword', 'extraction']) içinde aranır ve bağlantı bu pencere içinde bulunamamıştır. Bağlantı aynı mantık ile işlenmiş metin listesinin sonuna kadar pencereler içinde aranır ve bağlantının nihai değeri bulunmuş olur. Eşsiz metin listesindeki ikinci bağlantı "keyword- extraction" şeklindedir ve kelime bağlantısı işlenmiş metin listesinde baştan sona doğru pencereler içinde aranarak bağlantının nihai değeri hesaplanır. Eşsiz işlenmiş metin listesindeki tüm kelime bağlantıları için aynı işlemler uygulanarak bağlantıların değerleri bulunmuş olur.
- Eşsiz işlenmiş metin listesindeki tüm kelime bağlantılarının değerleri hesaplandıktan sonra bir bağlantı matrisi oluşturulur. Aşağıdaki resimde oluşturulan matris gösterilmiştir.
- Bağlantı Matrisindeki satırlar kelimeleri temsil eder. Sütunlar ise kelimenin bağlantı yaptığı diğer kelimeleri temsil eder. Örnek olarak matristeki 1. Satır "keyword" kelimesine aittir. Matrisin 1. satır, 1. sütunundaki bağlantı "keyword-keyword" şeklindedir ve kelimenin kendisi ile bağlantısı olamayacağından dolayı değeri 0’dır. Matrisin 1. Satır 2. Sütunundaki bağlantı ise "keyword-document" şeklindedir ve değeri 2’dir. Tüm kelime bağlantılarının değerleri bu matriste tutulur. Bağlantı Matrisi, bağlantılar yönsüz olduğundan dolayı simetrik bir matristir.
- Eşsiz işlenmiş metin listesindeki kelimelerin bağlantı sayısı bulunur. Örnek olarak "keyword" kelimesinin bağlantı sayısı bağlantı matrise göre 3 bulunur. Tüm kelimelerin bağlantı sayısı aşağıda gösterilmiştir.
- Kelimelerin değerleri TextRank Formülü kullanılarak bulunur. Kelimelerin değerleri tek boyutlu bir matriste tutulur ve başlangıçta tüm kelimelerin değerleri 1’dir. Sönümleme faktörü değeri (d) 0,85 olarak seçilmiştir. Örnek olarak "keyword" kelimesinin değeri hesaplanmak istenilirse; "keyword" kelimesinin bağlantı matrisinde ilk bağlantı yaptığı kelime "document" kelimesidir ve bağlantının değeri 2’dir. Bağlantı matrisinde 0 olan değerler hesaplanmayarak atlanır. Bağlantı değeri (2), "document" kelimesinin bağlantı sayısına (3) bölünür ve bölüm "document" kelimesinin değeri (1) ile çarpılır. Sonuç, ilk değeri 0 olan toplam değişkenine eklenir. "keyword" kelimesinin bağlantı matrisinde ikinci bağlantı yaptığı kelime "extraction" kelimesidir ve aynı işlemler bu bağlantı için de yapılıp sonuç toplam değişkenine eklenir. "keyword" kelimesinin tüm bağlantıları için bu işlemler yapılıp toplamları bulunduktan sonra { (1-d)+d×toplam } formülü uygulanarak "keyword" kelimesinin değeri bulunmuş olur. "keyword" kelimesinin değeri bulunurken yapılan işlemler, bağlantı matrisi satırlarındaki tüm kelimeler için yapılır ve kelime değerleri bulunarak birinci yineleme tamamlanmış olur. Daha sonra ikinci yinelemeye geçilir ve aynı işlemler ile kelime değerleri hesaplanır. Her yineleme yapıldığında bir önceki yinelemede hesaplanan kelime değerleri listesi ile geçerli yinelemede hesaplanan kelime değerleri listesi karşılaştırılır. Kelime değerlerinde, eşik değerden (0.0001) büyük bir değişim olmazsa algoritma durdurulur ve nihai kelime değerleri elde edilmiş olur. Bu örnek için algoritma 23. yinelemede durmuştur.
- Bulunan kelime değerleri, İngilizce metinler için RAKE algoritmasıyla bulunacak olan kelime gruplarının değerlerinin hesaplanmasında kullanılır. Türkçe dili için RAKE algoritması uygulanmadığından dolayı NumPy kütüphanesi aracılığı ile kelime değerleri büyükten küçüğe doğru sıralanmıştır. Eşsiz işlenmiş listesi boyutuna göre aday anahtar kelimelerin ilk n kelimesi alınarak anahtar kelimeler arayüz ekranında gösterilmiştir. İşlenmiş metin listesi ve Eşsiz metin listesine göre TextRank Algoritması uygulandığında bulunan kelime değerleri aşağıdaki tabloda gösterilmiştir.
Kelime |
Değer |
keyword |
1.2174 |
document |
1.2174 |
extraction |
0.8884 |
process |
0.9257 |
relevant |
0.9368 |
word |
0.9257 |
phrase |
0.8884 |
RAKE Algoritmasının Uygulanması
Projede RAKE algoritmasının sadece etkisiz kelimelere göre kelime grupları oluşturma kısmı alınmıştır. Kelime gruplarının değerleri, TextRank algoritmasında bulunan kelimelerin değerlerine göre hesaplanmıştır.
Örnek metin üzerinde Lemmatization işlemi uygulandıktan sonra elde edilen kelime listesi üzerinde RAKE algoritması uygulanırsa aşağıdaki liste elde edilir.
Aday anahtar kelime grupları listesinde görüldüğü üzere kelime listesi etkisiz kelimelere ve noktalama işaretlerine göre kelime gruplarına ayrılmıştır. Örnek olarak kelime listesindeki "process" kelimesinden önceki ve sonraki kelime, etkisiz kelimedir. Dolayısıyla Aday Anahtar Kelime olarak belirlenmiştir.
Projede anahtar kelimelerin kalitesinin arttırılması amacıyla Aday Anahtar Kelime Grupları listesi üzerinde işlemler yapılmıştır. Bu işlemler adım adım anlatılmak istenilirse;
- Aday anahtar kelime grupları listesinde tekrar eden elemanlar çıkarılmıştır.
- Aday anahtar kelime grupları listesindeki kelime grupları içindeki kelimelerin türlerine göre kurallar belirlenmiştir. Birinci kural; kelime grubunda en az bir isim veya özel isim varsa kelime grubunun son kelimesi sıfat olamaz. İkinci kural; kelime grubunda 4’den fazla kelime olamaz. Üçüncü kural; kelime grubunda 3’den fazla isim olamaz. Bu kurallara uymayan bir kelime grubu tespit edilirse bu kelime grubu parçalara ayrılarak aday anahtar kelime grupları listesine eklenir. Ayrıca kelime grubu da aday anahtar kelime grupları listesinden çıkarılır.
- Aday anahtar kelime grupları listesine 2. adımdaki kurallardan dolayı eklemeler olabileceğinden tekrar eden elemanlar çıkarılmıştır.
- Aday anahtar kelime grupları listesindeki bir kelime grubu tek bir kelimeden oluşuyor ve bu kelime başka bir kelime grubunda geçiyorsa bu kelime listeden çıkartılmıştır. Örnek olarak Aday anahtar kelime grupları listesindeki "keyword" kelimesi, "keyword extraction" kelime grubunda geçmektedir. Bu nedenle "keyword" kelimesi listeden çıkartılmıştır.
Yukarıdaki listede bulunan kelime gruplarının değerleri, TextRank algoritmasında bulunan kelimelerin değerlerine göre hesaplanmıştır. Kelime gruplarının hesaplanan değerleri aşağıdaki tabloda gösterilmiştir.
Aday anahtar kelime grubu |
Değer |
document |
1.2174 |
keyword
extraction |
2.1059 |
process |
0.9257 |
relevant |
0.9368 |
word |
0.9257 |
phrase |
0.8884 |
Sonuçların Arayüzde Gösterilmesi
Projede metinden çıkarılan anahtar kelimeler değerlerine göre büyükten küçüğe sıralanarak arayüzde gösterilmektedir. Arayüzde gösterilecek anahtar kelime sayısı, RAKE algoritması ile bulunan aday anahtar kelime grupları listesinin boyutuna bağlı olarak değişmektedir. Örnek olarak yukarıdaki tabloda 6 adet aday anahtar kelime grubu bulunmuştur, bu nedenle en değerli 2 kelime olan “keyword extraction” ve “document” kelimeleri anahtar kelime olarak belirlenip arayüzde gösterilmektedir. Aşağıdaki resimde sonuçların gösterildiği arayüz gösterilmektedir.
Sonuçları veritabanına kaydetme ve veritabanını görüntüleme işlemleri de arayüz üzerinden yapılmaktadır. Sonuçlar arayüz aracılığı ile veritabanına kayıt edilebilmekte ve veritabanı web tarayıcısında görüntülenebilmektedir. Aşağıdaki resimde web tarayıcısında görüntülenen veritabanı gösterilmiştir.
Anahtar kelimelerin kalitesini arttırabilmek için kelimelerin metinde geçtiği konumlar dikkate alınabilir. Ayrıca metin içinde bazı bölümlerdeki (kaynakça, içindekiler, başlıklar gibi) kelimelerin değerleri daha farklı bir şekilde hesaplanarak anahtar kelimelerin kalitesi arttırabilir.
Projede Test Edilen Metinler ve Sonuçları
Metin 1
Anahtar kelimeler, doküman içeriğindeki konuyu anlamamızı büyük ölçüde kolaylaştırır. Doküman içeriğinin tamamını okumaya gerek kalmadan doküman hakkında çıkarımlar yapılabilir. Anahtar kelimeler; arama motoru optimizasyonu (SEO) işlemlerinde, yorum ve sosyal medya analizlerinde, dokümanın konusunun bulunması ve daha sonra konuya göre doküman sınıflandırma işlemleri gibi birçok yerde kullanılabilir.
Projenin birinci kısmında doküman üzerinde metin ön işleme işlemleri uygulanmıştır. Metin ön işleme, birbirine bağlı işlemlerden oluşmaktadır. Bu işlemler sırasıyla; metni küçük harflere dönüştürme, metindeki her bir kelimeyi ayırma, kelimelerin türlerini belirleme, kelimelerin kök halini bulma, metindeki etkisiz kelimeleri bulma ve metinden çıkarma, metinden istenen türdeki kelimelerin alınması ve tekrar eden kelimelerin çıkarılmasıdır.
Projenin ikinci kısmında metin ön işleme işlemleri ile elde edilen kelimeler kullanılarak otomatik anahtar kelime çıkarma algoritmaları ile metinden anahtar kelimeler çıkarılmaya çalışılmıştır. Bu çalışmada otomatik anahtar kelime çıkarma algoritmalarından TextRank ve RAKE kullanılmıştır. TextRank algoritması ile kelimelerin değerleri hesaplanmıştır. RAKE algoritması ile metin, dokümandaki etkisiz kelimelere göre kelime gruplarına ayrılmıştır. Kelime gruplarının değerini bulabilmek için TextRank algoritması ile hesaplanan kelime değerleri kullanılmıştır. Son olarak kelime gruplarının değerleri büyükten küçüğe sıralanarak nihai anahtar kelimeler bulunmuştur.
Proje İngilizce ve Türkçe dokümanları desteklemektedir. İngilizce dokümanlarda TextRank ve RAKE algoritması birlikte kullanılmıştır. Bu nedenle anahtar kelimelerde birden fazla kelime bulunabilmektedir. Türkçe dokümanlarda ise sadece TextRank algoritması kullanılmıştır. Bunun nedeni RAKE algoritmasının Türkçe dokümanlarda iyi performans vermemesidir.
Projede işlemlerin görselleştirilmesi amacıyla arayüz geliştirilmiştir. Arayüz üzerinden dil seçimi yapıldıktan sonra gerekli formatta doküman dosyası verildiğinde, bulunan anahtar kelimeler sıralanmış şekilde arayüzde gösterilmektedir. Ayrıca sonuçlar arayüz aracılığı ile veritabanına kayıt edilebilmekte ve veritabanı, arayüz üzerinden gerekli butona basılarak web tarayıcısı aracılığı ile görüntülenebilmektedir.
Anahtar Kelimeler
- kelime
- doküman
- metin
- işlem
- anahtar
Metin 2
Attorneys general of 44 US states and territories told Facebook CEO Mark Zuckerberg to ditch plans to create a version of Instagram for children. They wrote a letter stating social media is detrimental to children “who are not equipped to navigate the challenges of having a social media account. ” They also said that Facebook has not protected children in the past, such as when they created a version of Facebook Messenger for children. They described that children were able to bypass the restrictions to join group chats with strangers who were not approved by their parents. Facebook responded it was exploring the idea of Instagram for children, it would protect their safety and privacy, and it would not show advertising.
Anahtar Kelimeler
- facebook ceo mark zuckerberg
- facebook messenger
- social media account
- child
Metin 3
Managers of the best football clubs in Europe have a plan. They want to make a European Super League. The best and biggest teams will be in the new league. The idea starts more than 30 years ago. The clubs want to start the league in 2021. Many people worry that it will change the world of football. 6 British teams sign the deal. Some of these teams are Arsenal, Chelsea, and Liverpool. 6 other teams from Spain and Italy sign, too. Some are Real Madrid, Barcelona, and Juventus. Then football fans get very angry last week. They do not agree with the new league. Some players from the best teams are also not happy. The British prime minister wants to make a new law. This law will make it impossible to make the new league.
Anahtar Kelimeler
- best football club
- best team
- new league
- british team
- biggest team
- new law
- british prime minister
- european super league
Metin 4
A Black Hawk is a helicopter. Soldiers use it. Last week, the helicopter flies without pilots. It happens at Fort Campbell, US. There are two flights. One flight is 30 minutes long. The helicopter flies through a city. It is not a real city. A computer makes it. Then, the helicopter lands. The helicopter uses special technology. The technology makes it possible to fly without a pilot. A computer controls it. The technology is very good for pilots. The helicopter can fly at night. It can fly when the weather is bad. Pilots can do other things.
Anahtar Kelimeler
- helicopter
- pilot
- real city
- special technology
- Fort Campbell
- Black Hawk
- computer
Proje Kodları ve Projenin Çalıştırılması
Python 3.8.0 veya Üstü Gerekiyor.
- Repoyu git clone Komutunu Kullanarak İndirin.
- İndirdiğiniz Proje Klasöründe CLI Açın.
- Pipenv Yoksa Onu Yüklemeniz Gerekir (Komut: pip install pipenv).
- python -m pipenv install --python 3.8.0 (Başka Bir Python Sürümü Kullanıyorsanız Buraya Onu Yazın)
- pipenv shell
- python main.py
Not: Program İlk Çalıştırıldığında Yaklaşık 1,2 GB Boyutunda Dosya İndirecektir. Bu Tek Seferlik Bir İşlemdir.
Kaynaklar
- MonkeyLearn, Keyword Extraction [online]. Web adresi: https://monkeylearn.com/keyword-extraction/ [Ziyaret Tarihi: 3 Kasım 2020].
- YILDIRIM, E., 2020, Anahtar Kelime Nedir? 5 Adımda Anahtar Kelime Seçimi [online]. Web adresi: https://earnado.com/tr/anahtar-kelime-nedir-5-adimda-etkili-anahtar-kelime-secimi/ [Ziyaret Tarihi: 3 Kasım 2020].
- ÇAY, G., 2020, Derin Öğrenme Yöntemiyle Akademik Makaleler İçin Anahtar Kelime Çıkarımı, Yüksek Lisans Tezi, Fırat Üniversitesi.
- LIANG, X., 2019, Understand TextRank for Keyword Extraction by Python [online]. Web adresi: https://towardsdatascience.com/textrank-for-keyword-extraction-by-python-c0bae21bcec0 [Ziyaret Tarihi: 4 Kasım 2020].
- BORCAN, M., 2020, Automated Python Keywords Extraction: TextRank vs Rake [online]. Web adresi: https://programmerbackpack.com/automated-python-keywords-extraction-textrank-vs-rake/ [Ziyaret Tarihi: 4 Kasım 2020].
- MIHELCEA, R. and Tarau, P., 2004, Textrank: Bringing Order into Texts, Proceedings of the 2004 Conference on Empirical Methods in Natural Language Processing, July 2004 Barcelona, Spain. 404-411.
- NEGRO, A. and KŮS, V. and MARCHI, M. and WILLEMSEN, C., 2017, Efficient unsupervised keywords extraction using graphs [online]. Web adresi: https://graphaware.com/neo4j/2017/10/03/efficient-unsupervised-topic-extraction-nlp-neo4j.html [Ziyaret Tarihi: 10 Kasım 2020].
- YANG, S., 2020, Keyword Extraction:from TF-IDF to BERT [online]. Web adresi: https://towardsdatascience.com/keyword-extraction-python-tf-idf-textrank-topicrank-yake-bert-7405d51cd839 [Ziyaret Tarihi: 27 Kasım 2020].
- WEINSTOCK-HERMAN, E., 2016, Automated Keyword Extraction TF-IDF, RAKE, and TextRank [online]. Web adresi: http://blogs.lessthandot.com/index.php/artificial-intelligence/automated-keyword-extraction-tf-idf-rake-and-textrank/ [Ziyaret Tarihi: 28 Kasım 2020].
- ROSE, S. and ENGEL, D. and CRAMER, N. and COWLEY, W., 2010, Automatic Keyword Extraction from individual Documents, Text Mining:Applications and Theory. 1-20.
- BİRDEVRİM, A.S. and BOYACI, A. and THANI, D., 2018, İYİLEŞTİRİLMİŞ OTOMATİK ANAHTAR KELİME ÇIKARIMI(BRAKE), İstanbul Ticaret Üniversitesi Teknoloji ve Uygulamalı Bilimler Dergisi, 1(1), 11-19.
- NASKAR, A., Automatic Keyword extraction using RAKE in Python [online]. Web adresi: https://thinkinfi.com/automatic-keyword-extraction-using-rake-in-python/ [Ziyaret Tarihi: 5 Kasım 2020].
- WIKIPEDIA ONLINE ENCYCLOPEDIA, tf-idf [online]. Web adresi: https://en.wikipedia.org/wiki/Tf%E2%80%93idf [Ziyaret Tarihi: 29 Kasım 2020].
- ALEX, A., 2020, Keyword Extraction Techniques using Python [online]. Web adresi: https://medium.com/analytics-vidhya/keyword-extraction-techniques-using-python-edea5fc35678 [Ziyaret Tarihi: 29 Kasım 2020].
- GUAN, J., 2016, A Study of the Use of Keyword and Keyphrase Extraction Techniques for Answering Biomedical Questions, Thesis(MS), Macquarie University.
- ŞEKER, Ş.E., 2012, TF-IDF [online]. Web adresi: http://bilgisayarkavramlari.com/2012/10/22/tf-idf/ [Ziyaret Tarihi: 5 Kasım 2020].
- DAYIBAŞI, O., 2015, TF-IDF (Term Frequency – Inverse Document Frequency) [online]. Web adresi: https://medium.com/algorithms-data-structures/tf-idf-term-frequency-inverse-document-frequency-53feb22a17c6 [Ziyaret Tarihi: 30 Kasım 2020].
- Python, The Python Tutorial [online]. Web adresi: https://docs.python.org/3/tutorial/index.html [Ziyaret Tarihi: 2 Kasım 2020].
- PyCharm, PyCharm Features [online]. Web adresi: https://www.jetbrains.com/pycharm/features/ [Ziyaret Tarihi: 2 Kasım 2020].
- NGUYEN, M.V. and LAİ, V. and VEYSEH, A.P.B. and NGUYEN, T.H., 2021, Trankit: A Light-Weight Transformer-based Toolkit for Multilingual Natural Language Processing, Proceedings of the 16th Conference of the European Chapter of the Association for Computational Linguistics: System Demonstrations, April 2021 Online. 80-90.
- Hugging Face, XLM-RoBERTa [online]. Web adresi: https://huggingface.co/transformers/model_doc/xlmroberta.html [Ziyaret Tarihi: 22 Şubat 2021].
- NumPy, What is NumPy? [online]. Web adresi: https://numpy.org/doc/stable/user/whatisnumpy.html [Ziyaret Tarihi: 1 Aralık 2020].
- PyQt, PyQt v5.15 Reference Guide - Introduction [online]. Web adresi: https://www.riverbankcomputing.com/static/Docs/PyQt5/introduction.html [Ziyaret Tarihi: 1 Mart 2021].
- Yapay Zeka Labs, 2018, PyQt5 ile Grafiksel Kullanıcı Arayüzü (GUI) Geliştirme [online]. Web adresi: http://yapayzekalabs.blogspot.com/2018/09/pyqt5-ile-grafiksel-kullanc-arayuzu-gui.html [Ziyaret Tarihi: 2 Mart 2021].
- SQLite, Abaut SQLite [online]. Web adresi: https://www.sqlite.org/about.html [Ziyaret Tarihi: 18 Mart 2021].
- Flask, Foreword [online]. Web adresi: https://flask.palletsprojects.com/en/2.0.x/foreword/ [Ziyaret Tarihi: 23 Mart 2021].
- MUTLUER, Y., 2020, Flask Nedir? Django ile Farkları Neler? [online]. Web adresi: https://teknoloji.org/flask-nedir-django-ile-farklari-neler/ [Ziyaret Tarihi: 24 Mart 2021].
- Flask, Flask-Sqlalchemy [online]. Web adresi: https://flask-sqlalchemy.palletsprojects.com/en/2.x/ [Ziyaret Tarihi: 26 Mart 2021].
- PyPI, langdetect [online]. Web adresi: https://pypi.org/project/langdetect/ [Ziyaret Tarihi: 28 Mart 2021].
- BİRDEVRİM, A.S., 2018, BİLİMSEL YAYINLARDAN ANAHTAR KELİME ÇIKARIMI, Yüksek Lisans Tezi, İstanbul Ticaret Üniversitesi.
- NASKAR, A., Complete Guide for Natural Language Processing in Python [online]. Web adresi: https://thinkinfi.com/complete-guide-for-natural-language-processing-in-python/ [Ziyaret Tarihi: 19 Şubat 2021].
- GAGLIARDI, I. and ARTESE, M.T., 2020, Semantic Unsupervised Automatic Keyphrases Extraction by Integrating Word Embedding with Clustering Methods, Multimodal Technologies and Interaction, 4(2), 30.
- PATEL, S., 2020, NLP:POS (Part of speech) Tagging & Chunking [online]. Web adresi: https://suneelpatel-in.medium.com/nlp-pos-part-of-speech-tagging-chunking-f72178cc7385 [Ziyaret Tarihi: 12 Kasım 2020].
- Universal Dependencies, Universal POS tags [online]. Web adresi: https://universaldependencies.org/u/pos/ [Ziyaret Tarihi: 23 Şubat 2021].
- KARAGEDİK, Ö., 2010, Normalleştirme ve Genişletme Yöntemleri Kullanılarak Bilgiye Erişim Sürecinin İyileştirilmesi, Yüksek Lisans Tezi, Ege Üniversitesi.
- Starlang Yazılım, 2020, Doğal Dil İşleme (Natural Language Processing – NLP) Nedir? [online]. Web adresi https://starlangyazilim.com/dogal-dil-isleme-nedir/ [Ziyaret Tarihi: 11 Kasım 2020].
- NASKAR, A., Difference between stemming and lemmatizing and where to use [online]. Web adresi: https://thinkinfi.com/difference-between-stemming-and-lemmatizing-and-where-to-use/ [Ziyaret Tarihi: 12 Kasım 2020].
Yorum Gönder
Yorum Gönder