wykonos commited on
Commit
2c7c41d
1 Parent(s): 6f02686

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +186 -0
  2. requirements.txt +0 -0
app.py ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import nltk
3
+ from sklearn.feature_extraction.text import TfidfVectorizer
4
+ from sklearn.metrics import accuracy_score
5
+ from sklearn.model_selection import train_test_split
6
+ from sklearn.svm import LinearSVC
7
+
8
+ # Örnek veri: Cümleleri ve etiketleri (normal: 0, düşük: 1, uzun: 2)
9
+ sentences = [
10
+ "Yazılım geliştirme sürecinde, düzenli kodlama pratikleri önemlidir.",
11
+ "Test odaklı geliştirme, güvenilir yazılım oluşturmak için etkili bir yaklaşımdır.",
12
+ "Yeni proje için gereksinimleri toplamak ve analiz etmek ilk adımdır.",
13
+ "Kod incelemeleri, hataları erken aşamada tespit etmek için kullanışlıdır.",
14
+ "Veritabanı tasarımı, veri bütünlüğü ve performansı optimize etmek için önemlidir.",
15
+ "Agile metodolojiler, proje yönetimini esnek ve verimli hale getirir.",
16
+ "Bir sorunu çözmek için önce onu anlamak önemlidir.",
17
+ "Open-source kütüphaneleri, geliştirme sürecini hızlandırabilir.",
18
+ "Yazılım güvenliği, kullanıcı verilerini korumak için vazgeçilmezdir.",
19
+ "Sürüm kontrol sistemi, ekip üyeleri arasında işbirliğini kolaylaştırır.",
20
+ "Yazılım arayüzleri, kullanıcı deneyimini iyileştirmek için önemlidir.",
21
+ "Bir proje başlamadan önce, detaylı bir proje planı oluşturmak faydalıdır.",
22
+ "Yazılım hatalarını düzeltmek için hata ayıklama teknikleri kullanılır.",
23
+ "Performans iyileştirmeleri, yazılımın tepkime süresini artırabilir.",
24
+ "Geliştiriciler arasında bilgi paylaşımı yapmak, verimliliği artırabilir.",
25
+ "Kod tekrarını önlemek için fonksiyonel programlama teknikleri kullanılabilir.",
26
+ "Geliştirme sürecinde belgeleme yapmak, projenin sürdürülebilirliğini sağlar.",
27
+ "Yazılım mimarisi, sistemin genel yapısını tasarlamak için kullanılır.",
28
+ "Veri yapıları, veri yönetimi ve işlemlerini kolaylaştırır.",
29
+ "Geliştirme ekibiyle düzenli olarak toplantılar yapmak işbirliğini artırır.",
30
+ "Geliştirme aşamasında kullanıcı geribildirimleri almak değerlidir.",
31
+ "Kodun okunabilir olması, bakım sürecini kolaylaştırır.",
32
+ "Yazılımın farklı platformlarda çalışabilirliği önemlidir.",
33
+ "Güvenlik açıklarını önlemek için güvenlik testleri yapılmalıdır.",
34
+ "Ekip üyeleri arasında kod incelemeleri yapmak kaliteyi artırır.",
35
+ "Yazılım güncellemeleri, yeni özellikler eklemek ve hataları düzeltmek için yapılır.",
36
+ "Kodun modüler olması, kodun yeniden kullanılabilirliğini artırır.",
37
+ "Yazılım tasarım desenleri, yaygın sorunları çözmek için kullanılabilir.",
38
+ "Veritabanı yedeklemeleri, veri kaybını önlemek için düzenli olarak yapılmalıdır.",
39
+ "Geliştirme sürecinde zaman yönetimi önemlidir.",
40
+ "Yazılım hatalarını raporlamak ve takip etmek için bir izleme sistemi kullanılabilir.",
41
+ "Kod kalitesini sağlamak için otomatik kod analiz araçları kullanılabilir.",
42
+ "Kullanıcı dostu arayüzler, yazılımın kullanılabilirliğini artırır.",
43
+ "Geliştirme sürecinde prototipler oluşturmak, tasarım kararlarını doğrulamak için faydalıdır.",
44
+ "Yazılımın performansını ölçmek için test senaryoları oluşturulabilir.",
45
+ "Proje süresince düzenli olarak ilerleme raporları vermek, paydaşları bilgilendirmek için önemlidir.",
46
+ "Veri güvenliği, hassas verilerin korunması için öncelikli olmalıdır.",
47
+ "Yazılım belgelemesi, proje sırasında ve sonrasında faydalıdır.",
48
+ "Ekip üyeleri arasında düzenli olarak geri bildirimler almak, performansı artırır.",
49
+ "Yazılımın kullanıcı ihtiyaçlarına uygun olması önemlidir.",
50
+ "Kodun test edilebilir olması, hataların erken tespit edilmesini sağlar.",
51
+ "Büyük projelerde paralel çalışma, verimliliği artırmak için kullanışlıdır.",
52
+ "Yazılımın bakım süreci, yazılımın ömrünü uzatır.",
53
+ "Bu ödevin yapılması oldukça uzun bir zaman aldı.",
54
+ "Kompleks projelerin tamamlanması genellikle zaman alır.",
55
+ "Veri analizi, büyük veri kümeleriyle uzun sürebilir.",
56
+ "Veri analizi için etkili veri görselleştirme araçları kullanılmalıdır.",
57
+ "Yazılım hatalarını bulmak için hata izleme sistemleri kullanışlıdır.",
58
+ "Büyük projelerde proje yönetimi planlama sürecini önemlidir.",
59
+ "Yazılım güncellemeleri, güvenlik açıklarını gidermek için yapılmalıdır.",
60
+ "Kullanıcı deneyimini artırmak için kullanıcı araştırmaları yapılmalıdır.",
61
+ "Yazılım uygulamalarında veri tabanlı kararlar almak için veri analitiği kullanılmalıdır.",
62
+ "Geliştirme ekibi, kodlama standartlarını belirlemek için birlikte çalışmalıdır.",
63
+ "Yazılımın performansını artırmak için kod optimizasyonu yapılmalıdır.",
64
+ "Yeni teknolojileri takip etmek, yazılım geliştirmede rekabet avantajı sağlar.",
65
+ "Yazılım güvenliği için düzenli güvenlik açıkları taramaları yapılmalıdır.",
66
+ "Proje için kullanılacak teknolojilerin risk analizi yapılmalıdır.",
67
+ "Yazılımın kullanıcı dostu olması için kullanılabilirlik testleri yapılmalıdır.",
68
+ "Veri güvenliğini sağlamak için şifreleme teknikleri kullanılmalıdır.",
69
+ "Yazılımın gelecekteki ihtiyaçlara adapte olabilmesi için esnek tasarlanmalıdır.",
70
+ "Kod kalitesini artırmak için sık sık kod incelemeleri yapılmalıdır.",
71
+ "Yazılım süreçlerini iyileştirmek için sürekli iyileştirme yapılmalıdır.",
72
+ "Proje yönetimi sürecinde riskler belirlenmeli ve yönetilmelidir.",
73
+ "Yazılımın verimliliğini artırmak için paralel hesaplama yöntemleri kullanılmalıdır.",
74
+ "Kullanıcı ihtiyaçlarını anlamak için kullanıcı görüşmeleri düzenlenmelidir.",
75
+ "Yazılımın ölçeklenebilir olması, gelecekteki büyüme için önemlidir.",
76
+ "Veri güvenliği için kullanıcı yetkilendirmesi ve kimlik doğrulama kullanılmalıdır.",
77
+ "Yazılım projesinin çıkış sürecini belirlemek, hedeflere ulaşmak için kritik öneme sahiptir.",
78
+ "Kapsamlı bir yazılım test stratejisi oluşturmak, yazılımın güvenilirliğini artırır.",
79
+ "Büyük veri setlerini işlemek için veri paralelleştirmesi yapmak, işlem sürelerini önemli ölçüde azaltır.",
80
+ "Karmaşık yazılım projelerinde, proje ekibi ile sık sık proje ilerlemesini değerlendirmek önemlidir.",
81
+ "Uzun süren geliştirme projelerinde, proje ekibi arasında etkili iletişim ve işbirliği sağlanmalıdır.",
82
+ "Güvenlik açıklarını önlemek için düzenli olarak yazılım penetrasyon testleri yapılmalıdır.",
83
+ "Büyük ölçekli yazılım projelerinde proje planlaması ve kaynak yönetimi kritik öneme sahiptir.",
84
+ "Kullanıcı ihtiyaçlarını anlamak için kullanıcıların gerçek kullanım senaryoları incelenmelidir.",
85
+ "Yazılım tasarımında kullanılacak mimari desenlerinin avantajları ve dezavantajları değerlendirilmelidir.",
86
+ "Yazılım hatalarını tespit etmek için otomasyon araçları kullanılmalı ve test kapsamı genişletilmelidir.",
87
+ "Kodlama standartları önemlidir.",
88
+ "Yazılım güncellemeleri yapılmalıdır.",
89
+ "Veritabanı tasarımı önemlidir.",
90
+ "Test senaryoları oluşturulabilir.",
91
+ "Kullanıcı geribildirimleri değerlidir.",
92
+ "Yazılımın performansı ölçülmeli.",
93
+ "Ekip üyeleriyle toplantılar yapılmalı.",
94
+ "Sürüm kontrol sistemi kullanılmalıdır.",
95
+ "Kod incelemeleri yapılmalıdır.",
96
+ "Veri güvenliği öncelikli olmalıdır.",
97
+ "Yapay zeka, makine öğrenimi ve derin öğrenmenin birleşimidir.",
98
+ "Büyük veri, büyük miktarda verinin toplanması, depolanması ve analiz edilmesidir.",
99
+ "Bulut bilişim, internet üzerinden yazılım, donanım ve depolama hizmetlerinin sağlanmasıdır.",
100
+ "Nesnelerin interneti (IoT), nesnelerin birbiriyle iletişim kurabilmesi ve veri alışverişi yapabilmesidir.",
101
+ "Siber güvenlik, bilgisayar sistemleri ve ağların kötü amaçlı yazılımlardan, saldırılardan ve diğer tehditlerden korunmasıdır.",
102
+ "Yapay zeka, makineler tarafından akıllı davranışın taklit edilmesidir.",
103
+ "Büyük veri, büyük miktarda verinin toplanması, depolanması ve analiz edilmesidir.",
104
+ "Nesnelerin interneti (IoT), nesnelerin birbiriyle iletişim kurabilmesi ve veri alışverişi yapabilmesidir.",
105
+ "Siber güvenlik, bilgisayar sistemleri ve ağların kötü amaçlı yazılımlardan, saldırılardan ve diğer tehditlerden korunmasıdır.",
106
+ "Yapay zeka, makine öğrenimi ve derin öğrenmenin birleşimidir.",
107
+ "Makine öğrenimi, makinelerin deneyimlerden öğrenmesi ve kendi başlarına karar verebilmesidir.",
108
+ "Derin öğrenme, nöral ağların kullanılarak makinelerin karmaşık görevleri öğrenmesidir.",
109
+ "Büyük veri, geleneksel veri işleme yöntemleriyle işlenemeyen büyük miktarda veriden oluşur.",
110
+ "Bulut bilişim, internet üzerinden yazılım, donanım ve depolama hizmetlerinin sağlanmasıdır."
111
+ ]
112
+
113
+ labels = [0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1,
114
+ 1, 0, 1, 0, 2, 2, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1,
115
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 0, 0, 0, 0, 0]
116
+ min_length = min(len(sentences), len(labels))
117
+ sentences = sentences[:min_length]
118
+ labels = labels[:min_length]
119
+
120
+
121
+ def train_classifier(sentences, labels):
122
+ vectorizer = TfidfVectorizer()
123
+ X = vectorizer.fit_transform(sentences)
124
+ X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.2, random_state=45)
125
+ svm_classifier = LinearSVC(dual=False)
126
+ svm_classifier.fit(X_train, y_train)
127
+ predictions = svm_classifier.predict(X_test)
128
+ accuracy = accuracy_score(y_test, predictions)
129
+ return svm_classifier, vectorizer
130
+
131
+
132
+ classifier, vectorizer = train_classifier(sentences, labels)
133
+ weasel_words = ['bazı', 'biraz', 'azımsanamayacak kadar', 'muhtemelen', 'neredeyse', 'birtakım', 'oldukça',
134
+ 'çok sayıda', 'esas olarak', 'çoğunlukla', 'nadir', 'bazen', 'büyük ölçüde', 'hemen hemen her zaman',
135
+ 'yaklaşık olarak', 'birkaç', 'yaklaşık', 'potansiyel', 'muhtemel', 'genellikle', 'sıklıkla', 'belirli',
136
+ 'çoğu zaman', 'çoğu', 'belirgin', 'büyük olasılıkla', 'sık sık', 'bir miktar', 'çok',
137
+ 'bir dereceye kadar', 'pek çok', 'kısmen', 'belki', 'bilinmeyen', 'genelde', 'genel olarak',
138
+ 'hemen hemen', 'şüpheli', 'bazı durumlarda', 'kesin olmamakla birlikte', 'tipik', 'bazıları',
139
+ 'bir kısmı', 'pek', 'iddia edilen', 'tamamen', 'birçok', 'çoğunluk', 'çoğu', 'şüphesiz', 'tam olarak']
140
+
141
+
142
+ def classify_sentence(sentence):
143
+ example_sentences = nltk.sent_tokenize(sentence)
144
+ sentence_predictions = []
145
+
146
+ for sent in example_sentences:
147
+ example_vector = vectorizer.transform([sent])
148
+ prediction = classifier.predict(example_vector)
149
+ sentence_predictions.append(prediction[0])
150
+
151
+ results = []
152
+ for i, sent_pred in enumerate(sentence_predictions):
153
+ weasel_words_found = [word for word in weasel_words if word in example_sentences[i]]
154
+ if sent_pred == 0:
155
+ sentence_info = "Normal bir cümle"
156
+ elif sent_pred == 1:
157
+ sentence_info = "Düşük veya kısa bir cümle"
158
+ else:
159
+ sentence_info = "Uzun bir cümle"
160
+
161
+ if weasel_words_found:
162
+ weasel_word_text = ', '.join(weasel_words_found)
163
+ results.append(f"Sentence {i + 1}: {sentence_info}. Anlam bozucu kelimeler: {weasel_word_text}")
164
+ else:
165
+ results.append(f"Sentence {i + 1}: {sentence_info}")
166
+
167
+ return results
168
+
169
+
170
+ gr_interface = gr.Interface(
171
+ fn=classify_sentence,
172
+ inputs=gr.Textbox(label="Metni girin", lines=6, show_copy_button=True),
173
+ outputs=gr.Textbox(label="Sonuçlar", show_copy_button=True),
174
+ live=True,
175
+ title="Cümle Sınıflandırma Uygulaması",
176
+ description="Bu uygulama, verilen metni cümlelere böler ve her bir cümleyi normal, düşük veya uzun olarak sınıflandırır. Eğer cümle içerisinde anlam bozucu kelimelerden biri varsa, sonuçlarda belirtilir.",
177
+ examples=[
178
+ ["Bu bir test cümlesi."],
179
+ ["Burada birkaç cümle var. Bu cümlelerin bazıları uzun, bazıları kısa."],
180
+ ["Bu cümlede anlam bozucu bazı kelimeler var."],
181
+ [
182
+ "Yazılım uygulamaları arasında iletişimi sağlayan bir arayüzdür. Uygulamanın diğer uygulamalarla veri alışverişinde bulunmasını veya işlevlerini paylaşmasını mümkün kılar."]
183
+ ]
184
+ )
185
+
186
+ gr_interface.launch(share=True)
requirements.txt ADDED
Binary file (2.66 kB). View file