├── README.md
└── TextProcessingPart1.ipynb
/README.md:
--------------------------------------------------------------------------------
1 | #TextProcessing, NLP, BOW, TFxIDF, LDA, Word2Vec, CBOW, Skipgram
2 |
3 |
--------------------------------------------------------------------------------
/TextProcessingPart1.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "TextProcessingPart1.ipynb",
7 | "version": "0.3.2",
8 | "provenance": [],
9 | "collapsed_sections": []
10 | },
11 | "kernelspec": {
12 | "name": "python3",
13 | "display_name": "Python 3"
14 | }
15 | },
16 | "cells": [
17 | {
18 | "cell_type": "markdown",
19 | "metadata": {
20 | "id": "view-in-github",
21 | "colab_type": "text"
22 | },
23 | "source": [
24 | "[View in Colaboratory](https://colab.research.google.com/github/denopas/TextProcessing/blob/master/TextProcessingPart1.ipynb)"
25 | ]
26 | },
27 | {
28 | "metadata": {
29 | "id": "AnrOP7iHAPbI",
30 | "colab_type": "code",
31 | "colab": {
32 | "base_uri": "https://localhost:8080/",
33 | "height": 68
34 | },
35 | "outputId": "91a21d93-ec0a-4853-9b15-9e87660326fe"
36 | },
37 | "cell_type": "code",
38 | "source": [
39 | "import re\n",
40 | "import nltk\n",
41 | "import pandas as pd\n",
42 | "import numpy as np\n",
43 | "import matplotlib.pyplot as plt\n",
44 | "pd.options.display.max_colwidth = 8000\n",
45 | "nltk.download('stopwords')\n"
46 | ],
47 | "execution_count": 2,
48 | "outputs": [
49 | {
50 | "output_type": "stream",
51 | "text": [
52 | "[nltk_data] Downloading package stopwords to /content/nltk_data...\n",
53 | "[nltk_data] Unzipping corpora/stopwords.zip.\n"
54 | ],
55 | "name": "stdout"
56 | },
57 | {
58 | "output_type": "execute_result",
59 | "data": {
60 | "text/plain": [
61 | "True"
62 | ]
63 | },
64 | "metadata": {
65 | "tags": []
66 | },
67 | "execution_count": 2
68 | }
69 | ]
70 | },
71 | {
72 | "metadata": {
73 | "id": "C_5iVzJ5Ahhi",
74 | "colab_type": "code",
75 | "colab": {
76 | "base_uri": "https://localhost:8080/",
77 | "height": 297
78 | },
79 | "outputId": "a7a23923-a3b6-4ef7-e13d-cc58e5da63b9"
80 | },
81 | "cell_type": "code",
82 | "source": [
83 | "# TR: Örnek Türkçe dokümanlar \n",
84 | "# EN: Sample documents in Turkish\n",
85 | "docs = ['Açıklama projenin ortaklarından Rus enerji devi Gazprom dan geldi. Yıllık 63 milyar metreküp enerji',\n",
86 | " 'ilk günündeki 20 yarış heyecanlıydı, 109 puan toplayan Türkiye, 12 ülke arasında 9. oldu ve yarış tamamlandı',\n",
87 | " 'Cortananın yeni işletim sistemi Windows 10 un önemli bir parçası olduğunu belirten Microsoft ; Google Android ve iOS cihazlarındaki Dijital',\n",
88 | " 'Teknoloji devi Google, Android in MMM sürümüyle birlikte bir çok sistemsel hatasının düzeltileceğini',\n",
89 | " 'Siroz hastalığı ile ilgili detaylara dikkat çekerek, sağlıklı bir karaciğere sahip olmak hastalık için',\n",
90 | " 'Hastalık çoğu kez yıllarca doğru tanı konmaması veya ciddiye alınmaması sebebi ile kısırlaştırıcı etki yapabiliyor, kronik ağrı,',\n",
91 | " 'ilk 4 etaptan galibiyetle ayrılan 18 yaşındaki Razgatlıoğlu, Almanya daki yarışta 3. sırayı alarak ',\n",
92 | " 'Helal gıda pazarı sanki 860 milyar doların üzerinde' \n",
93 | "]\n",
94 | "# TR: Dokümanlara ait sınıflar \n",
95 | "# EN: Classes of documents\n",
96 | "classes = ['ekonomi', 'spor', 'teknoloji', 'teknoloji', 'saglik', 'saglik', 'spor', 'ekonomi']\n",
97 | "docs = np.array(docs)\n",
98 | "df_docs = pd.DataFrame({'Document': docs, \n",
99 | " 'Class': classes})\n",
100 | "df_docs = df_docs[['Document', 'Class']]\n",
101 | "df_docs"
102 | ],
103 | "execution_count": 3,
104 | "outputs": [
105 | {
106 | "output_type": "execute_result",
107 | "data": {
108 | "text/html": [
109 | "
\n",
110 | "\n",
123 | "
\n",
124 | " \n",
125 | " \n",
126 | " | \n",
127 | " Document | \n",
128 | " Class | \n",
129 | "
\n",
130 | " \n",
131 | " \n",
132 | " \n",
133 | " 0 | \n",
134 | " Açıklama projenin ortaklarından Rus enerji devi Gazprom dan geldi. Yıllık 63 milyar metreküp enerji | \n",
135 | " ekonomi | \n",
136 | "
\n",
137 | " \n",
138 | " 1 | \n",
139 | " ilk günündeki 20 yarış heyecanlıydı, 109 puan toplayan Türkiye, 12 ülke arasında 9. oldu ve yarış tamamlandı | \n",
140 | " spor | \n",
141 | "
\n",
142 | " \n",
143 | " 2 | \n",
144 | " Cortananın yeni işletim sistemi Windows 10 un önemli bir parçası olduğunu belirten Microsoft ; Google Android ve iOS cihazlarındaki Dijital | \n",
145 | " teknoloji | \n",
146 | "
\n",
147 | " \n",
148 | " 3 | \n",
149 | " Teknoloji devi Google, Android in MMM sürümüyle birlikte bir çok sistemsel hatasının düzeltileceğini | \n",
150 | " teknoloji | \n",
151 | "
\n",
152 | " \n",
153 | " 4 | \n",
154 | " Siroz hastalığı ile ilgili detaylara dikkat çekerek, sağlıklı bir karaciğere sahip olmak hastalık için | \n",
155 | " saglik | \n",
156 | "
\n",
157 | " \n",
158 | " 5 | \n",
159 | " Hastalık çoğu kez yıllarca doğru tanı konmaması veya ciddiye alınmaması sebebi ile kısırlaştırıcı etki yapabiliyor, kronik ağrı, | \n",
160 | " saglik | \n",
161 | "
\n",
162 | " \n",
163 | " 6 | \n",
164 | " ilk 4 etaptan galibiyetle ayrılan 18 yaşındaki Razgatlıoğlu, Almanya daki yarışta 3. sırayı alarak | \n",
165 | " spor | \n",
166 | "
\n",
167 | " \n",
168 | " 7 | \n",
169 | " Helal gıda pazarı sanki 860 milyar doların üzerinde | \n",
170 | " ekonomi | \n",
171 | "
\n",
172 | " \n",
173 | "
\n",
174 | "
"
175 | ],
176 | "text/plain": [
177 | " Document \\\n",
178 | "0 Açıklama projenin ortaklarından Rus enerji devi Gazprom dan geldi. Yıllık 63 milyar metreküp enerji \n",
179 | "1 ilk günündeki 20 yarış heyecanlıydı, 109 puan toplayan Türkiye, 12 ülke arasında 9. oldu ve yarış tamamlandı \n",
180 | "2 Cortananın yeni işletim sistemi Windows 10 un önemli bir parçası olduğunu belirten Microsoft ; Google Android ve iOS cihazlarındaki Dijital \n",
181 | "3 Teknoloji devi Google, Android in MMM sürümüyle birlikte bir çok sistemsel hatasının düzeltileceğini \n",
182 | "4 Siroz hastalığı ile ilgili detaylara dikkat çekerek, sağlıklı bir karaciğere sahip olmak hastalık için \n",
183 | "5 Hastalık çoğu kez yıllarca doğru tanı konmaması veya ciddiye alınmaması sebebi ile kısırlaştırıcı etki yapabiliyor, kronik ağrı, \n",
184 | "6 ilk 4 etaptan galibiyetle ayrılan 18 yaşındaki Razgatlıoğlu, Almanya daki yarışta 3. sırayı alarak \n",
185 | "7 Helal gıda pazarı sanki 860 milyar doların üzerinde \n",
186 | "\n",
187 | " Class \n",
188 | "0 ekonomi \n",
189 | "1 spor \n",
190 | "2 teknoloji \n",
191 | "3 teknoloji \n",
192 | "4 saglik \n",
193 | "5 saglik \n",
194 | "6 spor \n",
195 | "7 ekonomi "
196 | ]
197 | },
198 | "metadata": {
199 | "tags": []
200 | },
201 | "execution_count": 3
202 | }
203 | ]
204 | },
205 | {
206 | "metadata": {
207 | "id": "eJ4y8IIuA_kw",
208 | "colab_type": "code",
209 | "colab": {
210 | "base_uri": "https://localhost:8080/",
211 | "height": 153
212 | },
213 | "outputId": "ba9d4647-a97a-4896-a96b-c25a284d3932"
214 | },
215 | "cell_type": "code",
216 | "source": [
217 | "#@title Default title text\n",
218 | "WPT = nltk.WordPunctTokenizer()\n",
219 | "stop_word_list = nltk.corpus.stopwords.words('turkish')\n",
220 | "\n",
221 | "def norm_doc(single_doc):\n",
222 | " # TR: Dokümandan belirlenen özel karakterleri ve sayıları at\n",
223 | " # EN: Remove special characters and numbers\n",
224 | " single_doc = re.sub(\" \\d+\", \" \", single_doc)\n",
225 | " pattern = r\"[{}]\".format(\",.;\") \n",
226 | " single_doc = re.sub(pattern, \"\", single_doc) \n",
227 | " # TR: Dokümanı küçük harflere çevir\n",
228 | " # EN: Convert document to lowercase\n",
229 | " single_doc = single_doc.lower()\n",
230 | " single_doc = single_doc.strip()\n",
231 | " # TR: Dokümanı token'larına ayır\n",
232 | " # EN: Tokenize documents\n",
233 | " tokens = WPT.tokenize(single_doc)\n",
234 | " # TR: Stop-word listesindeki kelimeler hariç al\n",
235 | " # EN: Filter out the stop-words \n",
236 | " filtered_tokens = [token for token in tokens if token not in stop_word_list]\n",
237 | " # TR: Dokümanı tekrar oluştur\n",
238 | " # EN: Reconstruct the document\n",
239 | " single_doc = ' '.join(filtered_tokens)\n",
240 | " return single_doc\n",
241 | "\n",
242 | "norm_docs = np.vectorize(norm_doc) #like magic :)\n",
243 | "normalized_documents = norm_docs(docs)\n",
244 | "print(normalized_documents)\n",
245 | "\n",
246 | "\n"
247 | ],
248 | "execution_count": 4,
249 | "outputs": [
250 | {
251 | "output_type": "stream",
252 | "text": [
253 | "['açıklama projenin ortaklarından rus enerji devi gazprom dan geldi yıllık milyar metreküp enerji'\n",
254 | " 'ilk günündeki yarış heyecanlıydı puan toplayan türkiye ülke arasında oldu yarış tamamlandı'\n",
255 | " 'cortananın yeni işletim sistemi windows un önemli bir parçası olduğunu belirten microsoft google android ios cihazlarındaki dijital'\n",
256 | " 'teknoloji devi google android in mmm sürümüyle birlikte bir sistemsel hatasının düzeltileceğini'\n",
257 | " 'siroz hastalığı ilgili detaylara dikkat çekerek sağlıklı bir karaciğere sahip olmak hastalık'\n",
258 | " 'hastalık çoğu yıllarca doğru tanı konmaması ciddiye alınmaması sebebi kısırlaştırıcı etki yapabiliyor kronik ağrı'\n",
259 | " 'ilk etaptan galibiyetle ayrılan yaşındaki razgatlıoğlu almanya daki yarışta sırayı alarak'\n",
260 | " 'helal gıda pazarı milyar doların üzerinde']\n"
261 | ],
262 | "name": "stdout"
263 | }
264 | ]
265 | },
266 | {
267 | "metadata": {
268 | "id": "pbbYWJ-uJ0ds",
269 | "colab_type": "code",
270 | "colab": {
271 | "base_uri": "https://localhost:8080/",
272 | "height": 788
273 | },
274 | "outputId": "c1992e20-f773-4597-a088-8cb0740a149b"
275 | },
276 | "cell_type": "code",
277 | "source": [
278 | "#@title Default title text\n",
279 | "# TR: 1.Terim Sayma Adımları\n",
280 | "# EN: 1.Term Counting Steps\n",
281 | "from sklearn.feature_extraction.text import CountVectorizer\n",
282 | "BoW_Vector = CountVectorizer(min_df = 0., max_df = 1.)\n",
283 | "BoW_Matrix = BoW_Vector.fit_transform(normalized_documents)\n",
284 | "#print (BoW_Matrix)\n",
285 | "\n",
286 | "# TR: BoW_Vector içerisindeki tüm öznitelikleri al\n",
287 | "# EN: Fetch al features in BoW_Vector\n",
288 | "features = BoW_Vector.get_feature_names()\n",
289 | "print (\"features[50]:\" + features[46])\n",
290 | "print (\"features[52]:\" +features[48])\n",
291 | "\n",
292 | "BoW_Matrix = BoW_Matrix.toarray()\n",
293 | "print(BoW_Matrix)\n",
294 | "# TR: Doküman - öznitelik matrisini göster\n",
295 | "# EN: Print document by term matrice\n",
296 | "BoW_df = pd.DataFrame(BoW_Matrix, columns = features)\n",
297 | "BoW_df\n",
298 | "#print(BoW_df.info())"
299 | ],
300 | "execution_count": 5,
301 | "outputs": [
302 | {
303 | "output_type": "stream",
304 | "text": [
305 | "features[50]:metreküp\n",
306 | "features[52]:milyar\n",
307 | "[[0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 2 0 0 0 1 1 0 0 0 0 0 0 0\n",
308 | " 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0\n",
309 | " 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0]\n",
310 | " [0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0\n",
311 | " 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1\n",
312 | " 1 0 0 0 2 0 0 0 0 0 0 0 0 1 0]\n",
313 | " [0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0\n",
314 | " 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0\n",
315 | " 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0]\n",
316 | " [0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0\n",
317 | " 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0\n",
318 | " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
319 | " [0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0\n",
320 | " 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0\n",
321 | " 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0]\n",
322 | " [0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0\n",
323 | " 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0\n",
324 | " 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0]\n",
325 | " [1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0\n",
326 | " 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0\n",
327 | " 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0]\n",
328 | " [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1\n",
329 | " 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n",
330 | " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]]\n"
331 | ],
332 | "name": "stdout"
333 | },
334 | {
335 | "output_type": "execute_result",
336 | "data": {
337 | "text/html": [
338 | "\n",
339 | "\n",
352 | "
\n",
353 | " \n",
354 | " \n",
355 | " | \n",
356 | " alarak | \n",
357 | " almanya | \n",
358 | " alınmaması | \n",
359 | " android | \n",
360 | " arasında | \n",
361 | " ayrılan | \n",
362 | " açıklama | \n",
363 | " ağrı | \n",
364 | " belirten | \n",
365 | " bir | \n",
366 | " ... | \n",
367 | " yarışta | \n",
368 | " yaşındaki | \n",
369 | " yeni | \n",
370 | " yıllarca | \n",
371 | " yıllık | \n",
372 | " çekerek | \n",
373 | " çoğu | \n",
374 | " önemli | \n",
375 | " ülke | \n",
376 | " üzerinde | \n",
377 | "
\n",
378 | " \n",
379 | " \n",
380 | " \n",
381 | " 0 | \n",
382 | " 0 | \n",
383 | " 0 | \n",
384 | " 0 | \n",
385 | " 0 | \n",
386 | " 0 | \n",
387 | " 0 | \n",
388 | " 1 | \n",
389 | " 0 | \n",
390 | " 0 | \n",
391 | " 0 | \n",
392 | " ... | \n",
393 | " 0 | \n",
394 | " 0 | \n",
395 | " 0 | \n",
396 | " 0 | \n",
397 | " 1 | \n",
398 | " 0 | \n",
399 | " 0 | \n",
400 | " 0 | \n",
401 | " 0 | \n",
402 | " 0 | \n",
403 | "
\n",
404 | " \n",
405 | " 1 | \n",
406 | " 0 | \n",
407 | " 0 | \n",
408 | " 0 | \n",
409 | " 0 | \n",
410 | " 1 | \n",
411 | " 0 | \n",
412 | " 0 | \n",
413 | " 0 | \n",
414 | " 0 | \n",
415 | " 0 | \n",
416 | " ... | \n",
417 | " 0 | \n",
418 | " 0 | \n",
419 | " 0 | \n",
420 | " 0 | \n",
421 | " 0 | \n",
422 | " 0 | \n",
423 | " 0 | \n",
424 | " 0 | \n",
425 | " 1 | \n",
426 | " 0 | \n",
427 | "
\n",
428 | " \n",
429 | " 2 | \n",
430 | " 0 | \n",
431 | " 0 | \n",
432 | " 0 | \n",
433 | " 1 | \n",
434 | " 0 | \n",
435 | " 0 | \n",
436 | " 0 | \n",
437 | " 0 | \n",
438 | " 1 | \n",
439 | " 1 | \n",
440 | " ... | \n",
441 | " 0 | \n",
442 | " 0 | \n",
443 | " 1 | \n",
444 | " 0 | \n",
445 | " 0 | \n",
446 | " 0 | \n",
447 | " 0 | \n",
448 | " 1 | \n",
449 | " 0 | \n",
450 | " 0 | \n",
451 | "
\n",
452 | " \n",
453 | " 3 | \n",
454 | " 0 | \n",
455 | " 0 | \n",
456 | " 0 | \n",
457 | " 1 | \n",
458 | " 0 | \n",
459 | " 0 | \n",
460 | " 0 | \n",
461 | " 0 | \n",
462 | " 0 | \n",
463 | " 1 | \n",
464 | " ... | \n",
465 | " 0 | \n",
466 | " 0 | \n",
467 | " 0 | \n",
468 | " 0 | \n",
469 | " 0 | \n",
470 | " 0 | \n",
471 | " 0 | \n",
472 | " 0 | \n",
473 | " 0 | \n",
474 | " 0 | \n",
475 | "
\n",
476 | " \n",
477 | " 4 | \n",
478 | " 0 | \n",
479 | " 0 | \n",
480 | " 0 | \n",
481 | " 0 | \n",
482 | " 0 | \n",
483 | " 0 | \n",
484 | " 0 | \n",
485 | " 0 | \n",
486 | " 0 | \n",
487 | " 1 | \n",
488 | " ... | \n",
489 | " 0 | \n",
490 | " 0 | \n",
491 | " 0 | \n",
492 | " 0 | \n",
493 | " 0 | \n",
494 | " 1 | \n",
495 | " 0 | \n",
496 | " 0 | \n",
497 | " 0 | \n",
498 | " 0 | \n",
499 | "
\n",
500 | " \n",
501 | " 5 | \n",
502 | " 0 | \n",
503 | " 0 | \n",
504 | " 1 | \n",
505 | " 0 | \n",
506 | " 0 | \n",
507 | " 0 | \n",
508 | " 0 | \n",
509 | " 1 | \n",
510 | " 0 | \n",
511 | " 0 | \n",
512 | " ... | \n",
513 | " 0 | \n",
514 | " 0 | \n",
515 | " 0 | \n",
516 | " 1 | \n",
517 | " 0 | \n",
518 | " 0 | \n",
519 | " 1 | \n",
520 | " 0 | \n",
521 | " 0 | \n",
522 | " 0 | \n",
523 | "
\n",
524 | " \n",
525 | " 6 | \n",
526 | " 1 | \n",
527 | " 1 | \n",
528 | " 0 | \n",
529 | " 0 | \n",
530 | " 0 | \n",
531 | " 1 | \n",
532 | " 0 | \n",
533 | " 0 | \n",
534 | " 0 | \n",
535 | " 0 | \n",
536 | " ... | \n",
537 | " 1 | \n",
538 | " 1 | \n",
539 | " 0 | \n",
540 | " 0 | \n",
541 | " 0 | \n",
542 | " 0 | \n",
543 | " 0 | \n",
544 | " 0 | \n",
545 | " 0 | \n",
546 | " 0 | \n",
547 | "
\n",
548 | " \n",
549 | " 7 | \n",
550 | " 0 | \n",
551 | " 0 | \n",
552 | " 0 | \n",
553 | " 0 | \n",
554 | " 0 | \n",
555 | " 0 | \n",
556 | " 0 | \n",
557 | " 0 | \n",
558 | " 0 | \n",
559 | " 0 | \n",
560 | " ... | \n",
561 | " 0 | \n",
562 | " 0 | \n",
563 | " 0 | \n",
564 | " 0 | \n",
565 | " 0 | \n",
566 | " 0 | \n",
567 | " 0 | \n",
568 | " 0 | \n",
569 | " 0 | \n",
570 | " 1 | \n",
571 | "
\n",
572 | " \n",
573 | "
\n",
574 | "
8 rows × 87 columns
\n",
575 | "
"
576 | ],
577 | "text/plain": [
578 | " alarak almanya alınmaması android arasında ayrılan açıklama ağrı \\\n",
579 | "0 0 0 0 0 0 0 1 0 \n",
580 | "1 0 0 0 0 1 0 0 0 \n",
581 | "2 0 0 0 1 0 0 0 0 \n",
582 | "3 0 0 0 1 0 0 0 0 \n",
583 | "4 0 0 0 0 0 0 0 0 \n",
584 | "5 0 0 1 0 0 0 0 1 \n",
585 | "6 1 1 0 0 0 1 0 0 \n",
586 | "7 0 0 0 0 0 0 0 0 \n",
587 | "\n",
588 | " belirten bir ... yarışta yaşındaki yeni yıllarca yıllık \\\n",
589 | "0 0 0 ... 0 0 0 0 1 \n",
590 | "1 0 0 ... 0 0 0 0 0 \n",
591 | "2 1 1 ... 0 0 1 0 0 \n",
592 | "3 0 1 ... 0 0 0 0 0 \n",
593 | "4 0 1 ... 0 0 0 0 0 \n",
594 | "5 0 0 ... 0 0 0 1 0 \n",
595 | "6 0 0 ... 1 1 0 0 0 \n",
596 | "7 0 0 ... 0 0 0 0 0 \n",
597 | "\n",
598 | " çekerek çoğu önemli ülke üzerinde \n",
599 | "0 0 0 0 0 0 \n",
600 | "1 0 0 0 1 0 \n",
601 | "2 0 0 1 0 0 \n",
602 | "3 0 0 0 0 0 \n",
603 | "4 1 0 0 0 0 \n",
604 | "5 0 1 0 0 0 \n",
605 | "6 0 0 0 0 0 \n",
606 | "7 0 0 0 0 1 \n",
607 | "\n",
608 | "[8 rows x 87 columns]"
609 | ]
610 | },
611 | "metadata": {
612 | "tags": []
613 | },
614 | "execution_count": 5
615 | }
616 | ]
617 | },
618 | {
619 | "metadata": {
620 | "id": "SJJgDizsKBGn",
621 | "colab_type": "code",
622 | "colab": {
623 | "base_uri": "https://localhost:8080/",
624 | "height": 1434
625 | },
626 | "outputId": "8630a196-aa81-486b-e46b-490c216d6cf3"
627 | },
628 | "cell_type": "code",
629 | "source": [
630 | "# TR: 2.TFxIdf Hesaplama Adımları\n",
631 | "# EN: 2.TFxIdf Calculation Steps\n",
632 | "from sklearn.feature_extraction.text import TfidfVectorizer\n",
633 | "Tfidf_Vector = TfidfVectorizer(min_df = 0., max_df = 1., use_idf = True)\n",
634 | "Tfidf_Matrix = Tfidf_Vector.fit_transform(normalized_documents)\n",
635 | "Tfidf_Matrix = Tfidf_Matrix.toarray()\n",
636 | "print(np.round(Tfidf_Matrix, 3))\n",
637 | "# TR: Tfidf_Vector içerisindeki tüm öznitelikleri al\n",
638 | "# EN: Fetch al features in Tfidf_Vector\n",
639 | "features = Tfidf_Vector.get_feature_names()\n",
640 | "# TR: Doküman - öznitelik matrisini göster\n",
641 | "# EN: Print document by term matrice\n",
642 | "Tfidf_df = pd.DataFrame(np.round(Tfidf_Matrix, 3), columns = features)\n",
643 | "Tfidf_df"
644 | ],
645 | "execution_count": 6,
646 | "outputs": [
647 | {
648 | "output_type": "stream",
649 | "text": [
650 | "[[0. 0. 0. 0. 0. 0. 0.263 0. 0. 0. 0. 0.\n",
651 | " 0. 0. 0. 0.263 0. 0.221 0. 0. 0. 0. 0. 0.527\n",
652 | " 0. 0. 0. 0.263 0.263 0. 0. 0. 0. 0. 0. 0.\n",
653 | " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.263 0.\n",
654 | " 0.221 0. 0. 0. 0. 0.263 0. 0. 0.263 0. 0. 0.263\n",
655 | " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
656 | " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.263 0. 0.\n",
657 | " 0. 0. 0. ]\n",
658 | " [0. 0. 0. 0. 0.27 0. 0. 0. 0. 0. 0. 0.\n",
659 | " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
660 | " 0. 0. 0. 0. 0. 0. 0.27 0. 0. 0. 0. 0.\n",
661 | " 0.27 0. 0.226 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
662 | " 0. 0. 0.27 0. 0. 0. 0. 0. 0. 0.27 0. 0.\n",
663 | " 0. 0. 0. 0. 0. 0. 0. 0. 0.27 0. 0. 0.27\n",
664 | " 0.27 0. 0. 0. 0.54 0. 0. 0. 0. 0. 0. 0.\n",
665 | " 0. 0.27 0. ]\n",
666 | " [0. 0. 0. 0.21 0. 0. 0. 0. 0.251 0.181 0. 0.\n",
667 | " 0.251 0.251 0. 0. 0. 0. 0.251 0. 0. 0. 0. 0.\n",
668 | " 0. 0. 0. 0. 0. 0.21 0. 0. 0. 0. 0. 0.\n",
669 | " 0. 0. 0. 0. 0.251 0.251 0. 0. 0. 0. 0. 0.251\n",
670 | " 0. 0. 0. 0.251 0. 0. 0.251 0. 0. 0. 0. 0.\n",
671 | " 0. 0. 0. 0. 0.251 0. 0. 0. 0. 0. 0. 0.\n",
672 | " 0. 0.251 0.251 0. 0. 0. 0. 0.251 0. 0. 0. 0.\n",
673 | " 0.251 0. 0. ]\n",
674 | " [0. 0. 0. 0.257 0. 0. 0. 0. 0. 0.222 0.307 0.\n",
675 | " 0. 0. 0. 0. 0. 0.257 0. 0. 0. 0. 0.307 0.\n",
676 | " 0. 0. 0. 0. 0. 0.257 0. 0. 0. 0. 0.307 0.\n",
677 | " 0. 0. 0. 0.307 0. 0. 0. 0. 0. 0. 0. 0.\n",
678 | " 0. 0.307 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
679 | " 0. 0. 0. 0. 0. 0.307 0.307 0. 0. 0. 0.307 0.\n",
680 | " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
681 | " 0. 0. 0. ]\n",
682 | " [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.216 0. 0.\n",
683 | " 0. 0. 0. 0. 0.298 0. 0. 0.298 0. 0. 0. 0.\n",
684 | " 0. 0. 0. 0. 0. 0. 0. 0. 0.25 0.298 0. 0.\n",
685 | " 0. 0.298 0. 0. 0. 0. 0.298 0. 0. 0. 0. 0.\n",
686 | " 0. 0. 0. 0. 0.298 0. 0. 0. 0. 0. 0. 0.\n",
687 | " 0.298 0.298 0. 0.298 0. 0. 0. 0. 0. 0. 0. 0.\n",
688 | " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.298 0.\n",
689 | " 0. 0. 0. ]\n",
690 | " [0. 0. 0.27 0. 0. 0. 0. 0.27 0. 0. 0. 0.27\n",
691 | " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.27 0. 0.\n",
692 | " 0. 0.27 0. 0. 0. 0. 0. 0. 0.226 0. 0. 0.\n",
693 | " 0. 0. 0. 0. 0. 0. 0. 0.27 0.27 0.27 0. 0.\n",
694 | " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
695 | " 0. 0. 0.27 0. 0. 0. 0. 0. 0. 0.27 0. 0.\n",
696 | " 0. 0. 0. 0.27 0. 0. 0. 0. 0.27 0. 0. 0.27\n",
697 | " 0. 0. 0. ]\n",
698 | " [0.306 0.306 0. 0. 0. 0.306 0. 0. 0. 0. 0. 0.\n",
699 | " 0. 0. 0.306 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
700 | " 0.306 0. 0.306 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
701 | " 0. 0. 0.256 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
702 | " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.306 0.\n",
703 | " 0. 0. 0. 0. 0. 0. 0. 0.306 0. 0. 0. 0.\n",
704 | " 0. 0. 0. 0. 0. 0.306 0.306 0. 0. 0. 0. 0.\n",
705 | " 0. 0. 0. ]\n",
706 | " [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
707 | " 0. 0. 0. 0. 0. 0. 0. 0. 0.419 0. 0. 0.\n",
708 | " 0. 0. 0. 0. 0. 0. 0. 0.419 0. 0. 0. 0.419\n",
709 | " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
710 | " 0.351 0. 0. 0. 0. 0. 0. 0.419 0. 0. 0. 0.\n",
711 | " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
712 | " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n",
713 | " 0. 0. 0.419]]\n"
714 | ],
715 | "name": "stdout"
716 | },
717 | {
718 | "output_type": "execute_result",
719 | "data": {
720 | "text/html": [
721 | "\n",
722 | "\n",
735 | "
\n",
736 | " \n",
737 | " \n",
738 | " | \n",
739 | " alarak | \n",
740 | " almanya | \n",
741 | " alınmaması | \n",
742 | " android | \n",
743 | " arasında | \n",
744 | " ayrılan | \n",
745 | " açıklama | \n",
746 | " ağrı | \n",
747 | " belirten | \n",
748 | " bir | \n",
749 | " ... | \n",
750 | " yarışta | \n",
751 | " yaşındaki | \n",
752 | " yeni | \n",
753 | " yıllarca | \n",
754 | " yıllık | \n",
755 | " çekerek | \n",
756 | " çoğu | \n",
757 | " önemli | \n",
758 | " ülke | \n",
759 | " üzerinde | \n",
760 | "
\n",
761 | " \n",
762 | " \n",
763 | " \n",
764 | " 0 | \n",
765 | " 0.000 | \n",
766 | " 0.000 | \n",
767 | " 0.00 | \n",
768 | " 0.000 | \n",
769 | " 0.00 | \n",
770 | " 0.000 | \n",
771 | " 0.263 | \n",
772 | " 0.00 | \n",
773 | " 0.000 | \n",
774 | " 0.000 | \n",
775 | " ... | \n",
776 | " 0.000 | \n",
777 | " 0.000 | \n",
778 | " 0.000 | \n",
779 | " 0.00 | \n",
780 | " 0.263 | \n",
781 | " 0.000 | \n",
782 | " 0.00 | \n",
783 | " 0.000 | \n",
784 | " 0.00 | \n",
785 | " 0.000 | \n",
786 | "
\n",
787 | " \n",
788 | " 1 | \n",
789 | " 0.000 | \n",
790 | " 0.000 | \n",
791 | " 0.00 | \n",
792 | " 0.000 | \n",
793 | " 0.27 | \n",
794 | " 0.000 | \n",
795 | " 0.000 | \n",
796 | " 0.00 | \n",
797 | " 0.000 | \n",
798 | " 0.000 | \n",
799 | " ... | \n",
800 | " 0.000 | \n",
801 | " 0.000 | \n",
802 | " 0.000 | \n",
803 | " 0.00 | \n",
804 | " 0.000 | \n",
805 | " 0.000 | \n",
806 | " 0.00 | \n",
807 | " 0.000 | \n",
808 | " 0.27 | \n",
809 | " 0.000 | \n",
810 | "
\n",
811 | " \n",
812 | " 2 | \n",
813 | " 0.000 | \n",
814 | " 0.000 | \n",
815 | " 0.00 | \n",
816 | " 0.210 | \n",
817 | " 0.00 | \n",
818 | " 0.000 | \n",
819 | " 0.000 | \n",
820 | " 0.00 | \n",
821 | " 0.251 | \n",
822 | " 0.181 | \n",
823 | " ... | \n",
824 | " 0.000 | \n",
825 | " 0.000 | \n",
826 | " 0.251 | \n",
827 | " 0.00 | \n",
828 | " 0.000 | \n",
829 | " 0.000 | \n",
830 | " 0.00 | \n",
831 | " 0.251 | \n",
832 | " 0.00 | \n",
833 | " 0.000 | \n",
834 | "
\n",
835 | " \n",
836 | " 3 | \n",
837 | " 0.000 | \n",
838 | " 0.000 | \n",
839 | " 0.00 | \n",
840 | " 0.257 | \n",
841 | " 0.00 | \n",
842 | " 0.000 | \n",
843 | " 0.000 | \n",
844 | " 0.00 | \n",
845 | " 0.000 | \n",
846 | " 0.222 | \n",
847 | " ... | \n",
848 | " 0.000 | \n",
849 | " 0.000 | \n",
850 | " 0.000 | \n",
851 | " 0.00 | \n",
852 | " 0.000 | \n",
853 | " 0.000 | \n",
854 | " 0.00 | \n",
855 | " 0.000 | \n",
856 | " 0.00 | \n",
857 | " 0.000 | \n",
858 | "
\n",
859 | " \n",
860 | " 4 | \n",
861 | " 0.000 | \n",
862 | " 0.000 | \n",
863 | " 0.00 | \n",
864 | " 0.000 | \n",
865 | " 0.00 | \n",
866 | " 0.000 | \n",
867 | " 0.000 | \n",
868 | " 0.00 | \n",
869 | " 0.000 | \n",
870 | " 0.216 | \n",
871 | " ... | \n",
872 | " 0.000 | \n",
873 | " 0.000 | \n",
874 | " 0.000 | \n",
875 | " 0.00 | \n",
876 | " 0.000 | \n",
877 | " 0.298 | \n",
878 | " 0.00 | \n",
879 | " 0.000 | \n",
880 | " 0.00 | \n",
881 | " 0.000 | \n",
882 | "
\n",
883 | " \n",
884 | " 5 | \n",
885 | " 0.000 | \n",
886 | " 0.000 | \n",
887 | " 0.27 | \n",
888 | " 0.000 | \n",
889 | " 0.00 | \n",
890 | " 0.000 | \n",
891 | " 0.000 | \n",
892 | " 0.27 | \n",
893 | " 0.000 | \n",
894 | " 0.000 | \n",
895 | " ... | \n",
896 | " 0.000 | \n",
897 | " 0.000 | \n",
898 | " 0.000 | \n",
899 | " 0.27 | \n",
900 | " 0.000 | \n",
901 | " 0.000 | \n",
902 | " 0.27 | \n",
903 | " 0.000 | \n",
904 | " 0.00 | \n",
905 | " 0.000 | \n",
906 | "
\n",
907 | " \n",
908 | " 6 | \n",
909 | " 0.306 | \n",
910 | " 0.306 | \n",
911 | " 0.00 | \n",
912 | " 0.000 | \n",
913 | " 0.00 | \n",
914 | " 0.306 | \n",
915 | " 0.000 | \n",
916 | " 0.00 | \n",
917 | " 0.000 | \n",
918 | " 0.000 | \n",
919 | " ... | \n",
920 | " 0.306 | \n",
921 | " 0.306 | \n",
922 | " 0.000 | \n",
923 | " 0.00 | \n",
924 | " 0.000 | \n",
925 | " 0.000 | \n",
926 | " 0.00 | \n",
927 | " 0.000 | \n",
928 | " 0.00 | \n",
929 | " 0.000 | \n",
930 | "
\n",
931 | " \n",
932 | " 7 | \n",
933 | " 0.000 | \n",
934 | " 0.000 | \n",
935 | " 0.00 | \n",
936 | " 0.000 | \n",
937 | " 0.00 | \n",
938 | " 0.000 | \n",
939 | " 0.000 | \n",
940 | " 0.00 | \n",
941 | " 0.000 | \n",
942 | " 0.000 | \n",
943 | " ... | \n",
944 | " 0.000 | \n",
945 | " 0.000 | \n",
946 | " 0.000 | \n",
947 | " 0.00 | \n",
948 | " 0.000 | \n",
949 | " 0.000 | \n",
950 | " 0.00 | \n",
951 | " 0.000 | \n",
952 | " 0.00 | \n",
953 | " 0.419 | \n",
954 | "
\n",
955 | " \n",
956 | "
\n",
957 | "
8 rows × 87 columns
\n",
958 | "
"
959 | ],
960 | "text/plain": [
961 | " alarak almanya alınmaması android arasında ayrılan açıklama ağrı \\\n",
962 | "0 0.000 0.000 0.00 0.000 0.00 0.000 0.263 0.00 \n",
963 | "1 0.000 0.000 0.00 0.000 0.27 0.000 0.000 0.00 \n",
964 | "2 0.000 0.000 0.00 0.210 0.00 0.000 0.000 0.00 \n",
965 | "3 0.000 0.000 0.00 0.257 0.00 0.000 0.000 0.00 \n",
966 | "4 0.000 0.000 0.00 0.000 0.00 0.000 0.000 0.00 \n",
967 | "5 0.000 0.000 0.27 0.000 0.00 0.000 0.000 0.27 \n",
968 | "6 0.306 0.306 0.00 0.000 0.00 0.306 0.000 0.00 \n",
969 | "7 0.000 0.000 0.00 0.000 0.00 0.000 0.000 0.00 \n",
970 | "\n",
971 | " belirten bir ... yarışta yaşındaki yeni yıllarca yıllık \\\n",
972 | "0 0.000 0.000 ... 0.000 0.000 0.000 0.00 0.263 \n",
973 | "1 0.000 0.000 ... 0.000 0.000 0.000 0.00 0.000 \n",
974 | "2 0.251 0.181 ... 0.000 0.000 0.251 0.00 0.000 \n",
975 | "3 0.000 0.222 ... 0.000 0.000 0.000 0.00 0.000 \n",
976 | "4 0.000 0.216 ... 0.000 0.000 0.000 0.00 0.000 \n",
977 | "5 0.000 0.000 ... 0.000 0.000 0.000 0.27 0.000 \n",
978 | "6 0.000 0.000 ... 0.306 0.306 0.000 0.00 0.000 \n",
979 | "7 0.000 0.000 ... 0.000 0.000 0.000 0.00 0.000 \n",
980 | "\n",
981 | " çekerek çoğu önemli ülke üzerinde \n",
982 | "0 0.000 0.00 0.000 0.00 0.000 \n",
983 | "1 0.000 0.00 0.000 0.27 0.000 \n",
984 | "2 0.000 0.00 0.251 0.00 0.000 \n",
985 | "3 0.000 0.00 0.000 0.00 0.000 \n",
986 | "4 0.298 0.00 0.000 0.00 0.000 \n",
987 | "5 0.000 0.27 0.000 0.00 0.000 \n",
988 | "6 0.000 0.00 0.000 0.00 0.000 \n",
989 | "7 0.000 0.00 0.000 0.00 0.419 \n",
990 | "\n",
991 | "[8 rows x 87 columns]"
992 | ]
993 | },
994 | "metadata": {
995 | "tags": []
996 | },
997 | "execution_count": 6
998 | }
999 | ]
1000 | },
1001 | {
1002 | "metadata": {
1003 | "id": "P28E1GOJDp8Z",
1004 | "colab_type": "code",
1005 | "colab": {
1006 | "base_uri": "https://localhost:8080/",
1007 | "height": 153
1008 | },
1009 | "outputId": "1a53a479-1683-4b6c-fae8-e5a5741d9e1e"
1010 | },
1011 | "cell_type": "code",
1012 | "source": [
1013 | "#LDA: Topic Modeling\n",
1014 | "from sklearn.decomposition import LatentDirichletAllocation\n",
1015 | "number_of_topics = 4\n",
1016 | "BoW_Matrix = BoW_Vector.fit_transform(normalized_documents)\n",
1017 | "LDA = LatentDirichletAllocation(n_components = number_of_topics, \n",
1018 | " max_iter = 10, \n",
1019 | " learning_offset = 50.,\n",
1020 | " random_state = 0,\n",
1021 | " learning_method = 'online').fit(BoW_Matrix)\n",
1022 | "features = BoW_Vector.get_feature_names()\n",
1023 | "for t_id, topic in enumerate(LDA.components_):\n",
1024 | " print (\"Topic %d:\" % (t_id))\n",
1025 | " print (\" \".join([features[i]\n",
1026 | " for i in topic.argsort()[:-number_of_topics - 1:-1]]))"
1027 | ],
1028 | "execution_count": 19,
1029 | "outputs": [
1030 | {
1031 | "output_type": "stream",
1032 | "text": [
1033 | "Topic 0:\n",
1034 | "daki alınmaması alarak çoğu\n",
1035 | "Topic 1:\n",
1036 | "enerji yarış yeni türkiye\n",
1037 | "Topic 2:\n",
1038 | "olmak sağlıklı detaylara siroz\n",
1039 | "Topic 3:\n",
1040 | "üzerinde gıda helal pazarı\n"
1041 | ],
1042 | "name": "stdout"
1043 | }
1044 | ]
1045 | }
1046 | ]
1047 | }
--------------------------------------------------------------------------------