Velhasıl Türkçe Yazım Kontrolü ve Metin Analizi Yapan Doğal Dil İşleme Projesi

1 2.044

Açıkhack 2020 Online Doğal Dil işleme Yarışması kapsamında 1-31 Temmuz 2020 tarihleri arasında Türkçe Doğal Dil Çalışmalarına katkı sağlamak amacıyla tamamen açık kaynak kodlu bir uygulama hazırladık.

Türkiye Açık Kaynak platformu tarafından düzenlenen yarışma, Teknofest, Garanti Bankası vb. birçok özel ve kamu kurum ve kuruluşları desteklemekte. Açık kaynaklı Türkçe Doğal Dil işleme çalışmalarının, türkçe doğal dil işleme kütüphanelerinin, Türkçe derlemlerin artırılması için Açıkhack Doğal dil işleme yarışması düzenlemektedir.

Velhasıl Doğal Dil İşleme Projesi:

Velhasıl isimli uygulamamız metinlerde yazım denetimi, cümle analizi, metnin özünü bulma ve atasözü önerme, metnin okunabilirliğini artırıcı öneriler sunma gibi özelliklere sahip. Uygulamamıza ve Uygulamamızın kaynak kodlarına  https://github.com/MiniVelhasil/velhasil   adresinden ulaşabilirsiniz.

Neden Yaptık? Problem Cümlemiz:

Yazım yanlışları ve uzun cümleler metinlerin okunabilirliğini zorlaştırmaktadırlar.*

* Ateşman, Ender (1997). Türkçe okunabilirliğin ölçülmesi. Ankara Üniversitesi, TÖMER Dil Dergisi, S.58, ss.171-174.

 http://www.atesman.info/wp-content/uploads/2015/10/Atesman-okunabilirlik.pdf

Çözüm Nedir?

«Velhasıl…» isimli projemiz ile Türkçe metinlerin biçimsel olarak incelenmesi, yazım yanlışlarının bulunması, cümlelerin belirlenmesi, anlam çıkarımı yapılması ve bu yollarla yazının iyileştirilerek okunabilirliğini artırıcı öneriler sunulması amaçlanmıştır.

Projemizin Özellikleri:

  • Yazım Denetimi: Yazım yanlışlarını, noktalama işareti hatalı kullanımlarını kontrol eder.
  • Kelime Öneri : Yazım yanlışı yapılmış kelimeler için doğru olabilecek kelime önerir.
  • Türkçe Kelime Öneri : Türkçe kökenli olmayan kelimeler yerine Türkçe kelime önerir
  • Cümle Analizi : Metnin okunabilirliğinin ve akıcılığının artırılmasını sağlamak amacıyla metin içindeki cümleleri analiz eder ve uzun yazılmış birleşik cümlelerin bölünebilmesini önerir.
  • Metin İstatistikleri : Metnin kelime sayısı, cümle sayısı, karakter sayısı gibi istatistiklerini bulur.
  • Atasözü Öneri : Metnin tamamını inceler ve hazırladığımız 2500’e yakın atasözü içeren ver setimizi kullanarak metinle alakalı atasözlerini bulur.

Yazım Denetimi Aracı:

Yazım yanlışlarını, noktalama işareti hatalı kullanımlarını kontrol eder.

Kullanımı: Velhasıl sınıfını projeye dahil ediyorsunuz.

import velhasıl
velhasil_ = velhasil.Velhasil ()
velhasil_.yazimDenetimi (text))

Metnin yazım kontrolünü yapar.
@param 
string kelime : Metnin tamamı
@return
list      : [0,1,2,3,4,5,6] biçiminde
0-> kelime doğru ;
1-> Kelime bir noktalama işareti Önündeki boşluk silinmeli
2-> kelime yanlış
3-> cümleden sonra (
enter ile bitmiş) nokta koyulmalı.
4-> Noktalama işaretinden sonra boşluk bırakılmalı (
merhana,dünya) uyarı verir (3,14) -doğru döndürür
5-> Noktadan sonra büyük harf gelmeli
6-> Kelime doğru ancak Türkçe kelime önerisi var

Yazım Denetimi için https://github.com/StarlangSoftware/TurkishSpellChecker-Py

Kelime Öneri:

Yazım yanlışı yapılmış kelimeler için doğru olabilecek kelime önerir.

import velhasıl
velhasil_ = velhasil.Velhasil ()
velhasil_.kelimeOneri ("yalnış"))

>> [‘yanlış’, ‘yanlış’, ‘yanlış’, ‘yanış’, ‘yanlış’, ‘yanlış’, ‘yalmış’, ‘yanlış’, ‘yalanış’, ‘yanlış’, ‘yalnız’, ‘yalnız’, ‘yanlış’, ‘yalnız’]

Türkçesini Öner:

Türkçe kökenli olmayan kelimeler yerine Türkçe karşılığını önerir. Bunun için kendi hazırladığımız yaklaşık 550 kelimelik yabancı kelimeler ve Türkçe karşılıkları veri seti hazırladık.

import velhasıl
velhasil_ = velhasil.Velhasil ()
velhasil_.turkcesiniOner ("etap"))

Etap : [‘adım’, ‘basamak’, ‘konak’]

Kulvar : [‘çizgi’, ‘şerit’, ‘yol’]

Dekoder : [‘çözücü’]

Cümle Sonu Belirleme:

Kural tabanlı olarak Türkçe metinlerde cümle sonu belirleme işlemi yapılır.

18 farklı duruma göre Türkçe metinlerdeki cümleleri başarıyla belirler. Bunun için Türkçede sık kullanılan kısaltmaların yer aldığı bir veri seti oluşturuldu. Kısaltmalar ayrıldıktan sonra tek bir Regex cümlesiyle cümle sonu belirlendi.

import velhasıl
velhasil_ = velhasil.Velhasil (text)
velhasil_.cümleler # cümlelerin yer aldığı bir liste döndürür
sentence = re.compile ( """(?<=['""a-zıüöşğç\""\]\)][\!\?\:\.\…\n\r\n\t])\s+(?=[""A-ZİÜÖŞĞÇ0-9\(\-\(\''\‘\““\""\[\+])""")sent = re.split (sentence, text) 
Cümle Sonu Kurallar
Doğru L. U
Doğru L. #
Doğru L. ‘
Doğru L. “
Doğru L. [
Doğru L. (
Doğru L. +
Dogru L. –
Yanlış U. U
Yanlış #. U
Yanlış L. L
Yanlış ?.? (Noktadan Sonra Boşluk yok)
Yanlış #. #
Yanlış ?. ”
Yanlış #. ,
Yanlış #. )
Yanlış #. ]

Cümle Analizi:

import velhasıl
velhasil_ = velhasil.Velhasil ()
velhasil_.cumleBolucu(cumle))
#True or False

Cümlenin birleşik cümle olduğunu anlamak için bağlaçlar listesi hazırlandı ve VERB TS Corpus Frequency List kullanıldı.

Metin İstatistikleri:

Metin İstatistikleri : Metnin kelime sayısı, cümle sayısı, karakter sayısı gibi istatistiklerini bulur.

import velhasıl
velhasil_ = velhasil.Velhasil (text)
print ("Kelime sayisi :", velhasil_.kelimesayisi)
print ("benzersiz kelime sayisi :", velhasil_.benzersizkelimesayisi)
print ("Karakter sayisi :", velhasil_.karaktersayisi)
print ("Benzersiz karakter sayisi :", velhasil_.benzersizkaraktersayisi)
print ("Paragraf sayisi :", velhasil_.paragrafSayisi)
print ("Cümle sayisi :", velhasil_.cumleSayisi)
print ("Kelimeler :", velhasil_.benzersizkelimeler)

Atasözü Öneri:

Metnin tamamını inceler ve hazırladığımız 2500’e yakın atasözü içeren veri setimizi kullanarak metinle alakalı atasözlerini bulur.

import velhasilimport atasozlerOneri
atasozleri_ = atasozlerOneri.AtasozleriOneri ()
oneriler = atasozleri_.atasozuBul (text)
oneriler.sort(reverse=True)

Gereksinimler ve Ek Kaynaklar:

Gereksinimler

NlpToolkit-MorphologicalAnalysis==1.0.21

NlpToolkit-NGram=1.0.10

PyQt5-stubs==5.14.2.2

Kullanılan Ek Kaynaklar

Yazım Denetimi için https://github.com/StarlangSoftware/TurkishSpellChecker-Py

Not Defteri Örneği :

https://www.learnpyqt.com/examples/no2pads-simple-notepad-clone/

Masaüstü Uygulama ikonları

https://icons8.com sitesinden alındı

Atasözleri : https://www.atasozlerianlamlari.com

Sonuç ve Demo:

Uygulamamıza ve uygulamamızın kaynak kodlarına  https://github.com/MiniVelhasil/velhasil   adresinden ulaşabilirsiniz.

Yarışmaya katılan diğer projelere github üzerinden acikhack2 etiketiyle ulaşabilirsiniz. https://github.com/topics/acikhack2

1 yorum
  1. Meriç diyor

    Cidden çok güzel yapmışsınız ellerinize, emeğinize sağlık.

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bununla iyi olduğunuzu varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul etmek Mesajları Oku