Okuldan Sonrası Ölüm (okul-ölüm)

Nisan 22, 2009 03:37 tarihinde dandelo tarafndan eklenmistir.

    Bir arkadaşımın "okuldan sonra ölüm gelir" şeklinde ifadesine önce şaşırarak sonra işin içinde bir bit yeniği arıyarak aklıma bazı fikirler geldi. İşin aslı; okul kelimesinin harflerinin her birinden bir sonra gelen harflerin oluşturduğu kelime "ölüm". Ne büyük tesadüf değilmi? Yaptığım ufak çaplı bir araştırma ile, 12703 kelime içinde sadece 8 kelime bu şekilde eşleşti. Bunların içinde 4 harfli eşleşme sadece 2 adet. "Nötr" be "Okul" kelimeleri.

 

   "Nötr" kelimesini Türkçe saymassak 12703 kelime içinde sadece bir adet eşleşme var; (okul-ölüm) eşleşmesi. Bunun oranı 0,000157 den daha az. Bu değerde okuldan sonra ölüm gelir tezinin tesadüf olma ihtimalini gösterir. Okulumun bitmesine son 2-3 ay kala(!) yaptığım ufak bir çalışmayı paylaşmak istiyorum. (okul_olum.rar)

   "İngilizce-Türkçe" sözlük veritabanından (sozluk.rar) sadece Türkçe kelimeleri alarak ufak bir veritabanı (kelimeler.mdb) oluşturdum.Dil olarak C#kullandığım programı bölüm bölüm açıklayalım. 

        List<string> kelimeler = new List<string>();
List<string> eşleşmeler = new List<string>();
string harfler = "abcçdefgğhıijklmnoöprsştuüvyz-";

private void Form1_Load(object sender, EventArgs e)
{
    baglan();

    //tüm kelimeleri yaz
    int k = 0;
    foreach (var kelime in kelimeler)
    {
        listBox1.Items.Add(kelimeler[k].ToString());
        k++;
    }

    //tüm kelimeleri kontrol et
    for (int i = 0; i < kelimeler.Count; i++)
    {
        string al = kelimeler[i].ToString();
        string ver = "";

        foreach (char harf in al)
        {
            int sayı = harfler.IndexOf(harf);
            ver += harfler[sayı + 1];

        }

        if (kelimeler.Contains(ver))
        {
            listBox2.Items.Add(al + " - " + ver);
            eşleşmeler.Add(ver);
        }
    }

    int kelime_adet = kelimeler.Count;
    int eşleşme_adet = listBox2.Items.Count;

    double ikiharfli = eşleşmeler.Where(kelime => kelime.Length == 2).Count();
    double üçharfli = eşleşmeler.Where(kelime => kelime.Length == 3).Count();
    double dörtharfli = eşleşmeler.Where(kelime => kelime.Length == 4).Count();

    string metin = string.Format("{0} adet kelime içinde sadece {1} adet kelime eşleşmiştir."
        +" {2} kelime içinde {3} adet iki harfli, {4} adet üç harfli,"
        + " {5} adet dört harfli eşleşme vardır.\n\nDört harfli eşleşme ihtimali : {6} dır.",
        kelime_adet, eşleşme_adet,kelime_adet,ikiharfli,üçharfli,dörtharfli,dörtharfli/kelime_adet);

    richTextBox1.Text = metin;

İlk olarak bağlantı kurulup tüm kelimeler "kelimeler" listesine eklenmektedir. Daha sonra "kelimeler" içindeki tüm kelimeler dolaşılıp harflerinin bir sonraki harflerden oluşan kelime elde edilmektedir.

public void baglan()
{
    OleDbConnection baglanti = new OleDbConnection();
    baglanti.ConnectionString = @"Provider= Microsoft.Jet.OleDB.4.0;Data Source = kelimeler.mdb";

    string sorgu = "SELECT kelime FROM TBLkelimeler";
    try
    {
        baglanti.Open();
        komut = new OleDbCommand(sorgu, baglanti);
        tablo = komut.ExecuteReader();
        
        while (tablo.Read())
        {
            kelimeler.Add(tablo[0].ToString());    
        }
    }
    catch
    {
        MessageBox.Show("Hata!");

    }
    finally
    {
        baglanti.Close();
    }
}

Yeni kelime oluşturulur.

for (int i = 0; i < kelimeler.Count; i++)
{
    string al = kelimeler[i].ToString();
    string ver = "";

    foreach (char harf in al)
    {
        int sayı = harfler.IndexOf(harf);
        ver += harfler[sayı + 1];
    }

Yeni oluşan kelime, "kelimeler" içindeyse listbox'a eklenir.

    if (kelimeler.Contains(ver))
    {
        listBox2.Items.Add(al + " - " + ver);
        eşleşmeler.Add(ver);
    }

}

Son olarakta eşleşmeler sayılıp oranlar hesaplanır.

int kelime_adet = kelimeler.Count;
int eşleşme_adet = listBox2.Items.Count;

double ikiharfli = eşleşmeler.Where(kelime => kelime.Length == 2).Count();
double üçharfli = eşleşmeler.Where(kelime => kelime.Length == 3).Count();
double dörtharfli = eşleşmeler.Where(kelime => kelime.Length == 4).Count();

string metin = string.Format("{0} adet kelime içinde sadece {1} adet kelime eşleşmiştir."
    +" {2} kelime içinde {3} adet iki harfli, {4} adet üç harfli,"
    + " {5} adet dört harfli eşleşme vardır.\n\nDört harfli eşleşme ihtimali : {6} dır.",
    kelime_adet, eşleşme_adet,kelime_adet,ikiharfli,üçharfli,dörtharfli,dörtharfli/kelime_adet);
 

 

Bu ufak ama önemli araştırma ile Doğal Dil İşleme üzerine ilk çalışmamı da yapmış oldum. Nice iyi çalışmalara...(Tabi okul bitmeden)

 


Yorumlar

Nisan 28. 2009 11:41

Emre Sevinc

Merhaba,

Belki biraz eski kafalı algınabilirim bu yazdıklarımdan ötürü ama çok kısa bir tavsiyede bulunmak istedim, değişken isimlerini seçerken, Türkçe harf kullanmazsanız daha iyi olur, eşleşme_adet, eşleşmeler gibi değişkenlerinizi kast ediyorum.

Emre Sevinc

Nisan 28. 2009 21:49

Faruk Terzioğlu

Engin yorumlarınız için teşekkür ederim Emre hocam.C# ta pek sorun olmadığı için biraz serbest davrandım. Yoksa büyük projelerde bende Türkçe karakter kullanmamaya dikkat ediyorum.

Faruk Terzioğlu

Mayıs 1. 2009 23:24

Veysel Keleş

çok ilginç gerçekten ömerim. =) güzel bir iş çıkarmışsın ayrıca. İşin teknik kısmı ile alakalı pek bir yorum yapamayacağım ama neyse.. =)

