Spaces:
Sleeping
Sleeping
import gradio as gr | |
import nltk | |
from sklearn.feature_extraction.text import TfidfVectorizer | |
from sklearn.metrics import accuracy_score | |
from sklearn.model_selection import train_test_split | |
from sklearn.svm import LinearSVC | |
nltk.download('punkt') | |
# Örnek veri: Cümleleri ve etiketleri (normal: 0, düşük: 1, uzun: 2) | |
sentences = [ | |
"Yazılım geliştirme sürecinde, düzenli kodlama pratikleri önemlidir.", | |
"Test odaklı geliştirme, güvenilir yazılım oluşturmak için etkili bir yaklaşımdır.", | |
"Yeni proje için gereksinimleri toplamak ve analiz etmek ilk adımdır.", | |
"Kod incelemeleri, hataları erken aşamada tespit etmek için kullanışlıdır.", | |
"Veritabanı tasarımı, veri bütünlüğü ve performansı optimize etmek için önemlidir.", | |
"Agile metodolojiler, proje yönetimini esnek ve verimli hale getirir.", | |
"Bir sorunu çözmek için önce onu anlamak önemlidir.", | |
"Open-source kütüphaneleri, geliştirme sürecini hızlandırabilir.", | |
"Yazılım güvenliği, kullanıcı verilerini korumak için vazgeçilmezdir.", | |
"Sürüm kontrol sistemi, ekip üyeleri arasında işbirliğini kolaylaştırır.", | |
"Yazılım arayüzleri, kullanıcı deneyimini iyileştirmek için önemlidir.", | |
"Bir proje başlamadan önce, detaylı bir proje planı oluşturmak faydalıdır.", | |
"Yazılım hatalarını düzeltmek için hata ayıklama teknikleri kullanılır.", | |
"Performans iyileştirmeleri, yazılımın tepkime süresini artırabilir.", | |
"Geliştiriciler arasında bilgi paylaşımı yapmak, verimliliği artırabilir.", | |
"Kod tekrarını önlemek için fonksiyonel programlama teknikleri kullanılabilir.", | |
"Geliştirme sürecinde belgeleme yapmak, projenin sürdürülebilirliğini sağlar.", | |
"Yazılım mimarisi, sistemin genel yapısını tasarlamak için kullanılır.", | |
"Veri yapıları, veri yönetimi ve işlemlerini kolaylaştırır.", | |
"Geliştirme ekibiyle düzenli olarak toplantılar yapmak işbirliğini artırır.", | |
"Geliştirme aşamasında kullanıcı geribildirimleri almak değerlidir.", | |
"Kodun okunabilir olması, bakım sürecini kolaylaştırır.", | |
"Yazılımın farklı platformlarda çalışabilirliği önemlidir.", | |
"Güvenlik açıklarını önlemek için güvenlik testleri yapılmalıdır.", | |
"Ekip üyeleri arasında kod incelemeleri yapmak kaliteyi artırır.", | |
"Yazılım güncellemeleri, yeni özellikler eklemek ve hataları düzeltmek için yapılır.", | |
"Kodun modüler olması, kodun yeniden kullanılabilirliğini artırır.", | |
"Yazılım tasarım desenleri, yaygın sorunları çözmek için kullanılabilir.", | |
"Veritabanı yedeklemeleri, veri kaybını önlemek için düzenli olarak yapılmalıdır.", | |
"Geliştirme sürecinde zaman yönetimi önemlidir.", | |
"Yazılım hatalarını raporlamak ve takip etmek için bir izleme sistemi kullanılabilir.", | |
"Kod kalitesini sağlamak için otomatik kod analiz araçları kullanılabilir.", | |
"Kullanıcı dostu arayüzler, yazılımın kullanılabilirliğini artırır.", | |
"Geliştirme sürecinde prototipler oluşturmak, tasarım kararlarını doğrulamak için faydalıdır.", | |
"Yazılımın performansını ölçmek için test senaryoları oluşturulabilir.", | |
"Proje süresince düzenli olarak ilerleme raporları vermek, paydaşları bilgilendirmek için önemlidir.", | |
"Veri güvenliği, hassas verilerin korunması için öncelikli olmalıdır.", | |
"Yazılım belgelemesi, proje sırasında ve sonrasında faydalıdır.", | |
"Ekip üyeleri arasında düzenli olarak geri bildirimler almak, performansı artırır.", | |
"Yazılımın kullanıcı ihtiyaçlarına uygun olması önemlidir.", | |
"Kodun test edilebilir olması, hataların erken tespit edilmesini sağlar.", | |
"Büyük projelerde paralel çalışma, verimliliği artırmak için kullanışlıdır.", | |
"Yazılımın bakım süreci, yazılımın ömrünü uzatır.", | |
"Bu ödevin yapılması oldukça uzun bir zaman aldı.", | |
"Kompleks projelerin tamamlanması genellikle zaman alır.", | |
"Veri analizi, büyük veri kümeleriyle uzun sürebilir.", | |
"Veri analizi için etkili veri görselleştirme araçları kullanılmalıdır.", | |
"Yazılım hatalarını bulmak için hata izleme sistemleri kullanışlıdır.", | |
"Büyük projelerde proje yönetimi planlama sürecini önemlidir.", | |
"Yazılım güncellemeleri, güvenlik açıklarını gidermek için yapılmalıdır.", | |
"Kullanıcı deneyimini artırmak için kullanıcı araştırmaları yapılmalıdır.", | |
"Yazılım uygulamalarında veri tabanlı kararlar almak için veri analitiği kullanılmalıdır.", | |
"Geliştirme ekibi, kodlama standartlarını belirlemek için birlikte çalışmalıdır.", | |
"Yazılımın performansını artırmak için kod optimizasyonu yapılmalıdır.", | |
"Yeni teknolojileri takip etmek, yazılım geliştirmede rekabet avantajı sağlar.", | |
"Yazılım güvenliği için düzenli güvenlik açıkları taramaları yapılmalıdır.", | |
"Proje için kullanılacak teknolojilerin risk analizi yapılmalıdır.", | |
"Yazılımın kullanıcı dostu olması için kullanılabilirlik testleri yapılmalıdır.", | |
"Veri güvenliğini sağlamak için şifreleme teknikleri kullanılmalıdır.", | |
"Yazılımın gelecekteki ihtiyaçlara adapte olabilmesi için esnek tasarlanmalıdır.", | |
"Kod kalitesini artırmak için sık sık kod incelemeleri yapılmalıdır.", | |
"Yazılım süreçlerini iyileştirmek için sürekli iyileştirme yapılmalıdır.", | |
"Proje yönetimi sürecinde riskler belirlenmeli ve yönetilmelidir.", | |
"Yazılımın verimliliğini artırmak için paralel hesaplama yöntemleri kullanılmalıdır.", | |
"Kullanıcı ihtiyaçlarını anlamak için kullanıcı görüşmeleri düzenlenmelidir.", | |
"Yazılımın ölçeklenebilir olması, gelecekteki büyüme için önemlidir.", | |
"Veri güvenliği için kullanıcı yetkilendirmesi ve kimlik doğrulama kullanılmalıdır.", | |
"Yazılım projesinin çıkış sürecini belirlemek, hedeflere ulaşmak için kritik öneme sahiptir.", | |
"Kapsamlı bir yazılım test stratejisi oluşturmak, yazılımın güvenilirliğini artırır.", | |
"Büyük veri setlerini işlemek için veri paralelleştirmesi yapmak, işlem sürelerini önemli ölçüde azaltır.", | |
"Karmaşık yazılım projelerinde, proje ekibi ile sık sık proje ilerlemesini değerlendirmek önemlidir.", | |
"Uzun süren geliştirme projelerinde, proje ekibi arasında etkili iletişim ve işbirliği sağlanmalıdır.", | |
"Güvenlik açıklarını önlemek için düzenli olarak yazılım penetrasyon testleri yapılmalıdır.", | |
"Büyük ölçekli yazılım projelerinde proje planlaması ve kaynak yönetimi kritik öneme sahiptir.", | |
"Kullanıcı ihtiyaçlarını anlamak için kullanıcıların gerçek kullanım senaryoları incelenmelidir.", | |
"Yazılım tasarımında kullanılacak mimari desenlerinin avantajları ve dezavantajları değerlendirilmelidir.", | |
"Yazılım hatalarını tespit etmek için otomasyon araçları kullanılmalı ve test kapsamı genişletilmelidir.", | |
"Kodlama standartları önemlidir.", | |
"Yazılım güncellemeleri yapılmalıdır.", | |
"Veritabanı tasarımı önemlidir.", | |
"Test senaryoları oluşturulabilir.", | |
"Kullanıcı geribildirimleri değerlidir.", | |
"Yazılımın performansı ölçülmeli.", | |
"Ekip üyeleriyle toplantılar yapılmalı.", | |
"Sürüm kontrol sistemi kullanılmalıdır.", | |
"Kod incelemeleri yapılmalıdır.", | |
"Veri güvenliği öncelikli olmalıdır.", | |
"Yapay zeka, makine öğrenimi ve derin öğrenmenin birleşimidir.", | |
"Büyük veri, büyük miktarda verinin toplanması, depolanması ve analiz edilmesidir.", | |
"Bulut bilişim, internet üzerinden yazılım, donanım ve depolama hizmetlerinin sağlanmasıdır.", | |
"Nesnelerin interneti (IoT), nesnelerin birbiriyle iletişim kurabilmesi ve veri alışverişi yapabilmesidir.", | |
"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.", | |
"Yapay zeka, makineler tarafından akıllı davranışın taklit edilmesidir.", | |
"Büyük veri, büyük miktarda verinin toplanması, depolanması ve analiz edilmesidir.", | |
"Nesnelerin interneti (IoT), nesnelerin birbiriyle iletişim kurabilmesi ve veri alışverişi yapabilmesidir.", | |
"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.", | |
"Yapay zeka, makine öğrenimi ve derin öğrenmenin birleşimidir.", | |
"Makine öğrenimi, makinelerin deneyimlerden öğrenmesi ve kendi başlarına karar verebilmesidir.", | |
"Derin öğrenme, nöral ağların kullanılarak makinelerin karmaşık görevleri öğrenmesidir.", | |
"Büyük veri, geleneksel veri işleme yöntemleriyle işlenemeyen büyük miktarda veriden oluşur.", | |
"Bulut bilişim, internet üzerinden yazılım, donanım ve depolama hizmetlerinin sağlanmasıdır." | |
] | |
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, | |
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, | |
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 0, 0, 0, 0, 0] | |
min_length = min(len(sentences), len(labels)) | |
sentences = sentences[:min_length] | |
labels = labels[:min_length] | |
def train_classifier(sentences, labels): | |
vectorizer = TfidfVectorizer() | |
X = vectorizer.fit_transform(sentences) | |
X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.2, random_state=45) | |
svm_classifier = LinearSVC(dual=False) | |
svm_classifier.fit(X_train, y_train) | |
predictions = svm_classifier.predict(X_test) | |
accuracy = accuracy_score(y_test, predictions) | |
return svm_classifier, vectorizer | |
classifier, vectorizer = train_classifier(sentences, labels) | |
weasel_words = ['bazı', 'biraz', 'azımsanamayacak kadar', 'muhtemelen', 'neredeyse', 'birtakım', 'oldukça', | |
'çok sayıda', 'esas olarak', 'çoğunlukla', 'nadir', 'bazen', 'büyük ölçüde', 'hemen hemen her zaman', | |
'yaklaşık olarak', 'birkaç', 'yaklaşık', 'potansiyel', 'muhtemel', 'genellikle', 'sıklıkla', 'belirli', | |
'çoğu zaman', 'çoğu', 'belirgin', 'büyük olasılıkla', 'sık sık', 'bir miktar', 'çok', | |
'bir dereceye kadar', 'pek çok', 'kısmen', 'belki', 'bilinmeyen', 'genelde', 'genel olarak', | |
'hemen hemen', 'şüpheli', 'bazı durumlarda', 'kesin olmamakla birlikte', 'tipik', 'bazıları', | |
'bir kısmı', 'pek', 'iddia edilen', 'tamamen', 'birçok', 'çoğunluk', 'çoğu', 'şüphesiz', 'tam olarak'] | |
def classify_sentence(sentence): | |
example_sentences = nltk.sent_tokenize(sentence) | |
sentence_predictions = [] | |
for sent in example_sentences: | |
example_vector = vectorizer.transform([sent]) | |
prediction = classifier.predict(example_vector) | |
sentence_predictions.append(prediction[0]) | |
results = [] | |
for i, sent_pred in enumerate(sentence_predictions): | |
weasel_words_found = [word for word in weasel_words if word in example_sentences[i]] | |
if sent_pred == 0: | |
sentence_info = "Normal bir cümle" | |
elif sent_pred == 1: | |
sentence_info = "Düşük veya kısa bir cümle" | |
else: | |
sentence_info = "Uzun bir cümle" | |
if weasel_words_found: | |
weasel_word_text = ', '.join(weasel_words_found) | |
results.append(f"Sentence {i + 1}: {sentence_info}. Anlam bozucu kelimeler: {weasel_word_text}") | |
else: | |
results.append(f"Sentence {i + 1}: {sentence_info}") | |
return results | |
gr_interface = gr.Interface( | |
fn=classify_sentence, | |
inputs=gr.Textbox(label="Metni girin", lines=6, show_copy_button=True), | |
outputs=gr.Textbox(label="Sonuçlar", show_copy_button=True), | |
live=True, | |
title="Cümle Sınıflandırma Uygulaması", | |
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.", | |
examples=[ | |
["Bu bir test cümlesi."], | |
["Burada birkaç cümle var. Bu cümlelerin bazıları uzun, bazıları kısa."], | |
["Bu cümlede anlam bozucu bazı kelimeler var."], | |
[ | |
"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."] | |
] | |
) | |
gr_interface.launch() | |