yonkasoft commited on
Commit
4c37d0f
1 Parent(s): 4a9831d

Upload 3 files

Browse files
.gitattributes CHANGED
@@ -37,3 +37,5 @@ combined_output.csv filter=lfs diff=lfs merge=lfs -text
37
  combined_texts.csv filter=lfs diff=lfs merge=lfs -text
38
  processed_data.csv filter=lfs diff=lfs merge=lfs -text
39
  cleaned_processed_data.csv filter=lfs diff=lfs merge=lfs -text
 
 
 
37
  combined_texts.csv filter=lfs diff=lfs merge=lfs -text
38
  processed_data.csv filter=lfs diff=lfs merge=lfs -text
39
  cleaned_processed_data.csv filter=lfs diff=lfs merge=lfs -text
40
+ cleaned_data3.csv filter=lfs diff=lfs merge=lfs -text
41
+ cleaned_processed_data_sample.csv filter=lfs diff=lfs merge=lfs -text
cleaned_data3.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ce6e95de4b9027b056fcd106de49fa4bcdcf6492c3a77d70970c7a049fdc0088
3
+ size 367048270
cleaned_processed_data_sample.csv CHANGED
The diff for this file is too large to render. See raw diff
 
get_text.ipynb ADDED
@@ -0,0 +1,385 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 3,
6
+ "metadata": {},
7
+ "outputs": [],
8
+ "source": [
9
+ "from datasets import load_dataset\n",
10
+ "import pandas as pd \n",
11
+ "from pymongo import MongoClient\n",
12
+ "from transformers import BertTokenizer, BertForMaskedLM, DPRContextEncoderTokenizer,DPRContextEncoder;\n",
13
+ "from sklearn.feature_extraction.text import TfidfVectorizer\n",
14
+ "import numpy as np\n",
15
+ "import re\n",
16
+ "import pandas as pd\n",
17
+ "from nltk.stem import WordNetLemmatizer\n",
18
+ "from nltk.corpus import stopwords as nltk_stopwords\n",
19
+ "from transformers import BertTokenizer, BertModel, AutoTokenizer\n",
20
+ "from sklearn.metrics.pairwise import cosine_similarity\n",
21
+ "import torch\n",
22
+ "from pymongo import MongoClient\n",
23
+ "import torch.nn.functional as F"
24
+ ]
25
+ },
26
+ {
27
+ "cell_type": "code",
28
+ "execution_count": 8,
29
+ "metadata": {},
30
+ "outputs": [
31
+ {
32
+ "name": "stdout",
33
+ "output_type": "stream",
34
+ "text": [
35
+ "Kısaltılmış metinler:\n",
36
+ "0 Alman tarihçileri Alman sosyologlar Alman devr...\n",
37
+ "1 Diskografi : Seferberlik Türküleri Kuvayi Mill...\n",
38
+ "2 Modern bilgisayarlar Ayrıca Bilgisayarlar Bilg...\n",
39
+ "3 Ayrıca Kaynakça Edebiyat\n",
40
+ "4 Ayrıca Mühendislik Mühendislik dalları Mühendi...\n",
41
+ "Name: kısaltılmıs_metin, dtype: object\n",
42
+ "Tokenize edilmiş ve padding uygulanmış veriler:\n",
43
+ " kısaltılmıs_metin \\\n",
44
+ "0 Alman tarihçileri Alman sosyologlar Alman devr... \n",
45
+ "1 Diskografi : Seferberlik Türküleri Kuvayi Mill... \n",
46
+ "2 Modern bilgisayarlar Ayrıca Bilgisayarlar Bilg... \n",
47
+ "3 Ayrıca Kaynakça Edebiyat \n",
48
+ "4 Ayrıca Mühendislik Mühendislik dalları Mühendi... \n",
49
+ "\n",
50
+ " padded_tokens \n",
51
+ "0 [2, 3651, 2465, 10576, 3651, 23906, 7131, 1980... \n",
52
+ "1 [2, 28488, 12922, 30, 17749, 3251, 2102, 22548... \n",
53
+ "2 [2, 11368, 26726, 3401, 7682, 1980, 7682, 7682... \n",
54
+ "3 [2, 3401, 7934, 2548, 8558, 3, 0, 0, 0, 0, 0, ... \n",
55
+ "4 [2, 3401, 13858, 13858, 31737, 13858, 13858, 2... \n",
56
+ "Temizlenmiş veri 'cleaned_data3.csv' dosyasına kaydedildi.\n"
57
+ ]
58
+ },
59
+ {
60
+ "data": {
61
+ "text/plain": [
62
+ "'cleaned_data3.csv'"
63
+ ]
64
+ },
65
+ "execution_count": 8,
66
+ "metadata": {},
67
+ "output_type": "execute_result"
68
+ }
69
+ ],
70
+ "source": [
71
+ "import pandas as pd\n",
72
+ "import re\n",
73
+ "from nltk.corpus import stopwords\n",
74
+ "from transformers import AutoTokenizer\n",
75
+ "\n",
76
+ "#------------------------cümlelerin boyutlarını ve stop wordsleri tanımladığımız yer -----------------------------\n",
77
+ "import spacy\n",
78
+ "from spacy.lang.tr import Turkish\n",
79
+ "\n",
80
+ "nlp = Turkish()\n",
81
+ "\n",
82
+ "def truncate_text_meaningful(text, max_len=300):\n",
83
+ " doc = nlp(text)\n",
84
+ "\n",
85
+ " # Stop kelimeleri ve noktalama işaretlerini kaldır\n",
86
+ " tokens = [token.lemma_ for token in doc if not token.is_stop and not token.is_punct]\n",
87
+ "\n",
88
+ " # Named Entity Recognition (isteğe bağlı)\n",
89
+ " # for ent in doc.ents:\n",
90
+ " # print(ent.text, ent.label_)\n",
91
+ "\n",
92
+ " # Belirli bir uzunluktaki metni döndür\n",
93
+ " truncated_text = ' '.join(tokens[:max_len])\n",
94
+ "\n",
95
+ " return truncated_text\n",
96
+ " \n",
97
+ "\n",
98
+ " \n",
99
+ "\n",
100
+ " \n",
101
+ "\n",
102
+ "#----------------------------------tokenize etme fonksiyonu-----------------------------------\n",
103
+ "def tokenize_and_pad(data, model_name='bert-base-uncased', max_length=512):\n",
104
+ " tokenizer = AutoTokenizer.from_pretrained(model_name)\n",
105
+ " encoded_input = tokenizer(data, padding=True, truncation=True, max_length=max_length)\n",
106
+ " return encoded_input\n",
107
+ "\n",
108
+ "class DataProcessor:\n",
109
+ " def __init__(self, input_csv, output_csv, max_words=300, model_name='dbmdz/distilbert-base-turkish-cased'):\n",
110
+ " self.input_csv = input_csv\n",
111
+ " self.output_csv = output_csv\n",
112
+ " self.max_words = max_words\n",
113
+ " self.model_name = model_name\n",
114
+ "\n",
115
+ " def main_pipeline(self):\n",
116
+ "\n",
117
+ " def filter_text(text):\n",
118
+ " # Dış bağlantılar ve kaynakçaları kaldır\n",
119
+ " text = re.sub(r'http\\S+|https\\S+|\\b(?:www\\.)?\\S+\\.\\w{2,4}\\b', '', text)\n",
120
+ " # Tarih ve sayıları kaldır\n",
121
+ " text = re.sub(r'\\d{4}-\\d{2}-\\d{2}|\\d{2}/\\d{2}/\\d{4}|\\d+', '', text) # Tari\n",
122
+ " # Sayıları kaldır\n",
123
+ " text = re.sub(r'\\d+', '', text)\n",
124
+ " # Kısa veya uzun kelimeleri kaldır\n",
125
+ " words = text.split()\n",
126
+ " words = [word for word in words if 2 <= len(word) <= 20]\n",
127
+ " return ' '.join(words)\n",
128
+ " \n",
129
+ " df = pd.read_csv(self.input_csv)\n",
130
+ " df['kısaltılmıs_metin'] = df['metinler'].apply(filter_text)\n",
131
+ "\n",
132
+ " \n",
133
+ "\n",
134
+ " # Metinleri kısalt\n",
135
+ " df['kısaltılmıs_metin'] = df['metinler'].apply(lambda x: truncate_text_meaningful(x, max_len=self.max_words))\n",
136
+ " padded_tokens = tokenize_and_pad(df['kısaltılmıs_metin'].tolist(), model_name=self.model_name)\n",
137
+ " df['padded_tokens'] = padded_tokens['input_ids']\n",
138
+ " print(\"Kısaltılmış metinler:\")\n",
139
+ " print(df['kısaltılmıs_metin'].head())\n",
140
+ " print(\"Tokenize edilmiş ve padding uygulanmış veriler:\")\n",
141
+ " print(df[['kısaltılmıs_metin', 'padded_tokens']].head())\n",
142
+ " \n",
143
+ " \n",
144
+ "\n",
145
+ " # Veriyi kaydet\n",
146
+ " self.save_cleaned_data(df)\n",
147
+ " \n",
148
+ " return self.output_csv\n",
149
+ " \n",
150
+ "\n",
151
+ " def save_cleaned_data(self, df):\n",
152
+ " df.to_csv(self.output_csv, index=False)\n",
153
+ " print(f\"Temizlenmiş veri '{self.output_csv}' dosyasına kaydedildi.\")\n",
154
+ "\n",
155
+ "#---------------------------------Verilerin kaydedilmesi-------------------------------------\n",
156
+ "\n",
157
+ "processor = DataProcessor(input_csv=\"texts_egitim.csv\", output_csv=\"cleaned_data3.csv\")\n",
158
+ "processor.main_pipeline()\n"
159
+ ]
160
+ },
161
+ {
162
+ "cell_type": "code",
163
+ "execution_count": 9,
164
+ "metadata": {},
165
+ "outputs": [
166
+ {
167
+ "name": "stdout",
168
+ "output_type": "stream",
169
+ "text": [
170
+ " kısaltılmıs_metin\n",
171
+ "0 Alman tarihçileri Alman sosyologlar Alman devr...\n",
172
+ "1 Diskografi : Seferberlik Türküleri Kuvayi Mill...\n",
173
+ "2 Modern bilgisayarlar Ayrıca Bilgisayarlar Bilg...\n",
174
+ "3 Ayrıca Kaynakça Edebiyat\n",
175
+ "4 Ayrıca Mühendislik Mühendislik dalları Mühendi...\n",
176
+ "... ...\n",
177
+ "104103 Dış bağlantılar Kaynakça Cicerininae\n",
178
+ "104104 Dış bağlantılar Kaynakça Cicerininae\n",
179
+ "104105 Lig futbolcuları\n",
180
+ "104106 Dış bağlantılar Kaynakça Kalyptorhynchia\n",
181
+ "104107 Dış bağlantılar 'de Japonya'da oluşumlar 'de b...\n",
182
+ "\n",
183
+ "[104108 rows x 1 columns]\n"
184
+ ]
185
+ },
186
+ {
187
+ "data": {
188
+ "text/html": [
189
+ "<div>\n",
190
+ "<style scoped>\n",
191
+ " .dataframe tbody tr th:only-of-type {\n",
192
+ " vertical-align: middle;\n",
193
+ " }\n",
194
+ "\n",
195
+ " .dataframe tbody tr th {\n",
196
+ " vertical-align: top;\n",
197
+ " }\n",
198
+ "\n",
199
+ " .dataframe thead th {\n",
200
+ " text-align: right;\n",
201
+ " }\n",
202
+ "</style>\n",
203
+ "<table border=\"1\" class=\"dataframe\">\n",
204
+ " <thead>\n",
205
+ " <tr style=\"text-align: right;\">\n",
206
+ " <th></th>\n",
207
+ " <th>kısaltılmıs_metin</th>\n",
208
+ " </tr>\n",
209
+ " </thead>\n",
210
+ " <tbody>\n",
211
+ " <tr>\n",
212
+ " <th>0</th>\n",
213
+ " <td>Alman tarihçileri Alman sosyologlar Alman devr...</td>\n",
214
+ " </tr>\n",
215
+ " <tr>\n",
216
+ " <th>1</th>\n",
217
+ " <td>Diskografi : Seferberlik Türküleri Kuvayi Mill...</td>\n",
218
+ " </tr>\n",
219
+ " <tr>\n",
220
+ " <th>2</th>\n",
221
+ " <td>Modern bilgisayarlar Ayrıca Bilgisayarlar Bilg...</td>\n",
222
+ " </tr>\n",
223
+ " <tr>\n",
224
+ " <th>3</th>\n",
225
+ " <td>Ayrıca Kaynakça Edebiyat</td>\n",
226
+ " </tr>\n",
227
+ " <tr>\n",
228
+ " <th>4</th>\n",
229
+ " <td>Ayrıca Mühendislik Mühendislik dalları Mühendi...</td>\n",
230
+ " </tr>\n",
231
+ " <tr>\n",
232
+ " <th>...</th>\n",
233
+ " <td>...</td>\n",
234
+ " </tr>\n",
235
+ " <tr>\n",
236
+ " <th>104103</th>\n",
237
+ " <td>Dış bağlantılar Kaynakça Cicerininae</td>\n",
238
+ " </tr>\n",
239
+ " <tr>\n",
240
+ " <th>104104</th>\n",
241
+ " <td>Dış bağlantılar Kaynakça Cicerininae</td>\n",
242
+ " </tr>\n",
243
+ " <tr>\n",
244
+ " <th>104105</th>\n",
245
+ " <td>Lig futbolcuları</td>\n",
246
+ " </tr>\n",
247
+ " <tr>\n",
248
+ " <th>104106</th>\n",
249
+ " <td>Dış bağlantılar Kaynakça Kalyptorhynchia</td>\n",
250
+ " </tr>\n",
251
+ " <tr>\n",
252
+ " <th>104107</th>\n",
253
+ " <td>Dış bağlantılar 'de Japonya'da oluşumlar 'de b...</td>\n",
254
+ " </tr>\n",
255
+ " </tbody>\n",
256
+ "</table>\n",
257
+ "<p>104108 rows × 1 columns</p>\n",
258
+ "</div>"
259
+ ],
260
+ "text/plain": [
261
+ " kısaltılmıs_metin\n",
262
+ "0 Alman tarihçileri Alman sosyologlar Alman devr...\n",
263
+ "1 Diskografi : Seferberlik Türküleri Kuvayi Mill...\n",
264
+ "2 Modern bilgisayarlar Ayrıca Bilgisayarlar Bilg...\n",
265
+ "3 Ayrıca Kaynakça Edebiyat\n",
266
+ "4 Ayrıca Mühendislik Mühendislik dalları Mühendi...\n",
267
+ "... ...\n",
268
+ "104103 Dış bağlantılar Kaynakça Cicerininae\n",
269
+ "104104 Dış bağlantılar Kaynakça Cicerininae\n",
270
+ "104105 Lig futbolcuları\n",
271
+ "104106 Dış bağlantılar Kaynakça Kalyptorhynchia\n",
272
+ "104107 Dış bağlantılar 'de Japonya'da oluşumlar 'de b...\n",
273
+ "\n",
274
+ "[104108 rows x 1 columns]"
275
+ ]
276
+ },
277
+ "metadata": {},
278
+ "output_type": "display_data"
279
+ }
280
+ ],
281
+ "source": [
282
+ "import pandas as pd\n",
283
+ "\n",
284
+ "# CSV dosyasını oku\n",
285
+ "df = pd.read_csv('cleaned_data3.csv')\n",
286
+ "\n",
287
+ "# Görmek istediğiniz üç sütunu seçin\n",
288
+ "selected_columns = df[['kısaltılmıs_metin']]\n",
289
+ "\n",
290
+ "# Seçilen sütunları tablo olarak görüntüle\n",
291
+ "print(selected_columns)\n",
292
+ "\n",
293
+ "# Eğer Jupyter Notebook kullanıyorsanız, daha güzel görüntü için display() fonksiyonunu kullanabilirsiniz:\n",
294
+ "from IPython.display import display\n",
295
+ "display(selected_columns)\n"
296
+ ]
297
+ },
298
+ {
299
+ "cell_type": "code",
300
+ "execution_count": 10,
301
+ "metadata": {},
302
+ "outputs": [
303
+ {
304
+ "ename": "AttributeError",
305
+ "evalue": "'float' object has no attribute 'split'",
306
+ "output_type": "error",
307
+ "traceback": [
308
+ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
309
+ "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)",
310
+ "Cell \u001b[1;32mIn[10], line 12\u001b[0m\n\u001b[0;32m 9\u001b[0m df_sample \u001b[38;5;241m=\u001b[39m df\u001b[38;5;241m.\u001b[39msample(n\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m10000\u001b[39m, random_state\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m100\u001b[39m)\n\u001b[0;32m 11\u001b[0m \u001b[38;5;66;03m# Kelimeleri token'lara ayırma\u001b[39;00m\n\u001b[1;32m---> 12\u001b[0m tokenized_text \u001b[38;5;241m=\u001b[39m [text\u001b[38;5;241m.\u001b[39msplit() \u001b[38;5;28;01mfor\u001b[39;00m text \u001b[38;5;129;01min\u001b[39;00m df_sample[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mkısaltılmıs_metin\u001b[39m\u001b[38;5;124m'\u001b[39m]]\n\u001b[0;32m 14\u001b[0m \u001b[38;5;66;03m# Dictionary ve Corpus oluşturma\u001b[39;00m\n\u001b[0;32m 15\u001b[0m id2word \u001b[38;5;241m=\u001b[39m corpora\u001b[38;5;241m.\u001b[39mDictionary(tokenized_text)\n",
311
+ "Cell \u001b[1;32mIn[10], line 12\u001b[0m, in \u001b[0;36m<listcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 9\u001b[0m df_sample \u001b[38;5;241m=\u001b[39m df\u001b[38;5;241m.\u001b[39msample(n\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m10000\u001b[39m, random_state\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m100\u001b[39m)\n\u001b[0;32m 11\u001b[0m \u001b[38;5;66;03m# Kelimeleri token'lara ayırma\u001b[39;00m\n\u001b[1;32m---> 12\u001b[0m tokenized_text \u001b[38;5;241m=\u001b[39m [\u001b[43mtext\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msplit\u001b[49m() \u001b[38;5;28;01mfor\u001b[39;00m text \u001b[38;5;129;01min\u001b[39;00m df_sample[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mkısaltılmıs_metin\u001b[39m\u001b[38;5;124m'\u001b[39m]]\n\u001b[0;32m 14\u001b[0m \u001b[38;5;66;03m# Dictionary ve Corpus oluşturma\u001b[39;00m\n\u001b[0;32m 15\u001b[0m id2word \u001b[38;5;241m=\u001b[39m corpora\u001b[38;5;241m.\u001b[39mDictionary(tokenized_text)\n",
312
+ "\u001b[1;31mAttributeError\u001b[0m: 'float' object has no attribute 'split'"
313
+ ]
314
+ }
315
+ ],
316
+ "source": [
317
+ "from gensim import corpora\n",
318
+ "from gensim.models import LdaMulticore\n",
319
+ "import pandas as pd\n",
320
+ "\n",
321
+ "# CSV dosyasını okuma\n",
322
+ "df = pd.read_csv('cleaned_data3.csv')\n",
323
+ "\n",
324
+ "# Verinin bir alt kümesini seçme\n",
325
+ "df_sample = df.sample(n=10000, random_state=100)\n",
326
+ "\n",
327
+ "# Kelimeleri token'lara ayırma\n",
328
+ "tokenized_text = [text.split() for text in df_sample['kısaltılmıs_metin']]\n",
329
+ "\n",
330
+ "# Dictionary ve Corpus oluşturma\n",
331
+ "id2word = corpora.Dictionary(tokenized_text)\n",
332
+ "corpus = [id2word.doc2bow(text) for text in tokenized_text]\n",
333
+ "\n",
334
+ "# LDA Modelini Eğitme\n",
335
+ "lda_model = LdaMulticore(\n",
336
+ " corpus=corpus,\n",
337
+ " id2word=id2word,\n",
338
+ " num_topics=5,\n",
339
+ " random_state=100,\n",
340
+ " chunksize=50,\n",
341
+ " passes=5,\n",
342
+ " alpha='symmetric',\n",
343
+ " eta='auto',\n",
344
+ " per_word_topics=True,\n",
345
+ " workers=4 # Paralel iş parçacıkları kullanarak performansı artırır\n",
346
+ ")\n",
347
+ "\n",
348
+ "# Sonuçları görüntüleme\n",
349
+ "for idx, topic in lda_model.print_topics(-1):\n",
350
+ " print(f\"Topic: {idx}\\nWords: {topic}\\n\")\n",
351
+ "\n",
352
+ "# Alt kümesini kaydetme\n",
353
+ "df_sample.to_csv('cleaned_processed_data_sample.csv', index=False)\n"
354
+ ]
355
+ },
356
+ {
357
+ "cell_type": "code",
358
+ "execution_count": null,
359
+ "metadata": {},
360
+ "outputs": [],
361
+ "source": []
362
+ }
363
+ ],
364
+ "metadata": {
365
+ "kernelspec": {
366
+ "display_name": ".venv",
367
+ "language": "python",
368
+ "name": "python3"
369
+ },
370
+ "language_info": {
371
+ "codemirror_mode": {
372
+ "name": "ipython",
373
+ "version": 3
374
+ },
375
+ "file_extension": ".py",
376
+ "mimetype": "text/x-python",
377
+ "name": "python",
378
+ "nbconvert_exporter": "python",
379
+ "pygments_lexer": "ipython3",
380
+ "version": "3.10.11"
381
+ }
382
+ },
383
+ "nbformat": 4,
384
+ "nbformat_minor": 2
385
+ }