Boş zamanlarında dizi/film izlerken bir yandan da İngilizce öğrenmeyi kim istemez ki. Yazdığım bu program sayesinde işi bir adım ileri taşımış ve dizi/film izlerken İngilizce kelime haznemizi geliştirmenin daha kolay bir yolunu bulmuş oldum. Program, altyazıda geçen kelimeleri, bildiğiniz kelimelerin olduğu liste ile karşılaştırıp; bilmediklerinizin anlamlarını sözlükten alıp, bunları dizideki tekrar miktarlarıyla birlikte bir dosyaya yazıyor. Size de dizi/film izlemeden önce bunlara kısaca bir göz atmak; bu kelimelerin belli bir miktarına çalışmak kalıyor.
Programa ve kodlarına buradan ulaşabilirsiniz: Altyazıdan Kelime Anlamlarına v1.0
Github: Altyazıdan Kelime Anlamlarına v1.0
(Programı geliştirip, bir web sitesi oluşturarak yayınlamayı düşünüyordum ki yapmak istediğim birçok şeyi bünyesinde barındıran bir site oluşturulmuş zaten. Kullanmanızı tavsiye ederim: https://www.wordtaboo.com/ )
Üniversite eğitimimin ilk senesinde boş zamanlarımda yabancı film ve dizi izliyor; bir yandan da İngilizce konusunda kendimi geliştirmek için İngilizce altyazıyla izlemeyi tercih ediyordum. Yeri geldiğinde anahtar kelimeler için ya da sıkça tekrar eden kelimeler için filmi / diziyi durdurup kelimelerin anlamlarına bakıyordum. Bu da dizinin eğlencesini azaltıyordu doğal olarak. Ben de internette altyazı metnindeki kelimelerin tekrar sayısına göre sıralı listesini çıkaran bir program var mı diye araştırmıştım. Böyle bir program sayesinde altyazıda en çok tekrar eden ve önemli kelimelere diziyi izlemeden önce hızlıca çalışır ve bu sayede dizide karşılaştığımda sözlüğe bakmam gerekmezdi. Bununla birlikte daha önce çalıştığım kelimeyi dizi izlerken aktif olarak tekrar etmiş olur ve kelimenin daha iyi bir şekilde ezberlenmesini sağlarım diye düşünüyordum. Ama doğru düzgün bir şey bulamamıştım.
3 dönem önce okulda
C dersini alıp programlamaya giriş yaptım. Bu dönem de C++ ile veri yapıları ve
C# ile nesne tabanlı programlama derslerini alıyorum. Programlama alanında
kendimi geliştirmek istiyorum ve bunun da ufak tefek projeler yapmakla, yeni
programlar yazmakla daha kolay olacağının farkındayım. Hem dizi film izlerken
İngilizce öğrenmeme yardımcı olması, hem programlama konusunda kendimi
geliştirmeme yardımcı olması hem de bu ihtiyaçlara sahip diğer kişilerin de
faydalanması için bir süredir, yukarıda bahsettiğim bu programı kendim yazmayı
düşünüyordum ve sonunda yaptım.
Program için
herhangi bir isim bulamadım. Çalışması ise şöyle: Program sizden altyazı.srt
dosyasını alır, içerisinden kelimeleri çeker ve tekrar sayısıyla birlikte
sıralı bir liste haline getirir. Bir de sizden "bildiklerim.txt" isminde anlamını
bildiğiniz kelimelerin içinde bulunduğu bir nevi sizin İngilizce kelime
haznenizi yansıtan bir dosyayı alıyor aynı işlemleri buna da uyguluyor. Daha
sonra bu iki dosyadaki kelimeleri karşılaştırıyor. İki listedeki kelimeleri
fark, kesişim ve birleşim kümesi olarak farklı belgelere yazıyor. Sonrasında
altyazıda bulunan ama anlamını bilmediğiniz kelimeleri teker teker herhangi bir
çekim eki aldıysa yalın hale çeviriyor (bunu hem veritabanı kullanarak hem de
grammer kurallarını kullanarak yapıyor) ve bu kelimelerin anlamlarını sözlük
veritabanından kontrol edip yeni bir liste oluşturuyor. Son haldeki listemiz
dizide geçen anlamını bilmediğimiz kelimelerini, bu kelimelerin yalın
hallerini, dizide tekrar etme miktarını ve sözlükteki anlamlarını içeriyor. Bu
programı diziye başlamadan önce çalıştırıp, anlamını bilmediğiniz kelimelerin
bir kısmına çalıştıktan sonra çalıştırarak İngilizcemizi, en azından İngilizce
kelime bilgimizi rahatça geliştirebiliriz. Bu programın hedefi dizi film ve
altyazı ile kısıtlı değil farklı amaçlar için de kullanılabilir. Mesela iki
farklı İngilizce metni karşılaştırmak, kelimelerin tekrarlı listesini çıkarıp
anlamlarına ulaşmak için de rahatça kullanılabilir.
Bu programı
geliştirirken DevC++ kullandım ve programı C++ dilinde yazdım. Tabii ki aynı
işleve sahip ve daha verimli program yazmak mümkün. Ancak bu konularda pek
tecrübeli değilim; zamanla daha iyi programlar yazacağımı düşünüyorum. C# ile de
bu program yazılabilir ve aynı zamanda rahatlıkla bir kullanıcı arayüzü
eklenebilirdi. Ancak ileride gömülü sistem programlama alanında çalışacağım
inşallah; bu nedenle C ve C++’da tecrübe kazanmam daha önemli gözüküyordu. Tabi
bir de veri yapıları dersi C++ üzerinden anlatılınca bu kararımdan şaşmadım.
Aynı algoritma C# üzerine de zorlanmadan taşınabilir aslında. Bunun yanında
program genel olarak vektörler dinamiği üzerinde kuruludur. Vektörler C++’da
dinamik bir dizi gerçeklemesidir ve farklı veri tipi ve nesneleri tutan bir
dizi oluşturmak için rahatlıkla kullanılabilir.
Program Nasıl Kullanılır?
Program Windows 8 ve 10 olan bilgisayarlarda denendi çalışıyor. Windows 7’de çalışmazsa uyumluluk ayarlarından Windows server 2008 seçilerek çalıştırılabileceğini düşünüyorum. Programı öncelikle arşivden çıkarıp yeni bir klasör içine taşıyın. Sonrasında izleyeceğiniz dizinin “.srt” uzantılı altyazı dosyasını bu klasör içine atın ve adını “altyazı.srt” olarak değiştirin (Eğer bilgisayar ayarlarında dosya adının uzantısı gözükmemek üzere ayarlanmış ise altyazı dosyasının adını sadece "altyazı" olarak değiştirmeniz yeterli olacaktır). Eğer altyazıdaki bütün kelimelerin anlamını öğrenmek istiyorsanız “bildiklerim.txt” belgesini açıp içindeki her şeyi silin (dosya başlangıçta boş olacaktır zaten). (Düzeltme: bildiklerim dosyasını boş bırakınca program çalışmıyor. Sorunu çözüp güncelleme yapacağım. Şimdilik içine en azından 3-5 kelime yazıp o şekilde deneyiniz.) Sadece bilmediklerinizin anlamları olsun istiyorsanız bildiğiniz kelimeleri “bildiklerim.txt” belgesine not defteri ile açıp ekleyin. İlk sefer için tek tek elle yazmak istemiyorsanız internetten İngilizcede en çok kullanılan 500, 1000, 3000 kelime diye aratıp buradaki listelerdeki kelimeleri de ekleyebilirsiniz. Sonrasında “altyazıdan kelimelere.exe” programını çalıştırınız. Program listeleri hazırladıktan sonra bilmediğiniz kelimelerin anlamlı listesine alfabetik sıralı olarak “afb_anlamlar_alf.txt” tekrara dayalı sıralı olarak “afb_anlamlar_tek.txt” dosyalarından ulaşabilirsiniz. Bu kelimelere çalıştıktan sonra öğrendiğinizi düşündüğünüz kelimeleri “bildiklerim.txt” dosyasına ekleyerek programın sonraki çalışmalarında sadece bilmediğiniz kelimeleri göstermesini sağlayabilirsiniz. Bunu tek tek manuel olarak yapmak istemezseniz, sadece anlamını bilmediğiniz açıklamasız kelimelerin listesini içeren “afb.txt” dosyası içerisindeki kelimeleri kopyalayıp “bildiklerim.txt” içerisine ekleyebilirsiniz. Rakam ve harf harici diğer işaretleri eklemeniz programın çalışmasını engellemez ama programı yavaşlatır. Program sadece İngilizce kelimeler için hazırlanmıştır, diğer dillerdeki altyazılar için çalışmayacaktır. Bildiklerim, çekimli kelimeler, sözlük belgelerini yanlışlıkla silmemeye çalışın lütfen. (Örnek olması açısından Ip Man 3 filmine ait altyazı.srt dosyasını rar içine ekledim, aynı şekilde bildiklerim.txt dosyası içine de İngilizce'de en çok kullanılan 500 kelimeyi ekledim. )
Program herhangi
bir deneme sürecinden geçmedi; ben de yeni yeni kullanmaya başlıyorum. Zaman geçtikçe
üzerinde eklemeler, güncellemeler yapıp burada paylaşmayı düşünüyorum. Bu
konuda programı kullandıktan sonra önerilerinizi ve sorularınızı iletirseniz
sevinirim. Aynı şekilde paylaşacağım kodları inceleyip alternatif önerecek olursanız ya
da farklı bir özelliğin programa dahil edilmesini düşünürseniz lütfen alttaki yorumlar
kısmına yazınız yada bana facebook ve email üzerinden ulaşınız.
(abdullah.varici@gmail.com – https://www.facebook.com/abdullah.varici)
(abdullah.varici@gmail.com – https://www.facebook.com/abdullah.varici)
------------------------------------------------------
Programa ve kodlarına buradan ulaşabilirsiniz: Altyazıdan Kelime Anlamlarına v1.0
Github: Altyazıdan Kelime Anlamlarına v1.0
a_alf.txt : Altyazı dosyasındaki kelimelerin alfabetik sıraya göre sıralandığı ve tekrar miktarıyla yazıldığı dosyadır.
b_alf.txt : Bildiklerim dosyasındaki kelimelerin alfabetik sıraya göre sıralandığı ve tekrar miktarıyla yazıldığı dosyadır.
a_tek.txt : Altyazı dosyasındaki kelimelerin tekrar etme miktarına göre sıralandığı ve tekrar miktarıyla yazıldığı dosyadır.
b_tek.txt : Bildiklerim dosyasındaki kelimelerin tekrar etme miktarına göre sıralandığı ve tekrar miktarıyla yazıldığı dosyadır.
afb.txt : Altyazı dosyasında bulunan ama bildiklerim dosyasında bulunmayan (a fark b) kelimelerin alfabetik sıraya göre sıralandığı ve altyazıdaki tekrar miktarlarıyla yazıldığı dosyadır.
bfa.txt : Bildiklerim dosyasında bulunan ama altyazı dosyasında bulunmayan (b fark a) kelimelerin alfabetik sıraya göre sıralandığı ve bildiklerim dosyasındaki tekrar miktarlarıyla yazıldığı dosyadır.
anb.txt : Hem altyazı hem de bildiklerim dosyasındaki ortak olarak bulunan (a kesişim b) kelimelerin alfabetik sıraya göre sıralandığı ve toplam tekrar miktarlarıyla yazıldığı dosyadır.
aub.txt : Altyazıda ve bildiklerimde geçen kelimelerin (a birleşim b) alfabetik sıraya göre sıralandığı ve toplam tekrar miktarlarıyla yazıldığı dosyadır.
afb_anlamlar_alf.txt : Altyazı dosyasında bulunan ama bildiklerim dosyasında bulunmayan (a fark b) kelimelerin alfabetik sıraya göre sıralandığı, altyazıdaki tekrar miktarları ve sözlükteki anlamlarıyla yazıldığı dosyadır.
afb_anlamlar_tek.txt : Altyazı dosyasında bulunan ama bildiklerim dosyasında bulunmayan (a fark b) kelimelerin tekrar miktarına göre sıralandığı, altyazıdaki tekrar miktarları ve sözlükteki anlamlarıyla yazıldığı dosyadır.
Bu dosyalar içinden en önemlileri afb_anlamlar_tek.txt ve afb.txt dosyalarıdır. Programı çalıştırdıktan sonra afb_anlamlar_tek.txt'deki anlamlı listeden kelimelere çalışılıp; afb.txt'deki kelimeleri bildiklerim.txt'ye ekleyerek sürekli bildiklerim dosyasının güncelliğini sağlamış oluruz.
Github: Altyazıdan Kelime Anlamlarına v1.0
------------------------------------------------------
Ekleme 1: Programı çalıştırdıktan sonra oluşan dosyalar ve içerikleri hakkında yukarıda kısmen değinmiş olsam da bunları tek tek açıklamam daha iyi olacak gibi. Bu dosyaların birçoğu kullanıcılar tarafından pek ihtiyaç duyulmayan dosyalar. Bu nedenle program sonraki versiyonlarda ya bu dosyaları hiç oluşturmayacak şekilde ya da kullanıcının tercihine göre oluşturacak şekilde düzenlenecektir.a_alf.txt : Altyazı dosyasındaki kelimelerin alfabetik sıraya göre sıralandığı ve tekrar miktarıyla yazıldığı dosyadır.
b_alf.txt : Bildiklerim dosyasındaki kelimelerin alfabetik sıraya göre sıralandığı ve tekrar miktarıyla yazıldığı dosyadır.
a_tek.txt : Altyazı dosyasındaki kelimelerin tekrar etme miktarına göre sıralandığı ve tekrar miktarıyla yazıldığı dosyadır.
b_tek.txt : Bildiklerim dosyasındaki kelimelerin tekrar etme miktarına göre sıralandığı ve tekrar miktarıyla yazıldığı dosyadır.
afb.txt : Altyazı dosyasında bulunan ama bildiklerim dosyasında bulunmayan (a fark b) kelimelerin alfabetik sıraya göre sıralandığı ve altyazıdaki tekrar miktarlarıyla yazıldığı dosyadır.
bfa.txt : Bildiklerim dosyasında bulunan ama altyazı dosyasında bulunmayan (b fark a) kelimelerin alfabetik sıraya göre sıralandığı ve bildiklerim dosyasındaki tekrar miktarlarıyla yazıldığı dosyadır.
anb.txt : Hem altyazı hem de bildiklerim dosyasındaki ortak olarak bulunan (a kesişim b) kelimelerin alfabetik sıraya göre sıralandığı ve toplam tekrar miktarlarıyla yazıldığı dosyadır.
aub.txt : Altyazıda ve bildiklerimde geçen kelimelerin (a birleşim b) alfabetik sıraya göre sıralandığı ve toplam tekrar miktarlarıyla yazıldığı dosyadır.
afb_anlamlar_alf.txt : Altyazı dosyasında bulunan ama bildiklerim dosyasında bulunmayan (a fark b) kelimelerin alfabetik sıraya göre sıralandığı, altyazıdaki tekrar miktarları ve sözlükteki anlamlarıyla yazıldığı dosyadır.
afb_anlamlar_tek.txt : Altyazı dosyasında bulunan ama bildiklerim dosyasında bulunmayan (a fark b) kelimelerin tekrar miktarına göre sıralandığı, altyazıdaki tekrar miktarları ve sözlükteki anlamlarıyla yazıldığı dosyadır.
Bu dosyalar içinden en önemlileri afb_anlamlar_tek.txt ve afb.txt dosyalarıdır. Programı çalıştırdıktan sonra afb_anlamlar_tek.txt'deki anlamlı listeden kelimelere çalışılıp; afb.txt'deki kelimeleri bildiklerim.txt'ye ekleyerek sürekli bildiklerim dosyasının güncelliğini sağlamış oluruz.
Selam Abdullah,
YanıtlaSilCok guzel ve kullanisli bir program. Tebrik ederim. Bircok insan kullanirsa pratik olarak ingilizcelerini gelistirebilir. Cok iyi fikir.
Koda soyle bir baktim bir cok tekrar kelimelerle ugrasiyorsun acaba hashmap ya da c++ da map diye geciyor sanirim bu data structure'i kullanmak daha faydali olur mu acaba? sozlukte bulunan kelimeleri key yapip tekrar karsilastiginda count'i artirmak kolay bir yontem olabilir mi?
Ayrica github acsana. Ordan butun projelerini paylasirsin. Bircok programci oyle yapiyor seni de bekleriz. (github.com/tameravci)
selamlar
Merhaba Tamer,
SilYorum ve fikirler için teşekkürler. Map yapısına kısaca bir göz atmıştım ama vector'lerde içerisindeki elemana direkt ulaşma imkanı cezbetti diyebilirim. Ama detaylı bakmamıştım. Biraz daha araştırılıp; avantaj ve dezavantajlarına bakılıp gerekirse programın sonraki versiyonları o yapı üzerine kurulabilir aslında.
Github fena fikir değil :)
Tebrikler Abdullah, çok iyi fikir. Benim de ihtiyacım olan bir şeydi aslında. Deneyeceğim. Github için çok düşünme hemen edinmen gereken bir yetenek. Windows kullanıyorsan sourcetree gibi bir git arayüzü kullanmanı tavsiye ederim. Git kullanmak daha derli toplu çalışman için imkan yaratacaktır bunun yanında yazdığın kodların diğer insanlar tarafından ulaşılması için en uygun kaynaktır.
YanıtlaSilTeşekkürler Yasin,
SilGithub hesabını bugün açtım. Programcılar için bir gereklilik gibi gözüküyor anladığım kadarıyla. Sourcetree arayüzünü de araştıracağım.
Tek tek dosyaların anlamlarını söyleyebilir misin?
YanıtlaSila_alf:
a_tek:
afb:
afb_anlamlar_alf:
afb_anlamlar_tek:
anb:
aub:
b_alf:
b_tek:
bfa:
Yukarıda yazının sonuna ekleme yapıp açıklamaya çalıştım.
SilElinize sağlık ama daha kısa bir açıklama ekleseniz daha iyi olur. Son kullanıcı olarak programı neyle yazdığınızı bilmektense nasıl kullanacağımı okumayı yeğlerim.
YanıtlaSilTeşekkürler, haklısınız kısmen. Fırsat bulduğumda yada sonraki versiyonlarda program kullanıcılarına yönelik açıklama kısa ve net olacaktır. Ama bu sayfa sadece bu programı kullanacak olanlara değil buna benzer fikirleri olup bunları pratiğe dökmek isteyenlere de hitap ettiği için sadece programın kullanımı değil aynı zamanda geliştirilmesi hakkında bilgi içermekte.
Silçok uzun şu en başa sadece kullanacaklar için iki satırlık yer koyar mısın kardeşim. Kıbrısdan selamlar
YanıtlaSil"Program Nasıl Kullanılır?" başlığından sonra anlattım. Maalesef bunu kısaltıp başa eklemeyi şuan için düşünmüyorum. Programın yeni versiyonu üzerinde çalışıyorum. Çok daha kullanışlı bir arayüze sahip olacak. Sayfadaki sağ üst taraftaki e-posta aboneliği ile yeni versiyonu paylaştığımda bilgi sahibi olabilirsin.
SilMerhaba,
YanıtlaSilYeni versiyon için dikkat edilebilecek bir kaç nokta, isterseniz dikkate alabilirsiniz.
-Dosyalarla ilgili işlemlerde C++'ın fonksiyonları kullanılabilir.
-Standart kütüphanenin fonksiyonları daha çok kullanılabilir.(sort, karakter test fonksiyonları vs.)
-Bir sınıf oluşturup sınıfla ilgili fonksiyonları üye fonksiyon yapmak.
-Vectorleri fonksiyonlara değer ile geçmek boş yere allocation'a ve kopyalamaya sebep olur. Bu durumda referans semantiği, gereken yerlerde de const anahtar sözcüğü kullanılabilir. Aslında kodun çoğu yerinde const anahtar sözcüğü eksik. Adresini geçmek yerine yine referans kullanılabilir.
-Hata mesajlarını cout'a değil de cerr'e yazdırmak düşünülebilir.
-char diziler yerine string sınıfına daha çok kullanmak.
-cout << endl; yerine cout << "\n" kullanılabilir. Her cout << endl'de buffer flush ediliyor.
-C++ çok büyük ve güçlü bir dil dilin kurallarına ve araçlarına bir göz atmakta fayda var.
Tavsiyeler için çok teşekkür ediyorum. C++'da yazacağım bu ve sonraki projelerde söylediklerinizi göz önünde bulunduracağım. Gerçi programın yeni versiyonunu C# ile yazıyorum daha iyi bir arayüze sahip olması açısından ama genel olarak C++ diline hakim olmak istiyorum.
Silkardeşim eline sağlık hiç bir işime yaramadı
YanıtlaSilCanınız sağolsun.
SilMükemmel olmuş.
YanıtlaSilAbdullah kardeş, Windows 7 Professional Service Pack 1 kullanıyorum ancak uyumluluk modunu Windows server 2008, windows vista, vista Service Pack 1 ve vista Service Pack 2 modlarına çevirmeme rağmen programını kullanamadım yardımcı olur musun? kasatura84@gmail.com
YanıtlaSilEğer bilgisayarınız 32-bit sisteme sahipse program çalışmıyor olabilir. Daha sonradan yazıya eklediğim web sitesini kullanabilir yada kodları kendi bilgisayarınızda derleyip çalıştırabilirsiniz.
SilMerhaba, www.wordiam.com'u kullanarak dizi alt yazilarindan Ingilizce ogrenebilirsiniz. Ek olarak gelistirdigimiz ozellikler, otomatik altyazi destegi, gelismis Ingilizce sozluk, cumle ceviri destegi. Yazinizda bizden de bahsedebilirseniz sevinirim.
YanıtlaSil