Süreç, doğrular, yanlışlar ve veri kümesinin iyileştirilmesi

1. Külliyata cümle ekleme

Yeni cümleler eklemek için burayı tıklayınız.
Eklenmiş cümleleri denetlemek için burayı tıklayınız.
Bugüne kadar "text-corpus"a eklenen cümleler ve kaynakları için burayı tıklayınız.

ÖNEMLİ NOT: Eski “Sentence Collector” yazılımı 2023 başlarında Common Voice’un içine adapte edildi. Önce sadece tek cümle girilebiliyordu.

Ekim 2024 itibarı ile şu seçeneklerimiz var:
a) Tek cümle
b) Aynı alan ve kaynaktan çok cümle (2-999)
c) Belli bir dosya formatında hazırlayarak yükleme (1000+ cümle).

Her aşama önemli ama cümleler olmazsa ne kaydedilecek ve dinlenecek? Yapay Zeka sesleri (phonem) ve bunların ardışık gelişlerini öğreniyor, bunlar da cümleler ve içindeki kelimelerden çıkıyor. Zaman içinde çok geniş bir sözcük kümesini, değişik söylenişleri ile sisteme katmalıyız - ki seslendirilebilsinler.

En büyük derdimiz CC-0 (Creative Commons Zero, Public Domain Türkçesiyle Kamu Malı ) cümleler bulmak. Bunlar arasında:

  • İçinde açıkça kamu malı olduğu belirtilen kaynaklar.
  • Yazarının ölümünden itibaren 70 yıl geçmiş eserler.
  • Mozilla ve telif sahipleri arasında yapılacak özel bir sözleşme ile telif sahibinin telifi kendinde olan veriyi CC-0 olarak açması. Ağustos 2021 sonrasında devreye giren bu sözleşme ile ilgili bilgiye şuradan ulaşılabilir. Ama pek kabul eden olacağını sanmıyorum bu şekliyle, bel bağlamayalım buna…
  • Günlük dilde herkes tarafından kullanıldıkları için “telifli” denemeyecek ifadeler.
  • Kişisel yazışmalarınızdan (chat, e-posta vb) seçebileceğiniz günlük cümleler.
  • Kişisel ya da grup olarak (mesela Google Documents altında) kendi ürettiğiniz cümleler

sayılabilir.

Wikipedia bunlar arasında değildir. Mozilla ve Wikipedia arasında yapılan özel hukuk anlaşması ile her Wikipedia makalesinden üç adedi geçmemek üzere Common Voice’a eklenebilmektedir.

[ESKİ: Ama bu süreç kolay değildir, Mozilla’nın ve Wikipedia’nın onayından geçmektedir. Ayrıca otomatik alınan bir çok cümlenin aşırı teknik ifadeler ve yabancı kelimeler içerdiği görülmektedir. Şimdilik bu alanı kullanmıyoruz…]
EKLEME: Haziran-Ağustos 2023 döneminde uzun süren bir çalışma sonunda Wikipedia’dan 3 cümle/makale olacak şekilde kurallara uygun aktarımı sağladık. Buradan 348 binin üzerinde cümle eklendi, bu da yaklaşık 565 saat üzeri kayıt sağlayacak. Hata oranımızın %2-3 arasında olduğunu hesaplamaktayız (hatalar yazım hatalarından ziyade kötü Türkçe kullanımı ya da gramer hatalarından kaynaklı). Bunun sayesinde Latince, Arapça ve Farsça kökenliler dahil olmak üzere epey geniş bir kelime haznesi kazandırdık ve ortalama kayıt süremizi de uzatmaktayız. Öte yandan bunlar diyalog cümleleri değil. Dolayısı ile sisteme konuşma cümleleri eklemeye devam etmek zorundayız. Detaylı bilgi için tıklayınız.

Önceki bölümde saydığımız nedenlerle gerek cümleleri eklerken gerekse kontrol ederken aşağıdakilere dikkat etmek gerekir.

