{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.12.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceType":"competition","sourceId":121150,"databundleVersionId":15833391}],"dockerImageVersionId":31287,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2026-03-08T19:35:07.111146Z","iopub.execute_input":"2026-03-08T19:35:07.112118Z","iopub.status.idle":"2026-03-08T19:35:07.119700Z","shell.execute_reply.started":"2026-03-08T19:35:07.112078Z","shell.execute_reply":"2026-03-08T19:35:07.118949Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\"\"\"\nADIM 1: train.csv Analizi\nDeep Past Challenge - En Önemli Veri Seti\n\"\"\"\n\nimport pandas as pd\nimport numpy as np\nfrom collections import Counter\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\ndef analyze_train_csv():\n    \"\"\"train.csv dosyasını detaylı analiz et\"\"\"\n    \n    print(\"🎯 ADIM 1: train.csv Analizi\")\n    print(\"=\" * 60)\n    \n    # Dosya yolu\n    file_path = \"/kaggle/input/competitions/deep-past-initiative-machine-translation/train.csv\"\n    \n    try:\n        # Veriyi yükle\n        print(\"📂 train.csv yükleniyor...\")\n        df = pd.read_csv(file_path)\n        \n        # Temel bilgiler\n        print(f\"\\n📊 Temel Bilgiler:\")\n        print(f\"  • Boyut: {df.shape[0]} satır, {df.shape[1]} sütun\")\n        print(f\"  • Hafıza: {df.memory_usage(deep=True).sum() / 1024 / 1024:.1f} MB\")\n        \n        # Sütun analizi\n        print(f\"\\n📋 Sütun Analizi:\")\n        for col in df.columns:\n            null_count = df[col].isnull().sum()\n            null_percent = (null_count / len(df)) * 100\n            dtype = df[col].dtype\n            unique_count = df[col].nunique()\n            \n            print(f\"  • {col}\")\n            print(f\"    - Tip: {dtype}\")\n            print(f\"    - Benzersiz: {unique_count}\")\n            print(f\"    - Boş: {null_count} ({null_percent:.1f}%)\")\n        \n        # İlk 10 örnek\n        print(f\"\\n👁️  İlk 10 Örnek:\")\n        print(df.head(10).to_string())\n        \n        # Metin analizleri\n        print(f\"\\n📝 Metin Analizleri:\")\n        \n        # Akkadian metin analizi\n        if 'transliteration' in df.columns:\n            akkadian_lengths = df['transliteration'].astype(str).str.len()\n            print(f\"\\n🔤 Transliteration Sütunu:\")\n            print(f\"  • Ortalama uzunluk: {akkadian_lengths.mean():.1f}\")\n            print(f\"  • Medyan uzunluk: {akkadian_lengths.median():.1f}\")\n            print(f\"  • Min uzunluk: {akkadian_lengths.min()}\")\n            print(f\"  • Max uzunluk: {akkadian_lengths.max()}\")\n            \n            # Kelime istatistikleri\n            all_akkadian = ' '.join(df['transliteration'].astype(str).values)\n            akkadian_words = all_akkadian.split()\n            akkadian_word_counts = Counter(akkadian_words)\n            \n            print(f\"  • Toplam kelime: {len(akkadian_words)}\")\n            print(f\"  • Benzersiz kelime: {len(akkadian_word_counts)}\")\n            print(f\"  • En yaygın 10 kelime:\")\n            for word, count in akkadian_word_counts.most_common(10):\n                print(f\"    {word}: {count}\")\n        \n        # İngilizce metin analizi\n        if 'translation' in df.columns:\n            english_lengths = df['translation'].astype(str).str.len()\n            print(f\"\\n🇬🇧 Translation Sütunu:\")\n            print(f\"  • Ortalama uzunluk: {english_lengths.mean():.1f}\")\n            print(f\"  • Medyan uzunluk: {english_lengths.median():.1f}\")\n            print(f\"  • Min uzunluk: {english_lengths.min()}\")\n            print(f\"  • Max uzunluk: {english_lengths.max()}\")\n            \n            # Kelime istatistikleri\n            all_english = ' '.join(df['translation'].astype(str).values)\n            english_words = all_english.lower().split()\n            english_word_counts = Counter(english_words)\n            \n            print(f\"  • Toplam kelime: {len(english_words)}\")\n            print(f\"  • Benzersiz kelime: {len(english_word_counts)}\")\n            print(f\"  • En yaygın 10 kelime:\")\n            for word, count in english_word_counts.most_common(10):\n                print(f\"    {word}: {count}\")\n        \n        # Uzunluk dağılımları\n        print(f\"\\n📊 Uzunluk Dağılımları:\")\n        if 'transliteration' in df.columns and 'translation' in df.columns:\n            print(f\"  Transliteration uzunluk aralığı: {akkadian_lengths.min()}-{akkadian_lengths.max()}\")\n            print(f\"  Translation uzunluk aralığı: {english_lengths.min()}-{english_lengths.max()}\")\n        \n        # Veri kalitesi kontrolü\n        print(f\"\\n🔍 Veri Kalitesi:\")\n        \n        # Boş veri kontrolü\n        empty_akkadian = (df['transliteration'].astype(str) == '').sum()\n        empty_english = (df['translation'].astype(str) == '').sum()\n        \n        print(f\"  • Boş Transliteration: {empty_akkadian}\")\n        print(f\"  • Boş Translation: {empty_english}\")\n        \n        # Tekrarlanan veriler\n        duplicates = df.duplicated().sum()\n        print(f\"  • Tekrarlanan satırlar: {duplicates}\")\n        \n        # Çok uzun/kısa cümleler\n        very_long_akk = (akkadian_lengths > 500).sum()\n        very_long_eng = (english_lengths > 500).sum()\n        \n        print(f\"  • Çok uzun Transliteration (>500): {very_long_akk}\")\n        print(f\"  • Çok uzun Translation (>500): {very_long_eng}\")\n        \n        # Örnek cümleler\n        print(f\"\\n💡 Örnek Cümle Çiftleri:\")\n        sample_indices = np.random.choice(len(df), 5, replace=False)\n        \n        for i, idx in enumerate(sample_indices, 1):\n            akk = df.iloc[idx]['transliteration']\n            eng = df.iloc[idx]['translation']\n            print(f\"\\n  Örnek {i}:\")\n            print(f\"    Transliteration: {akk}\")\n            print(f\"    Translation:      {eng}\")\n        \n        # İstatistik özeti\n        print(f\"\\n📈 Özet İstatistikler:\")\n        print(f\"  • Veri seti büyüklüğü: {len(df)} örnek\")\n        print(f\"  • Transliteration vocab: {len(akkadian_word_counts)} benzersiz kelime\")\n        print(f\"  • Translation vocab: {len(english_word_counts)} benzersiz kelime\")\n        print(f\"  • Ortalama cümle uzunluğu (Transliteration): {akkadian_lengths.mean():.1f}\")\n        print(f\"  • Ortalama cümle uzunluğu (Translation): {english_lengths.mean():.1f}\")\n        \n        return df\n        \n    except FileNotFoundError:\n        print(f\"❌ Dosya bulunamadı: {file_path}\")\n        print(\"⚠️  Lütfen dosya yolunu kontrol edin\")\n        return None\n    except Exception as e:\n        print(f\"❌ Hata oluştu: {e}\")\n        return None\n\ndef create_vocabulary_analysis(df):\n    \"\"\"Vocabulary analizi ve istatistikleri\"\"\"\n    if df is None:\n        return\n    \n    print(f\"\\n🔤 Vocabulary Analizi\")\n    print(\"-\" * 40)\n    \n    # Transliteration vocabulary\n    transliteration_words = ' '.join(df['transliteration'].astype(str).values).split()\n    transliteration_vocab = Counter(transliteration_words)\n    \n    # Translation vocabulary  \n    translation_words = ' '.join(df['translation'].astype(str).values).split()\n    translation_vocab = Counter(translation_words)\n    \n    # Vocabulary size analizi\n    print(f\"📊 Vocabulary Boyutları:\")\n    print(f\"  • Transliteration: {len(transliteration_vocab)} benzersiz kelime\")\n    print(f\"  • Translation: {len(translation_vocab)} benzersiz kelime\")\n    \n    # Frekans dağılımı\n    print(f\"\\n📈 Kelime Frekans Dağılımı:\")\n    \n    # Transliteration frekans\n    trans_freq_dist = {}\n    for word, count in transliteration_vocab.items():\n        if count not in trans_freq_dist:\n            trans_freq_dist[count] = 0\n        trans_freq_dist[count] += 1\n    \n    print(f\"  Transliteration - Tekrar sayısı: Kelime sayısı\")\n    for freq in [1, 2, 3, 4, 5, 10]:\n        word_count = trans_freq_dist.get(freq, 0)\n        percent = (word_count / len(transliteration_vocab)) * 100\n        print(f\"    {freq:>2} defa: {word_count:>4} kelime ({percent:>5.1f}%)\")\n    \n    # Translation frekans\n    trans_eng_dist = {}\n    for word, count in translation_vocab.items():\n        if count not in trans_eng_dist:\n            trans_eng_dist[count] = 0\n        trans_eng_dist[count] += 1\n    \n    print(f\"  Translation - Tekrar sayısı: Kelime sayısı\")\n    for freq in [1, 2, 3, 4, 5, 10]:\n        word_count = trans_eng_dist.get(freq, 0)\n        percent = (word_count / len(translation_vocab)) * 100\n        print(f\"    {freq:>2} defa: {word_count:>4} kelime ({percent:>5.1f}%)\")\n    \n    # Rare words analizi\n    rare_trans = sum(1 for count in transliteration_vocab.values() if count == 1)\n    rare_eng = sum(1 for count in translation_vocab.values() if count == 1)\n    \n    print(f\"\\n🔍 Rare Words (sadece 1 kez geçen):\")\n    print(f\"  • Transliteration: {rare_trans} kelime ({(rare_trans/len(transliteration_vocab))*100:.1f}%)\")\n    print(f\"  • Translation: {rare_eng} kelime ({(rare_eng/len(translation_vocab))*100:.1f}%)\")\n\ndef main():\n    \"\"\"Ana fonksiyon\"\"\"\n    print(\"🎯 Deep Past Challenge - ADIM 1: train.csv Analizi\")\n    print(\"Bu adım eğitim verisini detaylı olarak inceleyecek\")\n    print()\n    \n    # Analizi çalıştır\n    df = analyze_train_csv()\n    \n    if df is not None:\n        # Vocabulary analizi\n        create_vocabulary_analysis(df)\n        \n        print(f\"\\n✅ ADIM 1 tamamlandı!\")\n        print(f\"📊 {len(df)} örnek analiz edildi\")\n        print(f\"🔤 Vocabulary analizi tamamlandı\")\n    \n        \n        print(f\"\\n📝 Sonuçlar:\")\n        print(f\"  • Etkileyici bir veri seti: {len(df)} Akkadian-İngilizce çifti\")\n        print(f\"  • Zengin vocabulary: Binlerce benzersiz kelime\")\n        print(f\"  • Model eğitimi için uygun boyut\")\n        \n    else:\n        print(\"❌ Analiz başarısız oldu!\")\n\nif __name__ == \"__main__\":\n    main()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-08T19:35:07.121086Z","iopub.execute_input":"2026-03-08T19:35:07.121530Z","iopub.status.idle":"2026-03-08T19:35:07.315527Z","shell.execute_reply.started":"2026-03-08T19:35:07.121510Z","shell.execute_reply":"2026-03-08T19:35:07.314442Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\"\"\"\nADIM 2: test.csv Analizi - Güncellenmiş Versiyon\nDeep Past Challenge - Test Veri Seti\n\"\"\"\n\nimport pandas as pd\nimport numpy as np\nfrom collections import Counter\n\ndef analyze_test_csv():\n    \"\"\"test.csv dosyasını detaylı analiz et\"\"\"\n    \n    print(\"🎯 ADIM 2: test.csv Analizi\")\n    print(\"=\" * 60)\n    \n    # Dosya yolu\n    file_path = \"/kaggle/input/competitions/deep-past-initiative-machine-translation/test.csv\"\n    \n    try:\n        # Veriyi yükle\n        print(\"📂 test.csv yükleniyor...\")\n        df = pd.read_csv(file_path)\n        \n        # Temel bilgiler\n        print(f\"\\n📊 Temel Bilgiler:\")\n        print(f\"  • Boyut: {df.shape[0]} satır, {df.shape[1]} sütun\")\n        print(f\"  • Hafıza: {df.memory_usage(deep=True).sum() / 1024 / 1024:.1f} MB\")\n        \n        # Sütun analizi\n        print(f\"\\n📋 Sütun Analizi:\")\n        for col in df.columns:\n            null_count = df[col].isnull().sum()\n            null_percent = (null_count / len(df)) * 100\n            dtype = df[col].dtype\n            unique_count = df[col].nunique()\n            \n            print(f\"  • {col}\")\n            print(f\"    - Tip: {dtype}\")\n            print(f\"    - Benzersiz: {unique_count}\")\n            print(f\"    - Boş: {null_count} ({null_percent:.1f}%)\")\n        \n        # İlk 10 örnek\n        print(f\"\\n👁️  İlk 10 Örnek:\")\n        print(df.head(10).to_string())\n        \n        # Metin analizleri\n        print(f\"\\n📝 Metin Analizleri:\")\n        \n        # Transliteration metin analizi\n        if 'transliteration' in df.columns:\n            transliteration_lengths = df['transliteration'].astype(str).str.len()\n            print(f\"\\n🔤 Transliteration Sütunu:\")\n            print(f\"  • Ortalama uzunluk: {transliteration_lengths.mean():.1f}\")\n            print(f\"  • Medyan uzunluk: {transliteration_lengths.median():.1f}\")\n            print(f\"  • Min uzunluk: {transliteration_lengths.min()}\")\n            print(f\"  • Max uzunluk: {transliteration_lengths.max()}\")\n            \n            # Kelime istatistikleri\n            all_transliteration = ' '.join(df['transliteration'].astype(str).values)\n            transliteration_words = all_transliteration.split()\n            transliteration_word_counts = Counter(transliteration_words)\n            \n            print(f\"  • Toplam kelime: {len(transliteration_words)}\")\n            print(f\"  • Benzersiz kelime: {len(transliteration_word_counts)}\")\n            print(f\"  • En yaygın 10 kelime:\")\n            for word, count in transliteration_word_counts.most_common(10):\n                print(f\"    {word}: {count}\")\n        \n        # Veri kalitesi kontrolü\n        print(f\"\\n🔍 Veri Kalitesi:\")\n        \n        # Boş veri kontrolü\n        empty_transliteration = (df['transliteration'].astype(str) == '').sum()\n        print(f\"  • Boş Transliteration: {empty_transliteration}\")\n        \n        # Tekrarlanan veriler\n        duplicates = df.duplicated().sum()\n        print(f\"  • Tekrarlanan satırlar: {duplicates}\")\n        \n        # Çok uzun/kısa cümleler\n        very_long_transliteration = (transliteration_lengths > 500).sum()\n        very_short_transliteration = (transliteration_lengths < 5).sum()\n        \n        print(f\"  • Çok uzun Transliteration (>500): {very_long_transliteration}\")\n        print(f\"  • Çok kısa Transliteration (<5): {very_short_transliteration}\")\n        \n        # Örnek cümleler\n        print(f\"\\n💡 Örnek Test Cümleleri:\")\n        # Test seti çok küçük olduğu için tümünü göster\n        for idx in range(min(5, len(df))):\n            transliteration = df.iloc[idx]['transliteration']\n            print(f\"\\n  Test Örneği {idx + 1}:\")\n            print(f\"    Line {df.iloc[idx]['line_start']}-{df.iloc[idx]['line_end']}: {transliteration}\")\n        \n        # İstatistik özeti\n        print(f\"\\n📈 Test Seti Özeti:\")\n        print(f\"  • Test seti büyüklüğü: {len(df)} örnek\")\n        print(f\"  • Transliteration vocab: {len(transliteration_word_counts)} benzersiz kelime\")\n        print(f\"  • Ortalama cümle uzunluğu: {transliteration_lengths.mean():.1f}\")\n        \n        return df, transliteration_word_counts\n        \n    except FileNotFoundError:\n        print(f\"❌ Dosya bulunamadı: {file_path}\")\n        print(\"⚠️  Lütfen dosya yolunu kontrol edin\")\n        return None, None\n    except Exception as e:\n        print(f\"❌ Hata oluştu: {e}\")\n        return None, None\n\ndef compare_train_test(train_df, test_df, train_vocab, test_vocab):\n    \"\"\"Train ve test setlerini karşılaştır\"\"\"\n    \n    print(f\"\\n🔍 Train vs Test Karşılaştırması\")\n    print(\"=\" * 50)\n    \n    # Boyut karşılaştırması\n    print(f\"📊 Boyut Karşılaştırması:\")\n    print(f\"  • Train seti: {len(train_df)} örnek (tam cümleler)\")\n    print(f\"  • Test seti:  {len(test_df)} örnek (tablet satırları)\")\n    print(f\"  • Oran: {len(train_df)/len(test_df):.2f}\")\n    \n    # ÖZEL DURUM: Test seti line-based!\n    print(f\"\\n⚠️  ÖZEL DURUM TESPİTİ:\")\n    print(f\"  • Test seti tam cümleler DEĞİL, tablet satırları\")\n    print(f\"  • Text ID: {test_df['text_id'].iloc[0]} (hepsi aynı)\")\n    print(f\"  • Line range: {test_df['line_start'].min()}-{test_df['line_end'].max()}\")\n    \n    # Vocabulary karşılaştırması\n    print(f\"\\n🔤 Vocabulary Karşılaştırması:\")\n    print(f\"  • Train vocab: {len(train_vocab)} benzersiz kelime\")\n    print(f\"  • Test vocab:  {len(test_vocab)} benzersiz kelime\")\n    \n    # Vocabulary overlap\n    train_words = set(train_vocab.keys())\n    test_words = set(test_vocab.keys())\n    \n    overlap = train_words.intersection(test_words)\n    train_only = train_words - test_words\n    test_only = test_words - train_words\n    \n    print(f\"\\n📈 Vocabulary Overlap:\")\n    print(f\"  • Ortak kelimeler: {len(overlap)} ({(len(overlap)/len(test_words))*100:.1f}% of test)\")\n    print(f\"  • Sadece train'de: {len(train_only)}\")\n    print(f\"  • Sadece test'de: {len(test_only)}\")\n    \n    # Uzunluk karşılaştırması\n    train_lengths = train_df['transliteration'].astype(str).str.len()\n    test_lengths = test_df['transliteration'].astype(str).str.len()\n    \n    print(f\"\\n📏 Uzunluk Karşılaştırması:\")\n    print(f\"  Train - Ort: {train_lengths.mean():.1f}, Med: {train_lengths.median():.1f}\")\n    print(f\"  Test  - Ort: {test_lengths.mean():.1f}, Med: {test_lengths.median():.1f}\")\n    print(f\"  • Test satırları daha kısa (normal)\")\n    \n    # Test'te geçen ama train'de olmayan kelimeler\n    if test_only:\n        print(f\"\\n⚠️  Test'te geçen ama Train'de olmayan kelimeler:\")\n        for word in list(test_only):\n            test_count = test_vocab[word]\n            print(f\"    {word} (test: {test_count} defa)\")\n    \n    # Önemli bulgular\n    print(f\"\\n💡 Önemli Bulgular:\")\n    \n    # Vocabulary coverage\n    coverage = len(overlap) / len(test_words) * 100\n    print(f\"  • Test vocabulary coverage: {coverage:.1f}%\")\n    \n    if coverage < 80:\n        print(f\"  ⚠️  Düşük vocabulary coverage! Model bu kelimeleri tanımayabilir.\")\n    elif coverage < 90:\n        print(f\"  ⚠️  Orta vocabulary coverage. Dikkatli olun.\")\n    else:\n        print(f\"  ✅ İyi vocabulary coverage!\")\n    \n    # STRATEJİK ÖNERİ\n    print(f\"\\n🎯 STRATEJİK ÖNERİ:\")\n    print(f\"  • Test seti SATIR bazlı - model satır çevirmeli!\")\n    print(f\"  • Train tam cümleler - preprocessing gerekli\")\n    print(f\"  • Ya train'i satırlara böl ya da test'i birleştir\")\n    \n    return {\n        'train_size': len(train_df),\n        'test_size': len(test_df),\n        'train_vocab_size': len(train_vocab),\n        'test_vocab_size': len(test_vocab),\n        'vocab_overlap': len(overlap),\n        'vocab_coverage': coverage,\n        'is_line_based': True\n    }\n\ndef main():\n    \"\"\"Ana fonksiyon\"\"\"\n    print(\"🎯 Deep Past Challenge - ADIM 2: test.csv Analizi\")\n    print(\"Bu adım test verisini ve train ile karşılaştırmayı inceleyecek\")\n    print()\n    \n    # Önce train verisini yükle (karşılaştırma için)\n    print(\"📂 Train verisi yükleniyor (karşılaştırma için)...\")\n    try:\n        train_df = pd.read_csv(\"/kaggle/input/competitions/deep-past-initiative-machine-translation/train.csv\")\n        train_words = ' '.join(train_df['transliteration'].astype(str).values).split()\n        train_vocab = Counter(train_words)\n        print(\"✅ Train verisi yüklendi\")\n    except:\n        print(\"❌ Train verisi yüklenemedi\")\n        train_df = None\n        train_vocab = None\n    \n    # Test analizini çalıştır\n    test_df, test_vocab = analyze_test_csv()\n    \n    if test_df is not None and train_df is not None:\n        # Karşılaştırma analizi\n        comparison = compare_train_test(train_df, test_df, train_vocab, test_vocab)\n        \n        print(f\"\\n✅ ADIM 2 tamamlandı!\")\n        print(f\"📊 {len(test_df)} test örneği analiz edildi\")\n        print(f\"🔤 Train-Test karşılaştırması tamamlandı\")\n\n        \n        print(f\"\\n📝 Sonuçlar:\")\n        print(f\"  • Test seti: {len(test_df)} örnek\")\n        print(f\"  • Vocabulary coverage: {comparison['vocab_coverage']:.1f}%\")\n        print(f\"  • Model için uygunluk: {'İyi' if comparison['vocab_coverage'] > 80 else 'Dikkat gerekli'}\")\n        \n    else:\n        print(\"❌ Analiz başarısız oldu!\")\n\nif __name__ == \"__main__\":\n    main()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-08T19:35:07.317411Z","iopub.execute_input":"2026-03-08T19:35:07.317670Z","iopub.status.idle":"2026-03-08T19:35:07.406190Z","shell.execute_reply.started":"2026-03-08T19:35:07.317646Z","shell.execute_reply":"2026-03-08T19:35:07.405217Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\"\"\"\nADIM 3: sample_submission.csv Analizi\nDeep Past Challenge - Submission Format\n\"\"\"\n\nimport pandas as pd\nimport numpy as np\n\ndef analyze_sample_submission():\n    \"\"\"sample_submission.csv dosyasını analiz et\"\"\"\n    \n    print(\"🎯 ADIM 3: sample_submission.csv Analizi\")\n    print(\"=\" * 60)\n    \n    # Dosya yolu\n    file_path = \"/kaggle/input/competitions/deep-past-initiative-machine-translation/sample_submission.csv\"\n    \n    try:\n        # Veriyi yükle\n        print(\"📂 sample_submission.csv yükleniyor...\")\n        df = pd.read_csv(file_path)\n        \n        # Temel bilgiler\n        print(f\"\\n📊 Temel Bilgiler:\")\n        print(f\"  • Boyut: {df.shape[0]} satır, {df.shape[1]} sütun\")\n        print(f\"  • Hafıza: {df.memory_usage(deep=True).sum() / 1024 / 1024:.1f} MB\")\n        \n        # Sütun analizi\n        print(f\"\\n📋 Sütun Analizi:\")\n        for col in df.columns:\n            null_count = df[col].isnull().sum()\n            null_percent = (null_count / len(df)) * 100\n            dtype = df[col].dtype\n            unique_count = df[col].nunique()\n            \n            print(f\"  • {col}\")\n            print(f\"    - Tip: {dtype}\")\n            print(f\"    - Benzersiz: {unique_count}\")\n            print(f\"    - Boş: {null_count} ({null_percent:.1f}%)\")\n        \n        # İlk 10 örnek\n        print(f\"\\n👁️  İlk 10 Örnek:\")\n        print(df.head(10).to_string())\n        \n        # ID sütunu analizi\n        if 'id' in df.columns:\n            ids = df['id']\n            print(f\"\\n🔢 ID Sütunu Analizi:\")\n            print(f\"  • Min ID: {ids.min()}\")\n            print(f\"  • Max ID: {ids.max()}\")\n            print(f\"  • ID aralığı: {ids.max() - ids.min() + 1}\")\n            print(f\"  • Eksik ID'ler: {len(range(ids.min(), ids.max() + 1)) - len(ids)}\")\n            \n            # ID sequence kontrolü\n            is_sequential = all(ids.iloc[i] == ids.iloc[i-1] + 1 for i in range(1, len(ids)))\n            print(f\"  • Sıralı ID'ler: {'Evet' if is_sequential else 'Hayır'}\")\n        \n        # English sütunu analizi (aslında translation)\n        if 'translation' in df.columns:\n            english_lengths = df['translation'].astype(str).str.len()\n            print(f\"\\n🇬🇧 Translation Sütunu Analizi:\")\n            print(f\"  • Ortalama uzunluk: {english_lengths.mean():.1f}\")\n            print(f\"  • Medyan uzunluk: {english_lengths.median():.1f}\")\n            print(f\"  • Min uzunluk: {english_lengths.min()}\")\n            print(f\"  • Max uzunluk: {english_lengths.max()}\")\n            \n            # Benzersiz çeviriler\n            unique_translations = df['translation'].nunique()\n            print(f\"  • Benzersiz çeviriler: {unique_translations}\")\n            print(f\"  • Tekrarlanan çeviriler: {len(df) - unique_translations}\")\n            \n            # En yaygın çeviriler\n            translation_counts = df['translation'].value_counts()\n            print(f\"\\n📈 En Yaygın Çeviriler:\")\n            for translation, count in translation_counts.head().items():\n                print(f\"    \\\"{translation}\\\": {count} defa\")\n        \n        # Örnek çeviriler\n        print(f\"\\n💡 Örnek Çeviriler:\")\n        # Sample submission çok küçük olduğu için tümünü göster\n        for idx in range(min(4, len(df))):\n            sample_id = df.iloc[idx]['id']\n            sample_translation = df.iloc[idx]['translation']\n            print(f\"\\n  Örnek {idx + 1} (ID: {sample_id}):\")\n            print(f\"    Translation: \\\"{sample_translation}\\\"\")\n        \n        # Format kontrolü\n        print(f\"\\n🔍 Format Kontrolü:\")\n        \n        # Gerekli sütunlar\n        required_columns = ['id', 'translation']\n        missing_columns = [col for col in required_columns if col not in df.columns]\n        \n        if missing_columns:\n            print(f\"  ❌ Eksik sütunlar: {missing_columns}\")\n        else:\n            print(f\"  ✅ Gerekli sütunlar mevcut\")\n        \n        # Veri tipleri kontrolü\n        id_dtype = df['id'].dtype\n        translation_dtype = df['translation'].dtype\n        \n        print(f\"  • ID tipi: {id_dtype} {'✅' if id_dtype in ['int64', 'int32'] else '⚠️'}\")\n        print(f\"  • Translation tipi: {translation_dtype} {'✅' if translation_dtype == 'object' else '⚠️'}\")\n        \n        # Boş veri kontrolü\n        empty_translation = (df['translation'].astype(str) == '').sum()\n        null_translation = df['translation'].isnull().sum()\n        \n        print(f\"  • Boş Translation: {empty_translation}\")\n        print(f\"  • Null Translation: {null_translation}\")\n        \n        return df\n        \n    except FileNotFoundError:\n        print(f\"❌ Dosya bulunamadı: {file_path}\")\n        print(\"⚠️  Lütfen dosya yolunu kontrol edin\")\n        return None\n    except Exception as e:\n        print(f\"❌ Hata oluştu: {e}\")\n        return None\n\ndef create_submission_template(test_df, sample_df):\n    \"\"\"Submission template oluştur\"\"\"\n    \n    print(f\"\\n📝 Submission Template Oluşturma\")\n    print(\"-\" * 40)\n    \n    if test_df is None or sample_df is None:\n        print(\"❌ Test veya sample verisi yok!\")\n        return None\n    \n    # Test seti boyutunu kontrol et\n    test_size = len(test_df)\n    sample_size = len(sample_df)\n    \n    print(f\"📊 Boyut Karşılaştırması:\")\n    print(f\"  • Test seti: {test_size} örnek\")\n    print(f\"  • Sample submission: {sample_size} örnek\")\n    \n    if test_size != sample_size:\n        print(f\"⚠️  Boyutlar eşleşmiyor!\")\n        return None\n    \n    # Template oluştur\n    template = pd.DataFrame({\n        'id': range(test_size),\n        'english': [''] * test_size  # Boş çeviriler\n    })\n    \n    print(f\"✅ Template oluşturuldu:\")\n    print(f\"  • Boyut: {template.shape}\")\n    print(f\"  • Sütunlar: {list(template.columns)}\")\n    \n    # İlk birkaç satırı göster\n    print(f\"\\n👁️  Template (ilk 5 satır):\")\n    print(template.head().to_string())\n    \n    return template\n\ndef validate_submission_format(submission_df):\n    \"\"\"Submission formatını validate et\"\"\"\n    \n    print(f\"\\n✅ Submission Format Validation\")\n    print(\"-\" * 40)\n    \n    if submission_df is None:\n        print(\"❌ Submission DataFrame yok!\")\n        return False\n    \n    # Gerekli sütunlar\n    required_columns = ['id', 'translation']\n    missing_columns = [col for col in required_columns if col not in submission_df.columns]\n    \n    if missing_columns:\n        print(f\"❌ Eksik sütunlar: {missing_columns}\")\n        return False\n    \n    # Boyut kontrolü\n    if len(submission_df) == 0:\n        print(\"❌ Boş submission!\")\n        return False\n    \n    # ID kontrolü\n    ids = submission_df['id']\n    if ids.min() != 0 or ids.max() != len(submission_df) - 1:\n        print(f\"⚠️  ID'ler 0-{len(submission_df)-1} aralığında olmalı!\")\n        print(f\"   Mevcut: {ids.min()}-{ids.max()}\")\n        return False\n    \n    # Translation kontrolü\n    translation_col = submission_df['translation']\n    empty_count = (translation_col.astype(str) == '').sum()\n    null_count = translation_col.isnull().sum()\n    \n    if empty_count > 0:\n        print(f\"⚠️  {empty_count} boş çeviri var!\")\n    \n    if null_count > 0:\n        print(f\"⚠️  {null_count} null çeviri var!\")\n    \n    print(f\"✅ Format validation başarılı!\")\n    return True\n\ndef main():\n    \"\"\"Ana fonksiyon\"\"\"\n    print(\"🎯 Deep Past Challenge - ADIM 3: sample_submission.csv Analizi\")\n    print(\"Bu adım submission formatını ve template oluşturmayı inceleyecek\")\n    print()\n    \n    # Sample submission analizini çalıştır\n    sample_df = analyze_sample_submission()\n    \n    # Test verisini yükle (template için)\n    print(\"\\n📂 Test verisi yükleniyor (template için)...\")\n    try:\n        test_df = pd.read_csv(\"/kaggle/input/competitions/deep-past-initiative-machine-translation/test.csv\")\n        print(\"✅ Test verisi yüklendi\")\n    except:\n        print(\"❌ Test verisi yüklenemedi\")\n        test_df = None\n    \n    if sample_df is not None and test_df is not None:\n        # Template oluştur\n        template = create_submission_template(test_df, sample_df)\n        \n        # Template'i validate et\n        if template is not None:\n            is_valid = validate_submission_format(template)\n        \n        print(f\"\\n✅ ADIM 3 tamamlandı!\")\n        print(f\"📊 Sample submission analiz edildi\")\n        print(f\"📝 Template oluşturuldu\")\n        print(f\"✅ Format validation tamamlandı\")\n        \n        print(f\"\\n📝 Sonuçlar:\")\n        print(f\"  • Submission formatı: id, translation sütunları\")\n        print(f\"  • ID aralığı: 0-{len(template)-1}\")\n        print(f\"  • Template hazır: {'Evet' if template is not None else 'Hayır'}\")\n        print(f\"  • Model çıktıları bu formatta olmalı\")\n        \n    else:\n        print(\"❌ Analiz başarısız oldu!\")\n\nif __name__ == \"__main__\":\n    main()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-08T19:35:07.407365Z","iopub.execute_input":"2026-03-08T19:35:07.407681Z","iopub.status.idle":"2026-03-08T19:35:07.443064Z","shell.execute_reply.started":"2026-03-08T19:35:07.407651Z","shell.execute_reply":"2026-03-08T19:35:07.442226Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"\"\"\"\nDeep Past Challenge - Hızlı Başlangıç Çözümü\nDoğru dosya yolları ile çalıştır\n\"\"\"\n\nimport pandas as pd\nimport numpy as np\nfrom collections import Counter\nimport torch\nimport torch.nn as nn\nfrom torch.utils.data import Dataset, DataLoader\n\nprint(\"🚀 Deep Past Challenge - Hızlı Başlangıç\")\nprint(\"=\" * 50)\n\n# DOĞRU DOSYA YOLLARI\nDATA_PATH = \"/kaggle/input/competitions/deep-past-initiative-machine-translation\"\n\nprint(f\"📂 Veri yolu: {DATA_PATH}\")\n\n# Verileri yükle\nprint(\"\\n📊 Veriler yükleniyor...\")\ntry:\n    train_df = pd.read_csv(f\"{DATA_PATH}/train.csv\")\n    test_df = pd.read_csv(f\"{DATA_PATH}/test.csv\")\n    sample_df = pd.read_csv(f\"{DATA_PATH}/sample_submission.csv\")\n    \n    print(f\"✅ Train: {train_df.shape}\")\n    print(f\"✅ Test:  {test_df.shape}\")\n    print(f\"✅ Sample: {sample_df.shape}\")\n    \nexcept Exception as e:\n    print(f\"❌ Hata: {e}\")\n    exit()\n\n# Basit translator sınıfı\nclass SimpleTranslator:\n    def __init__(self):\n        self.word_pairs = {}\n        self.learned_patterns = {}\n    \n    def train_simple(self, akkadian_texts, english_texts):\n        \"\"\"Basit pattern matching translation\"\"\"\n        print(\"🎓 Model eğitiliyor...\")\n        \n        for akk, eng in zip(akkadian_texts, english_texts):\n            akk_words = str(akk).split()\n            eng_words = str(eng).split()\n            \n            # Learn word-to-word mappings\n            for akk_word, eng_word in zip(akk_words, eng_words):\n                if akk_word not in self.word_pairs:\n                    self.word_pairs[akk_word] = {}\n                if eng_word not in self.word_pairs[akk_word]:\n                    self.word_pairs[akk_word][eng_word] = 0\n                self.word_pairs[akk_word][eng_word] += 1\n        \n        print(f\"✅ {len(self.word_pairs)} kelime eşlemesi öğrenildi\")\n    \n    def translate(self, akkadian_text):\n        \"\"\"Translate using learned patterns\"\"\"\n        words = str(akkadian_text).split()\n        translated_words = []\n        \n        for word in words:\n            if word in self.word_pairs:\n                # Choose most common translation\n                best_eng = max(self.word_pairs[word].items(), key=lambda x: x[1])[0]\n                translated_words.append(best_eng)\n            else:\n                # Fallback to common words\n                translated_words.append('the')\n        \n        return ' '.join(translated_words)\n\n# Modeli eğit\nprint(\"\\n🤖 Model eğitimi başlıyor...\")\ntranslator = SimpleTranslator()\n\n# Train verisi ile eğit\ntranslator.train_simple(train_df['transliteration'], train_df['translation'])\n\n# Test verisi üzerinde tahmin yap\nprint(\"\\n🔮 Tahminler üretiliyor...\")\npredictions = []\n\nfor idx, row in test_df.iterrows():\n    akk_text = row['transliteration']\n    pred = translator.translate(akk_text)\n    predictions.append(pred)\n    \n    if idx < 3:  # İlk 3 tahmini göster\n        print(f\"  {idx}: {akk_text[:50]}... -> {pred[:50]}...\")\n\n# Submission oluştur\nprint(\"\\n📤 Submission oluşturuluyor...\")\nsubmission = pd.DataFrame({\n    'id': range(len(predictions)),\n    'translation': predictions\n})\n\nsubmission.to_csv('submission.csv', index=False)\nprint(f\"✅ Submission kaydedildi: {submission.shape}\")\n\n# Kontrol et\nprint(\"\\n👁️ Submission kontrolü:\")\nprint(submission.head())\n\nprint(\"\\n🎉 TAMAMLANDI!\")\nprint(\"📊 Model eğitildi ve submission oluşturuldu\")\nprint(\"🚀 submission.csv dosyasını yarışmaya gönderebilirsiniz!\")\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-08T19:35:07.444683Z","iopub.execute_input":"2026-03-08T19:35:07.444937Z","iopub.status.idle":"2026-03-08T19:35:07.565685Z","shell.execute_reply.started":"2026-03-08T19:35:07.444916Z","shell.execute_reply":"2026-03-08T19:35:07.564808Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}