[hazırlanıyor] Süreç, doğrular, yanlışlar ve veri kümesinin iyileştirilmesi

Burada ideali amaçlayan bir veri kümesini nasıl yaratacağımızı tartışırken sıklıkla yapılan yanlışları da ele alacak, onaylarken neyin kabul edilebileceğini nelerin ise reddedilmesi gerektiğini örneklerle açıklamaya çalışacağız.

Buradaki bilgiler Common Voice’un ilgili sayfalarındaki bilgilere ek olarak kişisel deneyimleri de içermektedir. Her zamanki gibi bu metinler zaman içinde geliştirilecektir. Sizler de iletinin altına yorum, katkı ve sorularınızla katkıda bulunabilirsiniz ne güzel olur !

Neyin neden doğru olacağını anlayabilmek için ne için kullanılacağını bilmemiz gerekiyor.

Bu konuları içeren Common Voice’un Sık Sorulan Sorular sayfasını da okumayı unutmayınız.

Common Voice Veri Kümesi Ne için Kullanılabilir?

Günümüzde makine öğrenmesinde kullanılan pek çok teknik var ve bazıları bazı amaçlar için daha uygun olabiliyor. Mozilla bu kümeyi yaratırken olabildiğince çok modelde çeşitli kullanıma uygun olabilecek bir yöntem izliyor. Gerek araştırmacılar, gerekse uygulama geliştiricileri büyükçe olan ses kümesinden kendi amaçlarına uygun olan kayıtları seçip modellerini iyileştirebiliyorlar.