ESKİ: Cümle Toplayıcı (Sentence Collector) desteklerimiz sonucunda yerelleştirildi, çevirileri yapıldı. Kuralların Türkçesi şurada.
YENİ: Cümle toplayıcı 2023 başlarında Common Voice ana yazılımının içine aktarıldı, çevirilerimizle birlikte.

  • Kaynaklar CC-0 olmalıdır. Emin değilseniz bunu danışabilirsiniz. Bu forumda sorularınızı Türkçe külliyat (cümleler) iletisi altına yazabilirsiniz, tartışır ve sonuca varabiliriz. Kaynağın uygun olmadığı anlaşıldığında Common Voice yasal nedenlerle hepsini siliyor, hem de yapılmış kayıtları ve verilen tüm emeklerle birlikte… Girilmiş cümleleri kontrol ederken kaynağı da kontrol etmeniz doğru olur. Uygun olmayan kaynakları gene aynı iletiye ya da doğrudan genel forumdaki Sentence collector copyright issues iletisine bildirebilirsiniz.
  • Cümleler dilbilgisi ve yazım kurallarına uygun olmalıdır. Emin değilseniz sozluk.tdk.gov.tr adresine ve TDK’nın yazım kuralları bölümüne, Dil Derneği Sözlüğüne ya da Sözce’ye başvurabilirsiniz. Türkçede çok yapılan yazım yanlışları Vikipedi’de listelenmiştir. Ama ey yazarlar, editörler, sizin stilinizde bir kitap yazmıyoruz! Bazıları TDK, bazıları Dil Derneği kurallarını uyguluyor. Hatta 70+ yıl önce vefat etmiş yazarların cümleleri de ana kaynaklarımızdan. Dolayısı ile kaynaklarda yazımlar farklı olacaktır (ör. hangi kelimeler birleşik kelime sorunsalı) ve başka bir hata yoksa iki yazım türünü de kabul etmemiz doğru olabilir. (Not: Mozilla Türkçe çevirmenleri Dil Derneği kurallarını kaynak almaktadır).
  • Dahi anlamında “de” (“da” vb) ayrı yazılır, soru cümlelerindeki “mi” (“mu” vb) ayrı yazılır gibi temel şeyleri de atlamamamız lazım. Unutmayın “bende” ve “ben de” ayrı ifadelerdir, üstelik Common Voice açısından çok kötü bir eğitim temeli oluşturacaklardır (tek/iki kelime, okunuş vurguları farklı vb).
  • Normalde cümleler tam olmalı, büyük harfle başlamalı ve uygun bir noktalama işareti ile bitmelidir. Otomatik işliyorsak cümle içindeki noktalama işaretlerinin de yerinde kalmasına dikkat etmemiz lazım. Öte yandan bu keskin bir kural değil. Cümle bir başlık olabilir, bir resim altı yazısı olabilir, ör. yüklemsiz olabilir… Bu ifadeler anlaşılır, yazım olarak doğru ve okunabilirdir. Dolayısı ile uygundur.
  • Sayılar/rakamlar yazıyla yer almalıdır. “Bu çocuk 12 yaşında.” cümlesi “Bu çocuk on iki yaşında.” olarak çevrilerek eklenmelidir. Dikkat: Türkçe’de sayıları oluşturan kelimeler ayrı yazılır, “oniki” şeklinde değil. Sadece anlam farklılaşması geçirenler “Onikiler” gibi birleşik yazılabilir.
  • Kısaltmalar kabul edilmezler, eğer kısaltma içeren bir cümle varsa ya uzun haline çevirelim ya da eklemeyelim. Ör. “TBMM’de” => “Türkiye Büyük Millet Meclisinde”…
  • Cümlede özel karakterler olamaz, @ # gibi karakterlerin “AT”, “KULAK”, “HASHTAG”, “NO” ya da “DİYEZ” gibi okunması kabul edilebilir değil Common Voice açısından. Öte yandan doğal olarak kesme işaretlerini (apostrof) tutacağız. Sistem parantezleri de kabul etmiyor “(…)”, bunları da elemek iyi olur.
  • Yazılımdaki Türkçe kurallarına göre eklenecek cümlelerin 14 kelime ya da daha az olması lazım. Yoksa şu anki ayarlarla “sentence collector” cümleyi reddedecektir (bu İngilizce temelli genel ayardır, dil başına ayarları değiştirebilmekteyiz). Keskin bir kural olmamakla birlikte cümle uzunluğunu da maksimum 100-110 vuruş civarında tutmakta fayda var. NOT: Bu kurallar İngilizce’yi temel alan varsayılan kurallardır. Yakında bunları değiştireceğiz (ör. maksimum 15 saniye ve 25 kelime yapabiliriz).
  • Çok uzun cümlelerin okuması zor olabiliyor. Uzun cümleleri iki ayrı cümle haline getirmeye çalışabiliriz, ya da yan cümleleri mesela “:”'dan ayırabiliriz. Virgüllerden otomatik ayırma gibi işlemler de kabul edilebilir sonuçlar doğurmuyor. Unutmayın, kaynaklarımız CC-0 olduğu için onları istediğimiz gibi değiştirebiliriz.
  • Tek kelimelik ifadeler (bazen - konuşma ifadeleri ise) uygun. Bunların değişik noktalama işaretleri ile bitmesi durumunda birden fazla olması da mümkün (çünkü “Sen…”, “Sen?”, “Sen!” değişik vurgularla okunurlar, anlamları da farklıdır). Öte yandan bir sürü sayıyı, özel ismi vb ardışık olarak sisteme girmek de doğru değil. Bunlar seslendirilirken son derece sıkıcı olacaktır. Ve hayır! Sözlüğü kopyalayıp yapıştırmıyoruz :slight_smile: NOT: Zaten tek kelimelik soru-yanıt şeklinde olanların da çoğunu ekledik. Uzun cümleler eklemeye çalışmalıyız.
  • Bazı kaynaklar konuşma dilinde ya da yerel dilde yazılış kullanıyor olabilir. Örneğin “Anan burda mı?” kabul edilir, “annen” ve “burada” yazılmamış diye reddedilmez. Ya da “Candarmalar geldi!” de kabul edilir, yazar Anadolu’da söylendiği şeklini metne dökmüş. Yeter ki bunlar aşırı baskın olmasınlar, aksi durumda modellerimiz “konuşma dili” öğrenirler, istediğimiz tam olarak da bu değilse tabi…
  • Günlük dilde kullanılan küfürlü ve kaba ifadeler (belli bir kişiye ya da gruba yönelik değilse ya da yüzümüzü kızartmıyorsa) uygun olabiliyor. Bunların kurulacak sistemler tarafından anlaşılabilmesi isteniyor. Bunları diğer kurallara uygun olduğu sürece kabul edebiliriz. Saldırgan buluyorsanız, oy vermeden geçiniz. “Lanet olsun adamım” çevirisinden daha doğru olacaktır bu… NOT: Zaten bir çoğunu ekledik, artık yeni bir şey eklemeyelim diyoruz. Mozilla da doğal olarak bunları kullanın demiyor (kullanmayın diyor).
  • Tam kimden bahsedildiği açıkça belli olan kişi adları yer almasa iyi olur. Kamuya malolmuş, ünlü insanları bunun dışında tutabiliriz belki - hakaret ve yorum içermediği sürece… Sistemlerin adları anlaması gerekli tabii, çok kullanılanları ekleyeceğiz ileride. NOT: Wikipedia kaynaklarından epey bir kısmı geldi.
  • Bir olası sorun da şapkalı harflerimizde var. TDK’nun “hala” ile “hâlâ” arasında yaptığı geçişler kafa karıştırıcı ve editörler arasında da tartışılmaya devam ediyor. Klavyede ek bir tuşa basmaktan kaçındıkça çoğu günlük yazıda da bunları görme olasılığımız azaldı. Gerek cümleleri girerken gerekse onları onaylarken bunlara çok takılmamamız iyi olabilir. Okurken başka tabii… Kurulacak sistemlerde bu gibi durumlar için semantik çözümlere, ya da yazım kontrolü programlarına yönelmek gerekiyor zaten. Ama ör. “cami” kelimesinin “camî”, “camîi” gibi Arapçalaştırarak kullanılmasını da kabul etmemek gerek.
  • Benzer sorun kesme işaretinde ortaya çıkıyor, bunun kuralları özellikle 1980’den sonra TDK tarafından sürekli değiştirilip duruyor. Dolayısı ile değişik yazış tarzlarını “şu anki kurallara göre doğru olmasa da” kabul etmek isteyebiliriz.
  • Arada sırada çıkan yabancı sözcükler sorun değil, hatta çok bilinen yer isimleri -Türkçeleştirilmiş ise- zaten istenebilir. Ama kaynakta bunlar çok yoğunsa yeniden değerlendirmek ve ilgili cümleleri elemekte fayda olacaktır. On kelime içeren bir metinde 1-2 yabancı kelime kabul edilebilir. Nasıl okunacağından emin değilseniz atlayınız, başka bir gönüllü okuyacaktır. Gene de, çok kullanılmayan, veri kümesini gereksiz şişirecek yabancı kişi adlarını vb reddetmek iyi olur. Bazı yabancı adlar Türkçe’de ve orijinal dilinde aynı seslerle okunuyor, bunların kalmasında sakınca yok, ama bir kelimeyi bazıları o dili bildikleri için orijinal şekliyle okumaya kalkarsa sorun olacaktır. Text-corpus şu anda epey iyiye doğru gidiyor…
  • Osmanlıca, Arapça ve Farsça kökenli kelimeler dilimizde yaygındır. Genç bir insan bunları günlük yaşamda kullanmıyor olabilir ama gerek metinlerde gerekse daha büyük yaştakilerin günlük dilinde bunların çokça geçtiğini unutmayalım. Öte yandan tamamı eski dilde olan Nutuk gibi kaynakları doğrudan kullanmak pek uygun değil, 50-60 yaşındakiler bile sözlük kullanmadan tam anlayamıyorlar - oturup içinden tek tek seçerseniz ya da günümüz Türkçesine çevirirseniz o başka. Ör. “garp cephesi” (batı cephesi) gibi bir kavram Kurtuluş Savaşı’nda çok geçtiği için kullanılmaya devam ediyor, Şark Ekspresi’nden de “doğu” kavramını biliyoruz. Şimal (kuzey) ve cenup (güney) ise o kadar kullanılmıyor. Bunların çok geçtiği metinlerde güncel hallerini yazmak isteyebiliriz. Özellikle gençlerin bunların nasıl okunacağını bilmediği durumlarda zorlanmaları ve yanlış kayıt yapmaları da söz konusu (aslında ATLA butonuna basmaları lazım).
  • “Doğal/günlük konuşma” öne çıkan tercih olduğu için şiirler, türkü-şarkı sözleri, dini metinler, politik manifestolar hiç uygun değil. Belki binlerce saatlik kayda ulaştıktan sonra bunları eklemek isteyebiliriz, ama henüz eklemeyelim. Bu kapsamda Wikisource’da yer alan Türkiye’de yayımlanan kamu malı eserler başlığı altındakiler büyük oranda kullanılabilir değiller.
  • Sentetik cümleler, makine çevirileri de uygun değiller. “Ben Ankara’ya gidiyorum”, “Ben İstanbul’a gidiyorum”, … gibi binlerce cümle düşünün. Hem modeller hem de okuyan gönüllüler için kötü olacaktır bunları eklemek. Google Translate de son yıllarda çok gelişmiş olsa bile hâlâ anlamsız cümleler çıkartıyor.
  • Tamamen anlamsız “absürd” cümleler de dil bilgisi ve yazım açısından doğru olsa da, gerek okuyanı şaşırtacağı gerekse anlam üzerinden çalışan semantik sistemlerde zorluk yaratacağı için hiç tercih edilmiyorlar. Unutmayın, küçük bir çocuğa Türkçe öğretiyoruz.

