{ "cells": [ { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from datasets import load_dataset\n", "import pandas as pd \n", "from pymongo import MongoClient\n", "from transformers import BertTokenizer, BertForMaskedLM, DPRContextEncoderTokenizer,DPRContextEncoder;\n", "from sklearn.feature_extraction.text import TfidfVectorizer\n", "import numpy as np\n", "import re\n", "import pandas as pd\n", "from nltk.stem import WordNetLemmatizer\n", "from nltk.corpus import stopwords as nltk_stopwords\n", "from transformers import BertTokenizer, BertModel, AutoTokenizer\n", "from sklearn.metrics.pairwise import cosine_similarity\n", "import torch\n", "from pymongo import MongoClient\n", "import torch.nn.functional as F" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Kısaltılmış metinler:\n", "0 Alman tarihçileri Alman sosyologlar Alman devr...\n", "1 Diskografi : Seferberlik Türküleri Kuvayi Mill...\n", "2 Modern bilgisayarlar Ayrıca Bilgisayarlar Bilg...\n", "3 Ayrıca Kaynakça Edebiyat\n", "4 Ayrıca Mühendislik Mühendislik dalları Mühendi...\n", "Name: kısaltılmıs_metin, dtype: object\n", "Tokenize edilmiş ve padding uygulanmış veriler:\n", " kısaltılmıs_metin \\\n", "0 Alman tarihçileri Alman sosyologlar Alman devr... \n", "1 Diskografi : Seferberlik Türküleri Kuvayi Mill... \n", "2 Modern bilgisayarlar Ayrıca Bilgisayarlar Bilg... \n", "3 Ayrıca Kaynakça Edebiyat \n", "4 Ayrıca Mühendislik Mühendislik dalları Mühendi... \n", "\n", " padded_tokens \n", "0 [2, 3651, 2465, 10576, 3651, 23906, 7131, 1980... \n", "1 [2, 28488, 12922, 30, 17749, 3251, 2102, 22548... \n", "2 [2, 11368, 26726, 3401, 7682, 1980, 7682, 7682... \n", "3 [2, 3401, 7934, 2548, 8558, 3, 0, 0, 0, 0, 0, ... \n", "4 [2, 3401, 13858, 13858, 31737, 13858, 13858, 2... \n", "Temizlenmiş veri 'cleaned_data3.csv' dosyasına kaydedildi.\n" ] }, { "data": { "text/plain": [ "'cleaned_data3.csv'" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "import re\n", "from nltk.corpus import stopwords\n", "from transformers import AutoTokenizer\n", "\n", "#------------------------cümlelerin boyutlarını ve stop wordsleri tanımladığımız yer -----------------------------\n", "import spacy\n", "from spacy.lang.tr import Turkish\n", "\n", "nlp = Turkish()\n", "\n", "def truncate_text_meaningful(text, max_len=300):\n", " doc = nlp(text)\n", "\n", " # Stop kelimeleri ve noktalama işaretlerini kaldır\n", " tokens = [token.lemma_ for token in doc if not token.is_stop and not token.is_punct]\n", "\n", " # Named Entity Recognition (isteğe bağlı)\n", " # for ent in doc.ents:\n", " # print(ent.text, ent.label_)\n", "\n", " # Belirli bir uzunluktaki metni döndür\n", " truncated_text = ' '.join(tokens[:max_len])\n", "\n", " return truncated_text\n", " \n", "\n", " \n", "\n", " \n", "\n", "#----------------------------------tokenize etme fonksiyonu-----------------------------------\n", "def tokenize_and_pad(data, model_name='bert-base-uncased', max_length=512):\n", " tokenizer = AutoTokenizer.from_pretrained(model_name)\n", " encoded_input = tokenizer(data, padding=True, truncation=True, max_length=max_length)\n", " return encoded_input\n", "\n", "class DataProcessor:\n", " def __init__(self, input_csv, output_csv, max_words=300, model_name='dbmdz/distilbert-base-turkish-cased'):\n", " self.input_csv = input_csv\n", " self.output_csv = output_csv\n", " self.max_words = max_words\n", " self.model_name = model_name\n", "\n", " def main_pipeline(self):\n", "\n", " def filter_text(text):\n", " # Dış bağlantılar ve kaynakçaları kaldır\n", " text = re.sub(r'http\\S+|https\\S+|\\b(?:www\\.)?\\S+\\.\\w{2,4}\\b', '', text)\n", " # Tarih ve sayıları kaldır\n", " text = re.sub(r'\\d{4}-\\d{2}-\\d{2}|\\d{2}/\\d{2}/\\d{4}|\\d+', '', text) # Tari\n", " # Sayıları kaldır\n", " text = re.sub(r'\\d+', '', text)\n", " # Kısa veya uzun kelimeleri kaldır\n", " words = text.split()\n", " words = [word for word in words if 2 <= len(word) <= 20]\n", " return ' '.join(words)\n", " \n", " df = pd.read_csv(self.input_csv)\n", " df['kısaltılmıs_metin'] = df['metinler'].apply(filter_text)\n", "\n", " \n", "\n", " # Metinleri kısalt\n", " df['kısaltılmıs_metin'] = df['metinler'].apply(lambda x: truncate_text_meaningful(x, max_len=self.max_words))\n", " padded_tokens = tokenize_and_pad(df['kısaltılmıs_metin'].tolist(), model_name=self.model_name)\n", " df['padded_tokens'] = padded_tokens['input_ids']\n", " print(\"Kısaltılmış metinler:\")\n", " print(df['kısaltılmıs_metin'].head())\n", " print(\"Tokenize edilmiş ve padding uygulanmış veriler:\")\n", " print(df[['kısaltılmıs_metin', 'padded_tokens']].head())\n", " \n", " \n", "\n", " # Veriyi kaydet\n", " self.save_cleaned_data(df)\n", " \n", " return self.output_csv\n", " \n", "\n", " def save_cleaned_data(self, df):\n", " df.to_csv(self.output_csv, index=False)\n", " print(f\"Temizlenmiş veri '{self.output_csv}' dosyasına kaydedildi.\")\n", "\n", "#---------------------------------Verilerin kaydedilmesi-------------------------------------\n", "\n", "processor = DataProcessor(input_csv=\"texts_egitim.csv\", output_csv=\"cleaned_data3.csv\")\n", "processor.main_pipeline()\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " kısaltılmıs_metin\n", "0 Alman tarihçileri Alman sosyologlar Alman devr...\n", "1 Diskografi : Seferberlik Türküleri Kuvayi Mill...\n", "2 Modern bilgisayarlar Ayrıca Bilgisayarlar Bilg...\n", "3 Ayrıca Kaynakça Edebiyat\n", "4 Ayrıca Mühendislik Mühendislik dalları Mühendi...\n", "... ...\n", "104103 Dış bağlantılar Kaynakça Cicerininae\n", "104104 Dış bağlantılar Kaynakça Cicerininae\n", "104105 Lig futbolcuları\n", "104106 Dış bağlantılar Kaynakça Kalyptorhynchia\n", "104107 Dış bağlantılar 'de Japonya'da oluşumlar 'de b...\n", "\n", "[104108 rows x 1 columns]\n" ] }, { "data": { "text/html": [ "
\n", " | kısaltılmıs_metin | \n", "
---|---|
0 | \n", "Alman tarihçileri Alman sosyologlar Alman devr... | \n", "
1 | \n", "Diskografi : Seferberlik Türküleri Kuvayi Mill... | \n", "
2 | \n", "Modern bilgisayarlar Ayrıca Bilgisayarlar Bilg... | \n", "
3 | \n", "Ayrıca Kaynakça Edebiyat | \n", "
4 | \n", "Ayrıca Mühendislik Mühendislik dalları Mühendi... | \n", "
... | \n", "... | \n", "
104103 | \n", "Dış bağlantılar Kaynakça Cicerininae | \n", "
104104 | \n", "Dış bağlantılar Kaynakça Cicerininae | \n", "
104105 | \n", "Lig futbolcuları | \n", "
104106 | \n", "Dış bağlantılar Kaynakça Kalyptorhynchia | \n", "
104107 | \n", "Dış bağlantılar 'de Japonya'da oluşumlar 'de b... | \n", "
104108 rows × 1 columns
\n", "