{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Title 0\n", "Label 0\n", "dtype: int64\n" ] } ], "source": [ "import pandas as pd\n", "\n", "df = pd.read_csv(\"all_news.csv\")\n", "\n", "# Eksik değerleri kontrol ediyorum\n", "print(df.isnull().sum())\n", "\n", "# Eksik değerleri dolduruyorum ya da kaldırıyorum\n", "df = df.dropna()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Title Label\n", "0 ABD Başkanı Trump ve destekçilerinin Rabia işa... YANLIŞ\n", "1 Fotoğrafta Atatürk'ün güldüğü iddiası YANLIŞ\n", "2 İsrail Başkonsolosluğu’nda ateş yakıldığını gö... YANLIŞ\n", "3 Afişin 2022 Dünya Kupası’ndaki yasakları göste... YANLIŞ\n", "4 İYİ Parti'de istifalar: Buğra Kavuncu ve Burak... DOĞRU\n" ] } ], "source": [ "# Label sütunu boş olan satırlarda hem Label hem de Title sütunlarını siliyoruz\n", "df = df[df['Label'].notnull()]\n", "\n", "# Sonucu kontrol ediyoruz\n", "print(df.head())" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Empty DataFrame\n", "Columns: [Title, Label]\n", "Index: []\n" ] } ], "source": [ "df = pd.read_csv(\"all_news.csv\")\n", "\n", "# \"DOĞRU\" ve \"YANLIŞ\" dışındaki etiketleri filtreliyoruz\n", "other_labels = df[~df['Label'].str.contains('DOĞRU|YANLIŞ', case=False, na=False)]\n", "\n", "# Bu satırları yazdırıyoruz, ilk 50 tanesini\n", "print(other_labels[['Title', 'Label']].head(50))\n", "# 'Label' sütunundaki boşlukları temizliyoruz\n", "df['Label'] = df['Label'].str.strip()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "#Metinlerin ön işlemi için kütüphaneler\n", "import re\n", "from nltk.corpus import stopwords\n", "from nltk.stem import WordNetLemmatizer\n", "import nltk\n", "from sklearn.preprocessing import LabelEncoder" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[nltk_data] Downloading package stopwords to C:\\Users\\Şerife\n", "[nltk_data] Gökdaş\\AppData\\Roaming\\nltk_data...\n", "[nltk_data] Package stopwords is already up-to-date!\n", "[nltk_data] Downloading package wordnet to C:\\Users\\Şerife\n", "[nltk_data] Gökdaş\\AppData\\Roaming\\nltk_data...\n", "[nltk_data] Package wordnet is already up-to-date!\n" ] } ], "source": [ "nltk.download('stopwords')\n", "nltk.download('wordnet')\n", "# Stopwords ve lemmatizer tanımla\n", "STOPWORDS = set(stopwords.words('turkish'))\n", "STOPWORDS.add('mi') \n", "lemmatizer = WordNetLemmatizer()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Ön işleme fonksiyonu\n", "def preprocess_text(text):\n", " # Küçük harfe çevir\n", " text = text.lower()\n", " # Noktalama işaretlerini kaldır\n", " text = re.sub(r'[^\\w\\s]', '', text)\n", " # Stopwords kaldır ve lemmatization uygula\n", " text = \" \".join([lemmatizer.lemmatize(word) for word in text.split() if word not in STOPWORDS])\n", " return text" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# CSV dosyasını oku\n", "df = pd.read_csv('all_news.csv')\n", "# Metinleri temizle\n", "df['cleaned_text'] = df['Title'].apply(preprocess_text)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 0\n", "1 0\n", "2 0\n", "3 0\n", "4 1\n", "Name: Label, dtype: int64\n" ] } ], "source": [ "# Label sütununu sayısal değerlere çevirmek\n", "label_encoder = LabelEncoder()\n", "df['Label'] = label_encoder.fit_transform(df['Label'])\n", "\n", "# Dönüştürme sonrasında ters çevirme\n", "df['Label'] = df['Label'].map({0: 1, 1: 0}) # 0 -> 1, 1 -> 0 \n", "\n", "# Etiket sınıfını kontrol et\n", "print(df['Label'].head())\n", "\n", "# Temizlenmiş metin ve Label sütununu seçerek yeni bir dosya oluştur\n", "df_cleaned = df[['cleaned_text', 'Label']]\n", "df_cleaned.columns = ['Title', 'Label'] # Sütun isimlerini uygun şekilde düzenle" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Title Label\n", "0 abd başkanı trump destekçilerinin rabia işaret... 0\n", "1 fotoğrafta atatürkün güldüğü iddiası 0\n", "2 israil başkonsolosluğunda ateş yakıldığını gös... 0\n", "3 afişin 2022 dünya kupasındaki yasakları göster... 0\n", "4 iyi partide istifalar buğra kavuncu burak akbu... 1\n" ] } ], "source": [ "# Yeni CSV dosyasına sadece 'Title' ve 'Label' sütunlarını kaydet\n", "df_cleaned.to_csv('data_all_news.csv', index=False, encoding='utf-8')\n", "\n", "# İlk birkaç satırı kontrol et\n", "print(df_cleaned.head())" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[('iddiası', 3692), ('bir', 1282), ('gösterdiği', 1166), ('gösteriyor', 989), ('video', 839), ('olduğu', 809), ('videonun', 618), ('fotoğrafın', 538), ('fotoğraf', 391), ('gerçek', 333), ('yeni', 297), ('ait', 290), ('güncel', 252), ('kişi', 248), ('doğru', 240), ('türkiye', 240), ('gösteren', 225), ('edilen', 224), ('iddia', 209), ('istanbul', 196)]\n" ] } ], "source": [ "#Title sayısallaştırmadan önce max_words değerime karar vermek için\n", "import pandas as pd\n", "\n", "# CSV dosyasını yükleyin\n", "df = pd.read_csv('data_all_news.csv')\n", "\n", "# Kelimelerin sıklığını incelemek\n", "from collections import Counter\n", "all_words = [word for text in df['Title'] for word in text.split()]\n", "word_counts = Counter(all_words)\n", "\n", "# En yaygın 20 kelimeyi görmek\n", "print(word_counts.most_common(20))\n", "#çıktıya göre max_words 1500 olarak belirleyebilirim" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "500 kelime ile toplam kelime frekansının %38.58'i kapsanıyor.\n", "1000 kelime ile toplam kelime frekansının %48.47'i kapsanıyor.\n", "1500 kelime ile toplam kelime frekansının %55.19'i kapsanıyor.\n", "2000 kelime ile toplam kelime frekansının %60.30'i kapsanıyor.\n" ] } ], "source": [ "import numpy as np\n", "from collections import Counter\n", "\n", "# Kelime frekanslarını hesapla\n", "all_words = [word for text in df['Title'] for word in text.split()]\n", "word_counts = Counter(all_words)\n", "\n", "# Kelime frekanslarını sıralayıp birikimli toplamını al\n", "word_freq = [count for _, count in word_counts.most_common()]\n", "cumulative_freq = np.cumsum(word_freq)\n", "total_words = sum(word_freq)\n", "\n", "# Belirli max_words için kapsanan yüzdeyi göster\n", "for max_words in [500, 1000, 1500, 2000]:\n", " coverage = (cumulative_freq[max_words-1] / total_words) * 100\n", " print(f\"{max_words} kelime ile toplam kelime frekansının %{coverage:.2f}'i kapsanıyor.\")" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "count 12723.000000\n", "mean 8.370824\n", "std 2.708271\n", "min 1.000000\n", "25% 7.000000\n", "50% 8.000000\n", "75% 10.000000\n", "max 25.000000\n", "Name: title_length, dtype: float64\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAHHCAYAAABeLEexAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABEYUlEQVR4nO3deVgW9f7/8ReoIISAiICYKC65b+kRzVxBQc3yWGYuuWepdFLTzDKz8sjRc45lHpdOqWS518lKc8Hd3DLM3HAj7K5kETdiERTu3x99uX/digs3y43M83Fdc13OzGdm3jNM8WLmMzMOZrPZLAAAAANztHcBAAAA9kYgAgAAhkcgAgAAhkcgAgAAhkcgAgAAhkcgAgAAhkcgAgAAhkcgAgAAhkcgAgAAhkcgAgzg3LlzcnBwUGRk5B3bOTg4KDw8vHiKspMaNWpoyJAhNi8/YcIEjRo1SqmpqUpISFDLli21fv36wiuwGKxbt06tWrVSfHy80tLSNHLkSE2cOPGuy0VGRsrBwUHnzp0r+iKBYkYgAopR7i+UPw8+Pj7q1KmTNmzYYO/yCuROYeqzzz6Tg4ODduzYUbxFFYEhQ4Zo+fLlqlChgqpUqaLMzEx16tSpULcxbdo0q3PE1dVVAQEB6tmzp5YsWaLMzMwCrb9z587KyMiQv7+/3NzctGrVKg0ePLiQqgfuT2XtXQBgRG+//bYCAwNlNpuVmJioyMhIde/eXV9//bUee+wxe5eHO2jUqJFiY2O1d+9eubi4qEOHDnJyciqSbS1YsEBubm7KzMzUb7/9pk2bNmnYsGF67733tG7dOlWrVs2m9bq6uio6Olo7d+5URkaGHnnkEXl7exdy9cD9hUAE2EG3bt3UsmVLy/jw4cPl6+urFStWEIjuA97e3nr88ceLfDtPPfWUVVCZOnWqli1bpkGDBqlPnz7av3+/zet2cnJSly5dCqNMoFTglhlQAnh6esrFxUVly1r/jfKvf/1LjzzyiCpVqiQXFxe1aNFCn3322S3LR0VF6dFHH5Wnp6fc3NxUt25dvfbaa3fcZu5tmbuZPn26HB0dNXfu3Pzt1B3kdeswd+jYsaOkO/d7cnBw0LRp0yzjufty9uxZDRkyRJ6envLw8NDQoUOVnp5+x1pudxzy6i+Tk5OjadOmyd/fX66ururUqZNOnDhxS7+k/KwzvwYMGKARI0bowIEDioqKskzfvXu3+vTpo4CAADk7O6tatWoaN26cMjIyblnHmjVr1KBBA5UvX16NGjXSF198oSFDhqhGjRpW7W4+znnp2LGj5WcmSTt27JCDg4NWr16tt956S1WrVlWFChX01FNP6erVq8rMzNTYsWPl4+MjNzc3DR069JZbgAXt5wXYgitEgB1cvXpVycnJMpvNSkpK0ty5c5WamqqBAwdatZszZ44ef/xxDRgwQFlZWVq5cqX69OmjdevWqUePHpKk48eP67HHHlOTJk309ttvy9nZWWfPntWePXsKXOeUKVM0Y8YMffDBB3ruuecKvL5c7du31yeffGI17eeff9aUKVPk4+Nj83qffvppBQYGKiIiQocOHdJHH30kHx8fzZw5s6AlS5ImT56sWbNmqWfPngoNDdWPP/6o0NBQXbt2rVDWf6+effZZ/fe//9XmzZstV3nWrFmj9PR0jRo1SpUqVdJ3332nuXPn6tdff9WaNWssy65fv159+/ZV48aNFRERocuXL2v48OGqWrVqodYYEREhFxcXvfrqqzp79qzmzp2rcuXKydHRUZcvX9a0adO0f/9+RUZGKjAwUFOnTi3U7QP5RSAC7CAkJMRq3NnZWYsXL77lFsbp06fl4uJiGQ8PD9fDDz+s2bNnWwJRVFSUsrKytGHDhkLtBzJhwgS9++67WrJkSaF3uK1Zs6Zq1qxpGb927ZoeffRR+fv76/3337d5vc2bN9eiRYss4xcvXtSiRYsKJRAlJiZq9uzZ6tWrl7744gvL9LfeeuuuV1EKW6NGjSRJsbGxlmkzZ860OldGjhyp2rVr67XXXpPJZFJAQICkP0Jd1apVtWfPHrm5uUmSgoOD1bFjR1WvXr3Qarxx44Z27typcuXKSZIuXLiglStXKiwsTN98840kafTo0Tp79qwWL15MIILdccsMsIN58+YpKipKUVFR+vTTT9WpUyeNGDFC//vf/6za/fkX3OXLl3X16lW1a9dOhw4dskz39PSUJH355ZfKyckpcG1ms1nh4eGaM2eOPv3002J5+mj06NE6evSoPv/8c/n5+dm8nhdeeMFqvF27drp48aJSUlIKWqK2bt2qGzduaPTo0VbT7fGagtwg8/vvv1um/flcSUtLU3Jysh555BGZzWb98MMPkqTz58/r6NGjGjRokGUdktShQwc1bty4UGscNGiQJQxJUlBQkMxms4YNG2bVLigoSL/88otu3LhRqNsH8otABNhBq1atFBISopCQEA0YMEDr169XgwYNFB4erqysLEu7devWqXXr1ipfvry8vLxUuXJlLViwQFevXrW06du3r9q2basRI0bI19dXzzzzjFavXm1zOFq6dKnmzZunuXPnql+/fgXe1z/Lq1/NBx98oCVLlmju3Llq3bp1gdafexUkV8WKFSX9ESYL6ueff5Yk1a5d22p6pUqVLNspLqmpqZKkChUqWKaZTCYNGTJEXl5ecnNzU+XKldWhQwdJspwvt9uH200riJt/Fh4eHpJ0y5NxHh4eysnJsTqnAXsgEAElgKOjozp16qT4+HidOXNG0h+dZB9//HGVL19e8+fP1zfffKOoqCj1799fZrPZsqyLi4t27dqlLVu26Nlnn9WRI0fUt29fdenSRdnZ2fmupW3btvL19dV//vMfXbp06Z6Xc3Z2zrMDryRLx+by5ctbTf/uu+/00ksvacSIERo5cqTVvNt1+L7TPpUpUybP6X8+XjezZTt3UxTr/LNjx45J+v8hJjs7W126dNH69es1adIkrV27VlFRUZYO6YVx5TC/bvezsOVnBBQHAhFQQuTeMsj96//zzz9X+fLlLe+e6dat2y19j3I5OjoqODhYs2fP1okTJ/T3v/9d27Zt0/bt2/NdR+3atbV582adP39eYWFhVrdl7qR69eo6depUnvNyp/+5j8qFCxf01FNPqVmzZpo3b94ty+Redbly5YrV9NyrHIXlXreTW/vZs2etpl+6dOmWK1BFXXtuh/TQ0FBJ0tGjR3X69Gn9+9//1qRJk/TEE08oJCRE/v7+97QPt5sGGAmBCCgBrl+/rs2bN8vJyUn169eX9Mdf0g4ODlZXFc6dO6e1a9daLZvXVZxmzZpJks1vNG7SpIm++eYbxcTEqGfPnre98vNn3bt31/79+xUdHW01/cqVK1q2bJmaNWtm6R+UnZ2tZ555RllZWfr888/zfLGhu7u7vL29tWvXLqvp8+fPt2mfbqdWrVqSZLWdtLQ0ffzxx1btgoODVbZsWS1cuNBqel5h7l7XaYvly5fro48+Ups2bRQcHCzp/191+fNVFrPZrDlz5lgt6+/vr0aNGumTTz5RWlqaZfru3bt19OjRAtcG3M94ygywgw0bNujkyZOSpKSkJC1fvlxn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CIBNSnwqaNiwobZs2WIZ/3OQGTdunNavX681a9bIw8ND4eHh6t27t/bs2SNJys7OVo8ePeTn56e9e/cqPj5egwYNUrly5TRjxoxi3xcAd+cTWEdV6ze1dxkADKbEB6KyZcvKz8/vlulXr17VokWLtHz5cnXu3FmStGTJEtWvX1/79+9X69attXnzZp04cUJbtmyRr6+vmjVrpnfeeUeTJk3StGnT5OTkVNy7AwAASqAS/5TZmTNn5O/vr5o1a2rAgAEymUySpOjoaF2/fl0hISGWtvXq1VNAQID27dsnSdq3b58aN25sdQstNDRUKSkpOn78+G23mZmZqZSUFKsBAACUXiU6EAUFBSkyMlIbN27UggULFBcXp3bt2un3339XQkKCnJyc5OnpabWMr6+vEhISJEkJCQlWYSh3fu6824mIiJCHh4dlqFatWuHuGAAAKFFK9C2zbt26Wf7dpEkTBQUFqXr16lq9erVcXFyKbLuTJ0/W+PHjLeMpKSmEIgAASrESfYXoZp6ennrooYd09uxZ+fn5KSsrS1euXLFqk5iYaOlz5Ofnp8TExFvm5867HWdnZ7m7u1sNAACg9LqvAlFqaqpiY2NVpUoVtWjRQuXKldPWrVst80+dOiWTyaQ2bdpIktq0aaOjR48qKSnJ0iYqKkru7u5q0KBBsdcPAABKphJ9y2zChAnq2bOnqlevrvPnz+vNN99UmTJl1K9fP3l4eGj48OEaP368vLy85O7urhdffFFt2rRR69atJUldu3ZVgwYN9Oyzz2rWrFlKSEjQlClTNGbMGDk7O9t57wAAQElRogPRr7/+qn79+unixYuqXLmyHn30Ue3fv1+VK1eWJL377rtydHTUk08+afVixlxlypTRunXrNGrUKLVp00YPPPCABg8erLffftteuwQAAEqgEh2IVq5cecf55cuX17x58zRv3rzbtqlevbq++eabwi4NAACUIiU6EKHkMplMSk5OtmlZPsIJAChpCETIN5PJpHr16ysjPd2m5fkIJwCgpCEQId+Sk5OVkZ7ORzgBAKUGgQg24yOcAIDS4r56DxEAAEBRIBABAADDIxABAADDIxABAADDIxABAADDIxABAADDIxABAADDIxABAADDIxABAADDIxABAADDIxABAADD41tmAAzPZDIpOTnZpmW9vb35UDFQChCIABiayWRSvfr1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du1aOTg4WE2bPn26fHx85O/vr+eee06vvvqq1TG5l9puduHCBW3btk09e/bMc35mZqb69OmjLVu2aPfu3WrRooUkKScnRxEREQoMDJSLi4uaNm2qzz777J73MffnuXjxYgUEBMjNzU2jR49Wdna2Zs2aJT8/P/n4+Ojvf/+71XquXLmiESNGqHLlynJ3d1fnzp31448/3na7mzdvlp+fn2bNmqVGjRqpVq1aCgsL04cffigXFxdJ0sWLF9WvXz9VrVpVrq6uaty4sVasWGFZx9KlS1WpUiVlZmZarbtXr1569tlnrfYn144dO9SqVSs98MAD8vT0VNu2bfXzzz/n2VaSevbsqZUrV952P4CCIBABxSQ1NVWffvqpateurUqVKlmmV6hQQZGRkTpx4oTmzJmjDz/8UO+++65l/oABA/Tggw/q4MGDio6O1quvvqpy5crle/vbtm1Tly5d9Pe//12TJk0q0L707dvXcuUrPj5eK1asUNmyZdW2bdt8reff//63WrZsqR9++EGjR4/WqFGjdOrUKZvrWrZsmf7+979r5syZio6OVkBAQKFcUfj222/l6uqq+vXr3zIvNTVVPXr00IkTJ7Rnzx7VrVvXMi8iIkJLly7VwoULdfz4cY0bN04DBw7Uzp0773nbsbGx2rBhgzZu3KgVK1Zo0aJF6tGjh3799Vft3LlTM2fO1JQpU3TgwAHLMn369FFSUpI2bNig6OhoPfzwwwoODtalS5fy3Iafn5/i4+O1a9eu29Zx7do1tWjRQuvXr9exY8c0cuRIPfvss/ruu+8s28zOztZXX31lWSYpKUnr16/XsGHDblnfjRs31KtXL3Xo0EFHjhzRvn37NHLkyFsC7p+1atVKv/76q86dO3e3wwbkW1l7FwCUZuvWrZObm5skKS0tTVWqVNG6deusbrtMmTLF8u8aNWpowoQJWrlypV555RVJkslk0sSJE1WvXj1JUp06dfJdxxdffKFBgwbpo48+Ut++fQuyS5L+uLWTe+UgNjZWY8aM0YwZM9SlS5d8rad79+4aPXq0pD+ulL377rvavn27VajIj7lz52r48OEaOnSoJGnq1KnavHmzUlNTbVpfrp9//lm+vr553i575513VKFCBcXExKhy5cqW6ZmZmZoxY4a2bNliuW1Xs2ZNffvtt/rggw/UoUOHe9p2Tk6OFi9erAoVKqhBgwbq1KmTTp06pW+++UaOjo6qW7euZs6cqe3btysoKEjffvutvvvuOyUlJcnZ2VmS9K9//Utr167VZ599ppEjR96yjT59+mjTpk3q0KGD/Pz81Lp1awUHB2vQoEFyd3eXJFWtWlUTJkywLPPiiy9q06ZNWr16tVq1aiUXFxf1799fS5YsUZ8+fSRJn376qQICAvK8fZiSkqKrV6/qscceU61atSQpz8D5Z/7+/pL++HnUqFHjno4fcK+4QgQUoU6dOunw4cM6fPiwvvvuO4WGhqpbt26W2wKStGrVKrVt21Z+fn5yc3PTlClTZDKZLPPHjx+vESNGKCQkRP/4xz8UGxubrxoOHDigPn366JNPPimUMPRnub/QevTooYkTJ+Z7+SZNmlj+7eDgID8/PyUlJdlcz6lTp9SqVSuraTeP2yIjI0Ply5fPc17Xrl2VlpamGTNmWE0/e/as0tPT1aVLF7m5uVmGpUuX5utnWKNGDVWoUMEy7uvrqwYNGliFM19fX8tx+/HHH5WamqpKlSpZbTcuLu622y1TpoyWLFmiX3/9VbNmzVLVqlU1Y8YMNWzYUPHx8ZL+6CP1zjvvqHHjxvLy8pKbm5s2bdpkda4+99xz2rx5s3777TdJf9wCzH244GZeXl4aMmSIQkND1bNnT82ZM8eyrdvJDeHp6en3cuiAfCEQAUXogQceUO3atVW7dm395S9/0UcffaS0tDR9+OGHkqR9+/ZpwIAB6t69u9atW6cffvhBr7/+utWTPdOmTdPx48fVo0cPbdu2TQ0aNNAXX3xxzzXUqlVL9erV0+LFi636JuUl92rA1atXb5l35coVeXh4WMazs7PVt29fubu739L3x9HRUWaz2WpaXtu++dafg4ODcnJy8qztXtd5N7asx9vbW5cvX85zXnBwsL788kstXLhQL730kmV67lWp9evXW0Lx4cOHdeLEiTv2I7pZXsfoTsctNTVVVapUsdrm4cOHderUqbuG1qpVq+rZZ5/Vf/7zHx0/flzXrl3TwoULJUn//Oc/NWfOHE2aNEnbt2/X4cOHFRoaanWuNm/eXE2bNtXSpUsVHR2t48eP37Fv1pIlS7Rv3z498sgjWrVqlR566CHt37//tu1zb/n9+UocUFgIREAxcnBwkKOjozIyMiRJe/fuVfXq1fX666+rZcuWqlOnjtXVo1wPPfSQxo0bp82bN6t3795asmTJPW/T29tb27Zt09mzZ/X000/f8Ze/l5eXvL29FR0dbTU9JSVFZ8+e1UMPPWSZNm7cOB09elRr16695epJ5cqVrf7az87O1rFjx+655rxUrlxZv//+u9LS0izTbn49QN26dXXw4EGraTeP21Jb8+bNlZCQcNtQ1LVrV3399df68MMP9be//U2S1KBBAzk7O8tkMllCce5QrVq1u+6vrR5++GElJCSobNmyt2zX29v7ntdTsWJFValSxXK89+zZoyeeeEIDBw5U06ZNVbNmzTxfETBixAhFRkZqyZIlCgkJueu+Nm/eXJMnT9bevXvVqFGjO77n6dixYypXrpwaNmx4z/sB3CsCEVCEMjMzlZCQoISEBMXExOjFF19Uamqq5WmlOnXqyGQyaeXKlYqNjdX7779vdfUnIyND4eHh2rFjh37++Wft2bNHBw8evGtfi5v5+Pho27ZtOnnypPr166cbN27ctu348eM1Y8YMLVu2TLGxsfruu+80YMAAVa5cWb1795b0x1/28+fP18KFC+Xg4GDZx9yrIp07d9b69eu1fv16nTx5UqNGjbK8fNBWQUFBcnV11WuvvabY2FgtX75ckZGRVm1efPFFLVq0SJ988oni4uI0Y8YM/fjjj1a3bGyprXnz5vL29taePXtu2yYkJETr1q3TokWLFB4ergoVKmjChAkaN26cPv74Y8XGxurQoUOaO3euPv7444IcijsKCQlRmzZt1KtXL23evFnnzp3T3r179frrr9/26cQPPvhAo0aN0ubNmxUbG6vjx49r0qRJOn78uNW5GhUVpb179yomJkbPP/+8EhMTb1lX//799euvv+rDDz/MszN1rri4OE2ePFn79u3Tzz//rM2bN+vMmTN3PLd3796tdu3aWW6dAYWJTtVAEdq4caOqVKki6Y+nyerVq6c1a9ZYOpk+/vjjGjdunMLDw5WZmakePXrojTfesDy+XqZMGV28eFGDBg3SL7/8ojJlymjUqFF666238l2Ln5+ftm3bpo4dO2rAgAFavny5ypQpc0u7V155RW5ubpo5c6ZiY2Pl5eWltm3bavv27ZZfRDt37lR2drYef/xxq2XffPNNTZs2TcOGDdOPP/6oQYMGqWzZsho3bpw6deqU75r/zMvLS59++qkmTpyoDz/8UMHBwZo2bZpVJ+EBAwbop59+0vjx43Xt2jU9/fTTGjp0qOVJKEk21VamTBkNHTpUy5Ytu+N7pHLD1mOPPSaz2az//Oc/qly5siIiIvTTTz/J09NTDz/8sF577bUCHYs7cXBw0DfffKPXX39dQ4cO1YULF+Tn56f27dvL19c3z2VatWqlb7/9Vi+88ILOnz8vNzc3NWzYUGvXrrV0/p4yZYp++uknhYaGytXVVSNHjlSvXr1uub3q4eGhJ598UuvXr7/jW9JdXV118uRJffzxx7p48aKqVKmiMWPG6Pnnn7/tMitXrrT8twEUNgfzzTfTAZRI8fHx6tevn01vQDayLl26yM/PT5988kmB1pOQkKCGDRvq0KFDql69eiFVVzoFBwerYcOGev/99wttnRs2bNDLL7+sI0eOqGxZ/pZH4eOsAu4DP/30k9LT03Xw4EFdunRJXl5e9i6pREpPT9fChQsVGhqqMmXKaMWKFdqyZYuioqIKvG4/Pz8tWrRIJpOJQHQbly9f1o4dO7Rjxw7Nnz+/UNedlpamJUuWEIZQZLhCBNwHxo0bp/nz5ys4OFjr16+/48vrjCwjI0M9e/bUDz/8oGvXrqlu3bqaMmWKpe8TilaNGjV0+fJlvfHGG1bvLALuBwQiAABgeDxlBgAADI9ABAAADI9ABAAADI9ABAAADI9ABAAADI9ABAAADI9ABAAADI9ABAAADI9ABAAADO//AR8JslfEJCcNAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Title sayısallaştırmadan önce max_len değerime karar vermek için\n", "import pandas as pd\n", "\n", "# CSV dosyasını yükle\n", "df = pd.read_csv(\"data_all_news.csv\")\n", "\n", "# Başlıkların uzunluklarını hesaplama (kelime sayısı)\n", "df['title_length'] = df['Title'].apply(lambda x: len(x.split()))\n", "\n", "# Uzunlukların istatistiklerini görmek\n", "print(df['title_length'].describe())\n", "\n", "# Başlık uzunluklarının dağılımını görmek için\n", "import matplotlib.pyplot as plt\n", "plt.hist(df['title_length'], bins=30, color='skyblue', edgecolor='black')\n", "plt.title('Başlık Uzunluğu Dağılımı')\n", "plt.xlabel('Başlık Uzunluğu (Kelime Sayısı)')\n", "plt.ylabel('Frekans')\n", "plt.show()\n", "#çıktıya göre max_len 15 olarak belirleyebilirim" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#tokenizer_data.ipynb da tokenizer işlemleri yapıldı." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.10" } }, "nbformat": 4, "nbformat_minor": 2 }