İngilizce örnekler üzerinden proje başlarında yapılan bu konudaki tartışmayı şu iletide bulabilirsiniz.

1.1. CC0 cümleler bulma, aralarından seçme ve ekleme

Linux komut satırından komutlarla ya da github’daki araçlarla çalışmak mümkün. Koruma süresini tamamlamış bazı yazarların kitapları taranmış, OCR’dan geçirilmiş olarak çeşitli formatlarda bulunabiliyor. Bunları bir text editörle (ör. Notepad++) ön işlemden geçirip satırlara ayırmak, sonra da bir hesap tablosunda (ör. Excel) formüllerle işlemek mümkün (şimdilik 14 kelime sınırı, kaç vuruş olduğu, içinde sayı olup olmadığı, baş harfleri büyük mü, sonunda noktalama işareti var mı gibi kontroller). Hatta istatistikler almak da güzel oluyor. Deneyimden yola çıkarak şunu söylemek gerekir: Bir kaynağı hiç okumadan koymak çok hatalı, bir çok nedenle doğru cümleler çıkmayabiliyor ve düzeltmek gerekiyor. Hızlı okuma ile çoğu gideriliyor ama…

Bu süreci daha sonra detaylandıracağız ve örnek bir dosya da paylaşacağız.

Toplu cümle eklemek için bir yöntem de sunuyor Common Voice. ESKİ: Ağustos 2023 itibarı ile hala çalışmıyor bu metod (Not: Düzeltildi).