Veysel Keleş

Mayıs 11. 2009 12:05

Flash Oyun

Ok sonra ölüm başlığı çok ilgimi çekmişti Smile

Flash Oyun

Mayıs 11. 2009 12:07

chat

okulla ölümü ilişkilendirmek cesaret işiSmile

chat

Mayıs 11. 2009 15:07

Scorpion

hehe okul - ölüm

Scorpion

Mayıs 11. 2009 19:18

Faruk Terzioğlu

Bilim nelere kâdir...

Faruk Terzioğlu

Mayıs 11. 2009 21:31

chat

Teşekkürler, arkadaşlar

chat

Mayıs 12. 2009 03:02

NesMedya Haber Video Oyum Seo Yarışması

teşekkürler Smile

NesMedya Haber Video Oyum Seo Yarışması

Mayıs 12. 2009 22:03

toki

türkçe karakterler sorun cıkarmıyor mu

toki

Mayıs 13. 2009 06:06

Faruk Terzioğlu

Hayır. C# ta istediğin şekilde türkçe karakterler kullanabilirsin.

Faruk Terzioğlu

Mayıs 27. 2009 12:37

kurtlar vadisi pusu

Mantıklı birşey bence.. (:

kurtlar vadisi pusu

Haziran 13. 2009 19:30

film izle

denedim çalışıyorum çok sağol.

film izle

Haziran 15. 2009 12:39

dizi izle

Teşekkür ederim

dizi izle

Temmuz 20. 2009 13:36

Yağız Gönüler

Gerçekten ilginç. Yuh dedim sadece. Uygulaman da pek hoş Smile

Yağız Gönüler

Temmuz 21. 2009 06:34

chat

okulla ölümü bir katmamaız gerek Smile

chat

Temmuz 27. 2009 02:18

komik oyunlar

güzel bir konuya deyinmişsiniz. iyi bir çalışma teşekkürler.

komik oyunlar

Yorum ekle


(Gravatar simgesini gösterecek)

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading