Spaces:
Sleeping
Sleeping
Upload 2 files
Browse files- app.py +186 -0
- 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
|
|