Ama her durumda:

  1. Cümleleri hazırlayanın iki kere üstünden geçmesi
  2. Anadili Türkçe olan iki ayrı kişinin kontrol etmesi (yukarıdaki kurallar)
  3. Sonuçta çıkan cümle kümesinde hata oranının %2’nin altında olduğuna emin olunması

gerekiyor. Hala gözden kaçan bir şeyler varsa kayıt sırasında ya da kayıt dinleme sırasında bunları BİLDİR butonu üzerinden elemek mümkün.

OCR taramasından elde edilen kitaplarda OCR hataları gözden kaçabiliyor. Örneğin “ın” OCR tarafından “m” olarak algılanabiliyor ve birkaç kişi (hızla) üzerinden geçtiği halde bunu kaçırabiliyor. Dikkat, emek ve iyi bir çift göz lazım.

Yaptığımız bir çalışmada ilk adımın hata oranını %1 civarında tutturduk, ardından iade cümleleri de düzelterek ekledik. Gene de bazı hatalar kalmıştı. Bunları şu anda kayıt yaparken ya da kayıt dinlerken keşfediyor ve bildiriyoruz. Bu düzeltmeleri bu aşamada doğru yapmış olsaydık bu kayıtlar boşa gitmeyecekti (çuvaldız). Bilgi için: Bir kitabı Excel yöntemi ile hızlı elden geçirmek, iki kere okuyarak onaya sürmek yarım gün kadar sürüyor, 2-4 bin cümle çıkabiliyor. Ama oturup o sırada kitabı gerçekten okursanız 3 günü buluyor, denemeyle sabit… Sonra gelen kontrol/onay aşaması ise maalesef beklemeler ve git-geller yüzünden epey uzun sürüyor…