Örnek uygulamalar (basitten karmaşığa):

  • Uyandırma kelimeleri: Tek bir kelime ile cihazın uyanmasını sağlama (OK Google ya da Hey Siri gibi)
  • Komut sistemleri: Çok kısıtlı bir sözlükle (rakamlar, başlat, durdur, önceki, sonraki, evet, hayır, vb) bir cihazın (ör. otomobil ses sistemi) kontrolü.
  • Kişisel asistanlar: Genelde uyandırma kelimesi ile başlatılan yazılıma belli sorular sormak, belli komutlar vermek. Bunlar tek tek kelimelerden karmaşık olmayan doğal konuşma cümlelerine kadar bir şeyleri anlayıp yanıt veriyor. (Google Assistant ya da Siri, ya da bazı banka gibi şirketlerin ilk karşılama robotları
  • Yazıyı sese dönüştürme (ör. uzun zamandır Windows’da var).
  • Otomatik altyazı üretimi (Youtube şu anda yapıyor)
  • Otomatik çeviri
  • Makine-insan arasında karşılıklı sohbet

Yukarıdaki ilk iki uygulamada aynı kelimenin 1000 ayrı kişi tarafından okunması istenirken, geniş sözlük kullanan bazı metotlarda ise her cümlenin farklı kişiler tarafından tek kaydedilmesi daha yüksek başarım için tercih edilebilmektedir.

Her model için geçerli olmamakla birlikte makine öğrenmesinde veri kümesindeki farklılıklar önemli. Basitleştirirsek, güncel teknikleri yeni doğan bir insanın dil öğrenmesi ile karşılaştırmamız mümkün.

  • Yeni doğanda donanım ve algoritma var
  • Bu algoritma çevreden alınan veri ile öğrenmeyi gerçekleştiriyor.
  • Çevrede Almanca konuşuluyorsa Almanca öğreniyor/konuşuyor, Türkçe konuşuluyorsa da Türkçe. Türkçe’nin sadece belli bir ağzı/lehçesi konuşuluyorsa o lehçede uzmanlaşıyor beyin. Ama zaman içinde farklı söyleyişleri duydukça onları da anlıyor, adapte oluyor. Ama bir kere Karadeniz ya da Güneydoğu ağzı oturursa, bunu değiştirmek pek kolay olmuyor.

Makine öğrenmesi de pek farklı değil… Öğretirken onu beslediğimiz veri kümesi onun gelecekte ne olacağını tanımlıyor. Buna “bias” (önyargı) diyoruz. Örneğin:

  • Sadece erkek sesleri ile eğitirsek kadınları anlamakta zorlanacak, ör. ileride çamaşır makinesini sesle çalıştırmakta zorlanacaklar.
  • Sadece “çok doğru Türkçe” (ör. diksiyon eğitimi almış spiker sesi) ile eğitirsek, Doğu Anadolulu biri aynı çamaşır makinesi ile sorun yaşayabilecek.
  • Sadece “ev” kelimesini öğretmişsek “mesken” kelimesini anlamayacak.
  • Ya da çok fazla x lehçesi kullanırsak, y lehçesini anlamayacak.

İngiliz-İskoç aksanı arasındaki farkı vurgulayan ünlü sesle kumanda edilen asansör parodisi sorunu çok iyi anlatır…

Yaygın olarak kullanılan makine öğrenme sistemleri şu işlemleri gerçekleştirirler (terminolojiyi basitleştiriyoruz burada):

  1. Kaydetmek
  2. Filtrelerden geçirerek gürültüleri (arka plan sesleri, çıtırtılar vb) temizlemek, bu arada başta/sonraki boşlukları da atmak.
  3. Sesi normalize etmek (kısık ya da yüksek seslerin düzeyi).
  4. Kelimeleri ayırmak.
  5. Matematiksel formüllerle (sinyal işleme algoritmaları) frekans grafikleri çıkarmak (yaşa, cinsiyete, lehçeye vb göre her insanda farklı sonuç elde edilir, amaç hepsini kapsayacak bir kümeyi öğretmektir).
  6. Bu örüntüleri kelimelerle eşleştirmek.

Öğrenirken belli parametreler hesaplanıyor, kullanımdayken de duyulan ses için aynı analiz yapılıp hangi kelimenin söylenmiş olduğu belli hata payları ile o parametrelerin içinde kalıyor mu diye bakılıyor.

Bu basitleştirilmiş süreci anlamışsak şu çıkarımları yapabiliriz:

  • Cümleler dilbilgisi ve yazım kuralları açısından doğru cümleler olmalı ki hem doğru okunabilsin, hem de ses ile doğru kelime eşleştirilebilsin.
  • Cümlelerde fazla yabancı dil ve aşırı eski sözcükler olmasın ki gönüllüler bunları telaffuz etmekte zorlanmasın, sistem de Türkçe’de olmayan kelimelerle şişmesin.
  • Ses tam ve anlaşılabilir kaydedilmeli ki tüm süreç işlesin, eksik/yanlış kelime/okuma olmasın.
  • Öğretilen sesler sadece stüdyo kaydı gibi olmasın ki mesela araba kullanırken motorun sesi sistemi kullanılmaz hale getirmesin.
  • Kelimeler tek tek anlaşılabilsin ki ayrılıp eşleştirilebilsin.
  • Zamanla dilde geçen tüm kelimeleri içerebilmeliyiz ki sistem “sizi anlamadım” demesin.
  • Vurguları doğru kullanmalıyız ki soru mu soruluyor, komut mu veriliyor fark edilebilsin.
  • Farklı okunuşlara izin verilsin ki (ör. “r” harfinin yutulması) günlük konuşma dilinii,farklı insanları anlayabilsin.

Kullanım amaçlarına bakarsak asıl veri kümesinin edebi metinlerden ziyade günlük kullanılan konuşma, sohbet dili olması gerektiğini de anlarız. Yapay cümleler, şiirler, makine konuşması gibi şeyler çocuğa yanlış şeyler öğretecektir.

Aşağıda süreçleri detaylandırırken doğru-yanlış ya da kabul edilebilir-edilemez olanları örnekleri ile vereceğiz…

Common Voice Süreçleri

Süreç temel olarak ikiye ayrılıyor, sonra her biri de yeniden iki aşamalı.

  1. Külliyata cümle ekleme (text corpus)
    1.1. CC0 (üzerinde hiç bir telif olmayan) cümleler bulma, aralarından seçme ve ekleme (bir kitabı hazırlamak boyuna göre değişmekle birlikte 1-2 gün sürebilir).
    1.2. Bu cümlelerin anadili Türkçe olan iki ayrı kişi tarafından kontrol edilip onaylanması ya da reddedilmesi. (bu daha hızlı bir işlem, ama vakit ayırırsanız; yoksa günler, haftalar sürüyor. Bir kişi cümlelerin uzunluğuna/zorluğuna ve okuma hızına göre saatte 400-600 cümle kontrol edebilir).
  2. Ses kayıtlarını oluşturma (voice corpus)
    2.1. Cümleleri okuyarak ses kaydetme (şu anda ortama ses kaydı 3.75 saniye, işlemleri doğru uygularsak saatte 200 kayıt yapılabilir)
    2.2. Kaydedilen seslerin iki ayrı kişi tarafından onaylanması ya da reddedilmesi. (bir kişi bir saatte 600 kadar cümle dinleyebiliyor).

Görüldüğü gibi ekleme/kayıt işleminin iki katı kadar onay işlemi ortaya çıkıyor. Eklerken kaydederken olduğu kadar onaylarken/reddederken de bir önceki bölümde anlattığımız nedenlerle dikkatli olmak gerekiyor.

Burada bir şeyin daha altını çizmek lazım: Veri seti incelendiğinde onay almış cümlelerin bir kısmında hatalı onay olduğunu görüyoruz. Daha dikkatli olmak, aşağıda anlatılan kuralları takip etmek gerek bunları azaltmak için.

Külliyata eklenen ve onaylanan cümleler düzenli aralıklarla (normalde iki hafta) derlenip bir sonraki sürece aktarılıyor.

Ses kayıtları da onaylanmış, onaylanmamış ya da hatalı oldukları bildirilmiş olarak gruplanarak senede iki kere Corpus (külliyat) olarak derleniyor (genelde Temmuz ve Aralık aylarının soruna doğru).

Kayıt olmanın ve demografik bilgileri vermenin faydaları

Common Voice’a üye olup herhangi bir bilgi vermeden de kayıt yapabiliyorsunuz. Her oturumda rastgele bir oturum kimliği yaratılıyor bunun için. Yani 10 kere girip beşer kayıt yaptığınız zaman sizi beş ayrı kişi gibi algılıyor. Cinsiyet, yaş gibi bilgiler de bulunamıyor kayıtlarda.

Öte yandan modellerin doğru dengelenmesi için idealde her yaştan ve her cinsiyetten eşit insan alınması lazım. Türkçe Corpus v7’yi analiz ettiğimizde yaklaşık %24’ün bu bilgileri vermeden ses kaydettiği görülüyor.

Kaydolur ve bu temel bilgileri verirseniz modellerin daha başarılı olmasını sağlayacaksınız. Üstelik kaç kayıt yaptığınızı, kaçına onay verdiğinizi görebilecek, daha sonra kayıtlarınızı indirebilecek, vazgeçtiyseniz silinmesini talep edebileceksiniz.

Bu faydalar Sık Sorulan Sorular sayfasında (Neden Hesap Açmalıyım başlığı altında) şu şekilde özetleniyor:

  • Anonim demografik veriler sağlayarak, gönderdiğiniz verileri mümkün olduğunca zenginleştirin. Verileri dış kullanıcılarla paylaşmadan önce tüm demografik verileri anonimleştiriyoruz.
  • Profil bilgileri, konuşma tanıma doğruluğunu eğitirken kullanılan ses verilerini iyileştirir.
  • Farklı dillerdeki ilerleme durumunuzu ve ölçümlerinizi takip edebilirsiniz.
  • Katkılarınızı dünyanın her yerindeki diğer gönüllülerle karşılaştırabilirsiniz.
  • Kişisel hedeflerinize ve proje hedeflerine ne kadar yaklaştığınızı görebilirsiniz.
  • İsterseniz e-posta listemize katılarak projeyle ilgili gelişmelerden haberdar olabilirsiniz.

Açık kaynak olan ve herkes tarafından indirilebilen veri setinde ise sizi tanımlayacak bir şey yok. Sizin kimliğiniz şöyle bir şey oluyor :slight_smile:

026eeac891913f2364d3a89af31d5b50344d61ab7c021855f4688cd6b13e0911f8bb741c3a9bc65ae967be70c61d88a5bfd1b121675e966bc010ef285f32f8cb

Data detaylı bilgi için lütfen SSS sayfasını okuyunuz…

Çok fazla kayıt yapmanın sonuçları

Başka yerlerde de bahsettiğimiz gibi tek kişinin çok fazla kayıt yapması şu an kullanılan modeller için boşa giden emek demek. Şu an kullanılan teknikler bir kişinin kaydettiği tek bir cümleyi alıyor sadece. Bunu veri setini incelediğimiz zaman da görüyoruz.

image

Burada “validated” dosyası onay almış her şeyi, “train” dosyası yapay zekayı eğitmek için kullandığımız veri setini, “test” dosyası ile başarımı ölçmek için kullanacağımız seti gösteriyor.

İdeal bir dünyada, her cümleyi her cinsiyetten, her yaş grubundan, her lehçe/ağızdan okumak mümkün olsaydı sistem en iyi başarıma ulaşacaktı. Çünkü eğitim için aldığımız ratgele küme dengeli olacaktı. Ama bu pek mümkün değil tabii. O yüzden çok fazla kayıt yapan genç bir erkeğin lehçesinin dengeleri bozmaması için her kişiden birer kayıt alınıyor.

Gördüğünüz gibi eğitim seti, toplam kümenin yaklaşık %13’ü. Geri kalan %87 ise (o eğitim seti için) boşa giden kayıtlar. Aslında boşa gitmiyorlar tabii, başka araştırmalar, sistemler için kullanılabilecekler. Ama CV tarafından yaratılan kümede yer almıyorlar.

İkinci bir sorun kaynakların tüketilmesi. Burada kaynak text corpus, yani cümleler. Epey emekle ve zar zor bulunarak elde edilen cümleler listenin en tepesine çıkmak için yarışan bir gönüllü tarafından tüketildiği zaman çeşitlilik sağlamak gene mümkün olmuyor. Sistem şu anda en az kayda sahip olan cümleleri kaydedilmek üzere insanların önüne getiriyor, yeni eklenenler bir kere kaydedilen diğerleri arasında yeniden sırasını bekler hale geliyor.

Dolayısı ile belki birkaç yüz kayıttan fazlasını yapmak yerine cümle bulma, cümleleri kontrol etme, başkalarının kayıtlarını dinleme, tanıtıma katkıda bulunma ve en önemlisi yeni gönüllüler bulma gibi konularda emek harcamak en iyisi…

1 Like

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.

Her aşama önemli ama cümleler olmazsa ne kaydedilecek ve dinlenecek?

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.

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. 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…

Önceki bölümde saydığımız nedenlerle gerek cümleleri eklerken gerekse kontrol ederken aşağıdakilere dikkat etmek gerekir. İngilizce ve genel bir listeyi şurada bulabilirsiniz - Düzeltme: Cümle Toplayıcı (Sentence Collector) desteklerimiz sonucunda yerelleştirildi, çevirileri yapıldı. Kuralların Türkçesi şurada.

  • 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 bir çok kişi epey emek vererek hepsini siliyor, hem de yapılmış kayıtları ile 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 başvurabilirsiniz. Türkçede çok yapılan yazım yanlışları Vikipedi’de listelenmiştir. Dil Derneği de doğru bir kaynak… 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.
  • 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 “sentence collector” cümleyi reddedecektir, bu değiştirilemeyen bir sabittir. Keskin bir kural olmamakla birlikte cümle uzunluğunu da maksimum 100-110 vuruş civarında tutmakta fayda var. Çok uzun cümlelerin okuması zor olabiliyor. Uzun cümleleri iki ayrı cümle haline getirmeye çalışmayalım, ama yan cümleler mesela “:”'dan ayrılabiliyor. Virgüllerden otomatik ayırma gibi işlemler de kabul edilebilir sonuçlar doğurmuyor.
  • Tek kelimelik ifadeler 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:
  • 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üş.
  • 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… Dikkat: Zaten bir çoğunu ekledik, artık yeni bir şey eklemeyelim diyoruz.
  • 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.
  • 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 lazım. Okurken başka tabii… Kurulacak sistemlerde bu gibi durumlar için semantik çözümlere yönelmek gerekiyor zaten.
  • 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 etmemiz lazım.
  • Arada sırada çıkan yabancı sözcükler sorun değil, hatta çok bilinen yer isimleri 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. 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.
  • 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 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 (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.

100.000 ve üzeri cümle eklemek için bir yöntem de sunuyor Common Voice.

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 %5’in 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 ve emek 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.

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

Önce iki ret alan cümle kabul edilmeyecektir. Cümleyi ekleyen bunları Rejected Sentences altında görecektir. Tercihen bunlar düzeltilip yeniden eklenebilir.

Ö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)

2. Ses kayıtlarını oluşturma

Cümleleri seslendirerek kaydetmek için buraya tıklayınız.
Kayıtlı cümleleri dinleyerek kontrol etmek için buraya tıklayınız.

Bu konudaki genel kurallar için Common Voice Katkıda bulunma kriterleri sayfasına göz atınız. Bu sayfanın çevirileri hala sürmektedir.

Unutmayın, bir kayıt iki kere onay almak zorunda. Dolayısı ile zamanınızın bir bölümünü de başkalarının yaptığı kayıtları dinlemeye ayırın.

2.1. Ses kaydetme

ÇOK ÖNEMLİ: Çok kayıt yapmaya, listelerde en tepeye çıkmaya çalışmayın, çabalarınız ve zamanınız boşa gidebilir. Şu an geçerli olan bir çok sistem modeli oluştururken bir kişiden bir cümle alıyor. Yaptığınız 1000 kaydın 999’u boşa gidecektir, üstelik siz okudunuz diye başka seslerin de önüne geçiyorsunuz. Önceliği dinlemeye, CC-0 kaynaklar bulmaya, onaylamaya verin… Daha da iyisi, yeni gönüllüler, yeni sesler bulun katkıda bulunacak.

İlk yapılması gereken daha önceki aşamalarda gözden kaçmış hatalar olabileceğini düşünerek cümleyi okumak ve şu açılardan kontrol etmek (bir önceki bölümü okuduğunuzdan emin olun, bazı esnekliklerimiz var):

  • Cümle birine/bir gruba hakaret içeriyor mu? (Unutmayın günlük küfürler geçerli)
  • Dilbilgisi ve yazım hatası var mı? (Varsa acımayın ama bir önceki bölümü okuyun)
  • Yabancı bir dilde mi ya da kelimelerin büyük çoğunluğu yabancı mı? (Ör. cümlenin tamamı da eski dilde olabilir, “Pink Floyd’un Dark Side of the Moon’u mu?” gibi bir cümlenin bu aşamada dil kümesine pek katkısı olmayacaktır)
  • Telaffuzu zor mu? (Buna dikkat, siz bazı eski kelimeleri bilmiyor olabilirsiniz, atlayın, bilenler okuyacaktır).

Bu durumda sol alttaki BİLDİR butonundan ilgili seçeneği işaretleyerek gönderiniz.

Daha sonra şu işlemleri atlamadan yapınız:

  • Cümleyi bir kere içinizden okuyunuz.
  • Cümleyi tam ve doğru okuyarak kaydediniz.
  • Yaptığınız kaydı cümleyi de yeniden okuyarak dinleyiniz.
  • Kaydınızda hata varsa yeniden kaydediniz.
  • Tamam olunca bir sonrakine geçiniz.

Yukarıda bahsedilen “kendi kaydını dinleme” özelliği atlandığı durumda bir çok kaydın ret alması söz konusu olabiliyor.

Metni telaffuzunu bilmediğiniz kelimeler dolayısı ile hakkı ile okuyamayacağınızı düşünüyorsanız ATLA butonuna basmaktan çekinmeyiniz, başkası okuyacaktır zaten. Aynı yöntemi okumak istemeyebileceğiniz küfür içeren, kaba cümleler için de kullanabilirsiniz. Ama lehçeli konuşuyorsanız ve mesela “maydanoz” kelimesini yerelde “madünüs” olarak kullanıyorsanız sizi özellikle duymak istiyoruz.

Kayıt yaparken ayrıca şunlara da dikkat ediniz (kayıtlarda bunların hepsini duyuyoruz):

  • Doğal okuyunuz. Çok yavaş (tek tek) okumayınız (maksimum kayıt süresi de var), çok hızlı okumayınız (sistemlerin kelimeleri ayırması gerekiyor).
  • Vurguları doğru vermeye çalışınız. Örneğin “Benim efendim” ile “Benim, efendim” hem okunuş olarak hem anlam olarak tamamen farklıdır. Başta bir kere okumuş olmak soru işareti, ünlem gibi cümle sonundaki noktalama işaretlerini, virgül gibi boşluk vermeniz gereken yerleri anlamanızı sağlayacaktır.
  • Vurguları veriniz ama çok da abartılı değil, Hamlet oynayacakmış gibi aşırı teatral kayıtlar pek yardımcı olmuyorlar.
  • Duyulamayacak kadar fısıltıyla ya da kayıt sisteminde distorsiyon yaratacak kadar çok bağırarak okumayınız, şarkı gibi söylemeyiniz.
  • Sesinizi değiştirerek, robot gibi vb. okumayınız.
  • Hafif arka plan sesi, çevrel gürültü iyidir ama arkadan başkalarının konuşmalarının olmadığı bir ortamda olduğunuza emin olunuz. Biri odaya gelip konuşarak kaydı bozduysa yeniden kaydediniz, metindeki kelimeler dışında kelime duymamalı sistemler. Sizin sesinizi bastıracak bir gürültü de olmamalı tabii ki.
  • Bazı kelimeleri okurken sözcükleri yinelemiş ya da kekelemiş olabilirsiniz. Yeniden kaydediniz.
  • Başta ya da sonra biraz boşluk bırakacaksınız. Bunların çok çok uzun olmamasına gayret ediniz. Özellikle başlardaki uzun boşluklar dinleyenler tarafından “bu kayıt boş” olarak algılanabilir, HAYIR butonuna basmalarına neden olabilir.
  • Kısa tek kelimelik ifadeler (ör. “Yok!”) çok kısa olduğu için sistem tarafından reddedilebiliyor. Başta sonda biraz boşluk bırakarak bu limiti aşabilirsiniz.
  • Cümlenin sonunu yutmayınız. Bu bazen sesinizi cümlenin son kelimesinde gittikçe azaltmanız, bazen de çok atik davranıp kaydı durdurmanız nedeniyle olabilir. Zaten kaydı dinleyeceksiniz, bu durum varsa yeniden kaydediniz.

Kayıtlar bittikçe -özellikle hattınız yavaşsa- birkaç saniye sunucuya yükleme zamanına da izin verin. Bilgisayarın ani kapanması, hattınızdaki kesintiler vb nedeniyle kayıtlarınız yüklenmemiş olabiliyor.

Türkçe anadilim değil, lehçeli konuşuyorum diye kayıt yapmaktan çekinmeyiniz. Tam tersi, sizin vereceğiniz katkı daha da önemli.

2.2. Eklenen seslerin kontrolü

Dinlemeden önce cümleyi okuyunuz. 2.1 maddesinin başında belirtilen durumlar varsa BİLDİR butonuna basabilirsiniz.

Onaylarken temel alacağınız koşul şu: Metinde yazan söylendiği zaman anlaşılıyor mu?

Şu durumlarda HAYIR butonuna basınız:

  • Yazı ile kayıt birbirini tutmuyor. Ek ya da eksik kelime var, ya da bir kelime değişik bir kelime gibi okunmuş…
  • Konuşanın okuduğu tam duyulmuyor (çok kısık sesli, ya da mikrofona çok yakın/bağırdığı için kelimeler anlaşılmıyor).
  • Köklü yanlış telaffuz var, kelime başka bir şeye dönüşmüş.
  • Bazı kelimeler yinelenmiş (ya da kekelemiş)
  • Araya başka sesler girmiş (başkasının konuşması, ezan sesi, hapşırma, öksürme vb)
  • Konuşan kelime telaffuzunu iyice bozarak kayıt yapmış (ör. robot gibi ya da vurgu ötesinde anlamsız bağırarak).

Şu durumlarda esnek davranınız (onay veriniz):

  • Lehçeli konuşma, yabancı birinin konuşması vb.
  • Bazı harflerin yutulması (çoklukla “r” harfi - “geliyor” yerine “geliyo” denmesi). Herkesin okuma/konuşma/telaffuzunda farklılıklar olabilir, kendi yörelerinde farklı söylüyor olabilirler… Sistemlerin bunları öğrenmesi istenir.
  • Vurguların doğru olmaması da sorun değil. Sorunun soru gibi olmadığı, emir kipinin vurgulanmadığı durumları kabul ediniz.

Şu durumlar zaten kabul edilir:

  • Başta ve sonraki boşluklar
  • Konuşmayı bastırmayacak arka plan sesleri
  • Fare tıklamaları, sesi kapatmayan diğer tıkırtılar.

Emin değilseniz sağduyunuzu kullanıp karar veriniz, ya da ATLA butonuna basınız.

Bazen kayıtlar boş olabiliyor ya da size öyle gelebiliyor. Bu durum kaydedenin hattından, sunucudaki bir sorundan ya da sizin hattınızın stabil olmamasından kaynaklanıyor olabilir. Bu tür bir kayıtla karşılaşmanız durumunda öncelikle bir süre bekleyin, belki başta fazla boşluk bırakılmış olabilir. Ardışık bir çok kayıtta sessizlik varsa bu hattınızdan ya da sunucudan kaynaklanıyor olabilir. Genelde sayfayı yenilediğinizde bu sorun giderilir. Emin değilseniz ATLA butonuna basın.

Örnekler

Bu örneklerin büyük çoğunluğu binlerce kaydın dinlenmesi sırasında alınan notlardan özetlenmiştir.

Görüldüğü gibi günlük konuşmalardaki ya da yereldeki şekillerine izin veriyoruz ve hatta özellikle istiyoruz. Ama özellikle konuşma dilinde yazılmamış metinlerden de doğru Türkçe gelmesini istiyoruz.

Örneğin aşağıdaki “söyle bana” farklı olarak “süüle bana” diye okunmuş ve bunu kabul etmişiz. Doğal olarak “süüle” diye bir kelimenin başka bir metinde olma olasılığı düşük, sözlükte de yok. Kabul ettiğimiz için bir konuşmada “süüle bana” denince ne demek istediğini anlayacak sistem. Bunu kabul etmezsek anlamayacak.

Biz günlük yaşamda anlıyoruz, makinenin de anlamasını istiyoruz.

:question: Yazan | Okunan [Notlar]

:white_check_mark: Düşündüğü yalnız buydu. | Düşündüğü yanlız buydu.
:white_check_mark: Aferin sana. | Afferin sana
:white_check_mark: Bir gelemedin. | Bi gelemedin.
:white_check_mark: İyi akşamlar… | İyakşamlar…
:white_check_mark: Söyle bana | Süle bana
:white_check_mark: Katil zanlısı. | Kaatil zanlısı.
:white_check_mark: Değil mi? | Diilmi?
:white_check_mark: Bir şey soracağım… | Bişey sorcam…
:white_check_mark: Şaka yapıyor olmalısın. | Şaka yapıyo olmalısın.
:white_check_mark: Bir işarete bakıyormuşsun. | Bi işarete bakıyomuşun.
:white_check_mark: Herkes dışarı! | Herkez dışarı!
:white_check_mark: Eğer gelmeyeceksen haber ver. | Eyer gelmiyceksen haber ver.
:white_check_mark: Gelirken maydanoz alsana… | Gelirken maadonos alsana…
:white_check_mark: Bir dakika bekle. | Bir dakka bekle.
:white_check_mark: Sen neden bahsediyorsun? | Sen neyden bahsediyon?
:x: Tabii ki hayır! | Tabiykide hayır!
:x: Ama… | Aaamaa… [‘Kör’ anlamındaki 'Âmâ olarak algılanacaktır]
:x: Başımı çevirip baktığım zaman… | Başını çevirip baktığı zaman… [Özne değişmiş]
:x: Bir işarete bakıyormuşsun. | Bi işarete bakıyomusun. [Yüklem değişmiş]
:x: Sallanarak yukarıya çıktı. | Salınarak yukarı çıktı. [Benzer gibi gelse de aslında anlamı farklı]
:x: Sonra kaşlarını çatarak… | Sonra saçlarını saçarak…
:x: Kadının bu lüzumsuz merakı canımı sıkıyordu. | Kadının bu zulümsüz merakı canımı sıkıyordu.
:x: Birdenbire bu sesler kesildi. | sildi Birdenbire bu sesler kesildi. [Bazı gönüllüler bir kere sesli okuyup ardından kayda basıyorlar, bir önceki okuyuştan kelimeler kalabiliyor]
:x: İçki? | İçki? Ha ha, alırım… [Eklenmiş kelimeler]
:x: O, taş odalarda kim bilir ne yapıyor? | O, taş odalarında kim bilir ne yapıyor?