1.2. Eklenen cümlelerin kontrolü

Yukarıda bahsettiğimiz kurallara uygun olduğunu kontrol edeceksiniz. Özetlersek:

  1. Cümle doğru yazılmış mı?
  2. Cümle dilbilgisi açısından doğru mu?
  3. Cümle okunabiliyor mu?
  • Tümüne yanıtınız EVET ise onaylayınız.
  • Herhangi biri HAYIR ise onaylamayın.
  • Emin değilseniz atlayınız, başkası kontrol edecektir (ör. yabancı kökten gelen terimler).

Önce iki onay alan cümle onaylanmış kabul edilecektir ve ses kaydı sırasına girecektir.

Önce iki ret alan cümle reddedilecektir.
[ESKİ: Cümleyi ekleyen bunları Rejected Sentences altında görecektir. Tercihen bunlar düzeltilip yeniden eklenebilir.]
YENİ: Bunlar indirilen veri kümesi içindeki “unvalidated_sentence.tsv” dosyasında bulunabilir.

Örnekler

:white_check_mark: “Daha sonra şöyle dedi:” (uzun cümle bölünmüş, kabul edilebilir)
:white_check_mark: “Candarmalar içeri girdi.” (orijinal metinde yerel ağızla söylendiği şekliyle yazılmış, kabul edilmeli)
:white_check_mark: “Hala kararlı mısın?” (orijinali hâlâ olduğu halde kabul edilebilir)
:white_check_mark: “Türkiye Büyük Millet Meclisinde toplandılar.” (kesme işareti unutulmuş demeyin, o kurallar sürekli değişiyor, yeni şekli de bu, kabul edelim)
:white_check_mark: “Daha Sonra” (tam bir cümle değil, başharfler büyük yazılmış ama bir başlık olabilir bu, kabul etmek lazım)
:white_check_mark: “Daha sonra o da geldi” (sonunda nokta unutulmuş, ama sorun değil, kabul edelim)
:x: “Daha sonra oda geldi” (açıkça anlaşılıyor ki “o da” yerine yanlışlıkla “oda” yazılmış, kabul etmeyelim)
:x: “Daha onra o da geldi” (açıkça bir yazım hatası var, reddedilmesi lazım)
:x: “TBMM’de toplandılar.” (kısaltma var, reddedelim)
:x: “Çekoslovakyalılaştıramadıklarımızdanmısınız?” (sentetik kelime, -mi de ayrı yazılmamış)
:x: “Sizin için, insan kardeşlerim,” (Orhan Veli’nin bir şiirinden mısra, kabul etmemek lazım)
:x: “Arthur Dent’in evinin gün bitmeden ortadan kaldırıldığını görmek ilgili bir şey ciddi biçimde ters gidiyordu.” (Otostopçunun Galaksi Rehberi’nden alınmış, CC-0 olmayan telifli eser)
:x: “Bizi doğru yola, kendilerine nimet verdiklerinin yoluna ilet; gazaba uğrayanlarınkine ve sapıklarınkine değil.” (dini metin)
:x: “Bu düşünce ile alınan teşebbüsât, birtakım teşekküller doğurdu.” (Nutuk’tan alınan bu cümle çok eski ve artık kullanılmayan sözcükler içeriyor)
:x: “Ahmet 1960’da doğmuştu.” (rakamlarla yazılmış sayı var)
:x: “Ahmet bindokuzyüzyetmişbirde doğmuştu…” (temel yazım kuralı hatası, bunu “bin dokuz yüz yetmiş birde” yazmak lazımdı, reddedilmeli)
:x: “Ahmet Ahmetoğulları’na http://example.com sitesinden ya da ahmet@example.com adresinden ulaşılabilir.” (özel işaretler var, kişinin adı geçiyor, hatta e-posta adresi var)