Modern ve geliştirilmiş bir Türkçe küfür/hakaret tespit API'si. Metin içerisindeki uygunsuz kelimeleri ultra yüksek doğruluk oranıyla tespit eder, öğrenir ve veritabanına kaydeder. Karakter değişimi yapılmış tüm varyasyonları tanıyabilir, ilişkisel veri modeliyle küfür kelime zenginliğini arttırır, ve ölçeklenebilir bir altyapı sunar. Gelişmiş yapay zeka entegrasyonu sayesinde, daha önce tespit edilmemiş küfür kelimelerini öğrenir ve veritabanını otomatik olarak zenginleştirir.
- Varyasyon sayı sınırlaması (1000) tamamen kaldırıldı
- Sistem artık MongoDB kapasitesi haricinde hiçbir sınırlandırma olmadan sınırsız sayıda varyasyon üretebilir ve saklayabilir
generatePossibleVariationsmetodunda sıralama ve filtreleme kısıtlamaları da kaldırıldı- Her küfür kelimesi için potansiyel olarak on binlerce varyasyon saklama imkanı
- Tüm yapay zeka analizlerinde GPT-4.5 varsayılan model olarak ayarlandı
- Önceki varsayılan model olan Claude-3-Haiku yerine GPT-4.5 kullanılarak daha yüksek tespit doğruluğu
- Tüm yeni varyasyon zenginleştirme ve küfür tespit işlemleri GPT-4.5 ile yapılıyor
- Zenginleştirilmiş prompt yapısı ile daha kapsamlı varyasyon üretimi
- Swagger dokümantasyonu tamamen yenilendi
- Animasyonlu geçişler ve yüzer bileşenler ile modern kullanıcı deneyimi
- Gradyan arkaplanlar ve hover efektleri
- Box-shadow ve transform animasyonları
- Renk kodlamalı HTTP metodları ve geliştirilmiş görselleştirme
- Mobil cihazlara uyumlu tasarım
- CPU ve bellek kullanımında optimizasyon (%15 daha verimli)
- Varyasyon algoritmaları ve tüm karakter setleri yeniden düzenlendi
- Gelişmiş Önbellek ve veritabanı indeksleme ile %30 daha hızlı sorgu sonuçları
- Karakter değişim kalıpları artırıldı: 650+ karakterlik tam değişim tablosu
- Karakter tablosu özellikle Türkçe karakterler için iyileştirildi
- Ultra Hassas Tespit: Metin içerisindeki küfür/hakaret kelimelerini yüksek doğrulukla tespit eder
- Sınırsız Varyasyon Tanıma: 6 farklı varyasyon algoritması ile her türlü karakter değişimini yakalar
- Karakter değişimleri (örn: "@mk", "kfr", "5!kt!r")
- Çoklu karakter değişimleri
- Tekrarlı karakterler (örn: "aaaaaa" → "a")
- Boşluk ve noktalama varyasyonları
- Tersine çevirme ve karıştırma
- Fonetik varyasyonlar
- Verimli Veritabanı Kullanımı: Yapay zekayı yormadan önce veritabanını kullanır
- Kapsamlı Kelime Yapısı:
- 11 farklı kategori (hakaret, cinsel, dini, argo, ırkçı vb.)
- Şiddet seviyeleri (1-5)
- Dilbilgisi özellikleri
- İlişkili kelimeler
- Kullanım bağlamları
- Zenginleştirme Algoritmaları:
- GPT-4.5 entegrasyonu ile yeni küfürleri tespit etme
- Kelime varyasyonlarını otomatik zenginleştirme
- İlişkisel veri modeliyle küfür sözlüğünü genişletme
- Performans İyileştirmeleri:
- İki seviyeli önbellekleme (kelime ve analiz)
- Optimizasyon izleme ve verimlilik raporlama
- Yapay zeka kullanımını minimize etme
- Kapsamlı Yönetim API'si:
- Küfür kelimelerini ekleme, düzenleme ve devre dışı bırakma
- Toplu içe aktarım ve dışa aktarım
- Yanlış pozitif raporlama
- Kapsamlı istatistikler ve analitik
┌─────────────────────┐ ┌─────────────────────┐ ┌──────────────────┐
│ │ │ │ │ │
│ Gelen Metin │────▶│ Normalleştirme │────▶│ Sözcük Ayırma │
│ │ │ │ │ │
└─────────────────────┘ └─────────────────────┘ └──────┬───────────┘
│
▼
┌─────────────────────┐ ┌─────────────────────┐ ┌──────────────────┐
│ │ │ │ │ │
│ Sonuçları Birleştir│◀────│ Varyasyon Kontrolü │◀────│ Önbellek Kontrolü│
│ │ │ │ │ │
└─────────┬───────────┘ └─────────┬───────────┘ └──────┬───────────┘
│ │ │
│ │ │ Bulunamadı
│ │ ▼
│ │ ┌──────────────────┐
│ │ │ │
│ │ │ MongoDB Sorgusu │
│ │ │ │
│ │ └──────┬───────────┘
│ │ │
│ │ │ Bulunamadı
│ │ ▼
│ │ ┌──────────────────┐
│ │ │ │
│ │ │ VaryasyonService │
│ │ │ │
│ │ └──────┬───────────┘
│ │ │
│ │ │
│ ▼ ▼
│ ┌─────────────────────┐ ┌───────────────────┐
│ │ │ │ │
│ │ Küfür Tespit Edildi │ │ GPT-4.5 Analizi │
│ │ │ │ │
│ └─────────┬───────────┘ └──────┬────────────┘
│ │ │
│ └───────────────────────┘
│ │
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ │ │ │
│ Temiz Sonuç │ │ Küfür Tespit │
│ Döndür │ │ Sonucu Döndür │
│ │ │ │
└─────────────────────┘ └─────────────────────┘
- Node.js & Express.js
- MongoDB & Mongoose
- OpenAI / Claude API (GPT-4.5 varsayılan olarak)
- Swagger dokümantasyonu (Ultra modern UI)
- Jest (testler için)
- Güvenlik: Helmet, Rate Limiting, Express MongoDB Sanitize, HPP
- İlk proje iskeleti
- Temel küfür tespiti
- Minimal varyasyon algoritmaları
- Yapay zeka entegrasyonu (Claude-3-Haiku)
- Kapsamlı varyasyon algoritmaları
- Veritabanı modelinin genişletilmesi
- 🔄 Sınırsız Varyasyon Desteği
- Varyasyon sayı sınırlaması tamamen kaldırıldı
- Tüm varyasyonları saklama imkanı
- 🧠 GPT-4.5 Entegrasyonu
- Varsayılan model olarak ayarlandı
- Daha güçlü analiz ve tespit
- 🎨 Ultra Modern Swagger UI
- Animasyonlu, gradyanlı UI
- Mobil uyumlu tasarım
- ⚡ Sistem Performans Optimizasyonu
- Daha hızlı sorgu sonuçları
- Bellek ve CPU kullanımında iyileştirmeler
- Repoyu klonlayın:
git clone https://github.com/kynuxdev/turkish-profanity-detector.git
cd turkish-profanity-detector- Bağımlılıkları yükleyin:
npm install.envdosyasını, örnek dosyadan oluşturun:
cp .env.example .env
# .env dosyasını düzenleyin ve kendi değerlerinizi ekleyin- Uygulamayı başlatın:
npm start- Swagger dokümantasyonuna browser'dan erişin:
http://localhost:3000/api-docs
| Endpoint | Metod | Açıklama | Parametreler |
|---|---|---|---|
/api/swear/detect |
GET | Metinde küfür olup olmadığını tespit eder | text: Kontrol edilecek metinuseAI: AI kullanılsın mı (varsayılan: true)model: Kullanılacak AI modeli (varsayılan: gpt-4.5)confidence: Güven eşiği (0-1 arası) |
/api/swear/stats |
GET | Küfür istatistiklerini getirir | category: Kategori filtresiminSeverity: Minimum şiddet seviyesilimit: Sonuç limitisource: Kaynak filtresi |
/api/swear/word |
POST | Yeni küfür kelimesi ekler | JSON Body: Kelime detayları |
/api/swear/word/:id |
DELETE | Küfür kelimesini siler/devre dışı bırakır | id: Kelime IDdeactivateOnly: Sadece devre dışı bırak (true/false) |
/api/swear/report-false-positive |
POST | Yanlış tespit raporlar | JSON Body: Kelime bilgisi |
/api/swear/bulk-import |
POST | Toplu küfür listesi içe aktarır | JSON Body: Dosya yolu, format ve seçenekler |
/api/swear/enrich-variations |
POST | AI ile varyasyonları zenginleştirir | limit: İşlenecek kelime sayısıminDetections: Min tespit sayısımodel: AI modeli (varsayılan: gpt-4.5) |
/api/swear/variations/{word} |
GET | Bir kelime için varyasyonları getirir | word: Varyasyonları getirilecek kelime |
/api/swear/variations/{word}/enrich |
POST | Belirli bir kelime için varyasyonları zenginleştirir | word: KelimeuseAI: AI kullanmodel: AI modeli |
/api/swear/variations/generate |
GET | Varyasyon önerileri oluşturur | word: KelimeuseAI: AI kullanmodel: Modellimit: Limitcategories: Kategori filtresi |
/api/swear/variations/stats |
GET | Varyasyon istatistiklerini getirir | limit: Sonuç limiti |
/api/swear/variations/bulk-enrich |
POST | Toplu varyasyon zenginleştirme çalıştırır | limit: İşlenecek kelime sayısı |
/health |
GET | API durumunu kontrol eder | - |
/api-docs |
GET | Swagger dokümantasyonu | - |
// Örnek istek (basit):
fetch('http://localhost:3000/api/swear/detect?text=Bu%20bir%20test%20metnidir')
.then(response => response.json())
.then(data => console.log(data));
// Örnek istek (gelişmiş parametrelerle):
fetch('http://localhost:3000/api/swear/detect?text=Bu%20bir%20test%20metnidir&useAI=true&model=gpt-4.5&confidence=0.8')
.then(response => response.json())
.then(data => console.log(data));
// Örnek yanıt (küfür yoksa):
{
"success": true,
"result": {
"isSwear": false,
"details": null,
"aiDetected": false
}
}
// Örnek yanıt (küfür varsa):
{
"success": true,
"result": {
"isSwear": true,
"details": {
"word": "tespit_edilen_kelime",
"category": "hakaret",
"severityLevel": 3,
"detectedWords": ["tespit_edilen_kelime"]
},
"aiDetected": true,
"aiConfidence": 0.95
}
}// Örnek istek (sınırsız varyasyon):
fetch('http://localhost:3000/api/swear/variations/generate?word=ornek_kelime&useAI=true')
.then(response => response.json())
.then(data => console.log(data));
// Örnek istek (kategorilerine göre filtrelenmiş):
fetch('http://localhost:3000/api/swear/variations/generate?word=ornek_kelime&categories=replacement,spacing')
.then(response => response.json())
.then(data => console.log(data));
// Örnek yanıt:
{
"success": true,
"data": {
"originalWord": "ornek_kelime",
"stats": {
"algorithmicVariationsCount": 487,
"aiVariationsCount": 1254,
"totalUniqueVariations": 1732,
"categoryCounts": {
"characterReplacement": 342,
"spacing": 98,
"lengthChange": 1292
}
},
"variations": [
"0rnek_kelime",
"orn3k_kelime",
"ornek_k3lime",
// ... sınırsız sayıda varyasyon ...
],
"categorizedVariations": {
"characterReplacement": [
"0rnek_kelime",
"orn3k_kelime"
// ...
],
"spacing": [
"ornek kelime",
"o r n e k_k e l i m e"
// ...
],
"lengthChange": [
"ornekkelime",
"ornk_kelime"
// ...
]
}
}
}// Örnek istek (filtreli):
fetch('http://localhost:3000/api/swear/stats?category=hakaret&minSeverity=3&limit=10')
.then(response => response.json())
.then(data => console.log(data));
// Örnek yanıt:
{
"success": true,
"statistics": {
"totalSwearWords": 154,
"activeSwearWords": 142,
"topSwearWords": [
{
"word": "ornek_kufur",
"category": "argo",
"severityLevel": 3,
"variations": ["ornek_kufur", "0rn3k_kufur", "örnek_küfür"],
"stats": {
"detectionCount": 427
}
},
// ... diğer kelimeler
],
"recentlyAdded": [
// Son eklenen kelimeler listesi
],
"categoryCounts": {
"hakaret": 45,
"cinsel": 32,
"argo": 28,
"dini": 18,
"ırkçı": 12,
"diğer": 9
},
"severityCounts": {
"1": 15,
"2": 37,
"3": 52,
"4": 27,
"5": 11
},
"sourceCounts": {
"manuel": 38,
"ai_detected": 67,
"otomatik_tespit": 29,
"varyasyon_eşleşmesi": 8
},
"topVariationCounts": [
// En çok varyasyona sahip kelimeler
]
}
}// Örnek istek:
fetch('http://localhost:3000/api/swear/word', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
word: "ornek_kufur",
category: "argo",
severityLevel: 3,
variations: ["0rn3k_kufur", "örnek_küfür"]
})
})
.then(response => response.json())
.then(data => console.log(data));
// Başarılı yanıt:
{
"success": true,
"message": "Küfür kelimesi başarıyla eklendi",
"word": {
"_id": "6071f1234b9a7c001b123456",
"word": "ornek_kufur",
"category": "argo",
"severityLevel": 3,
// ... diğer alanlar
}
}// Örnek istek:
fetch('http://localhost:3000/api/swear/enrich-variations?limit=5&minDetections=3&model=gpt-4.5', {
method: 'POST'
})
.then(response => response.json())
.then(data => console.log(data));
// Başarılı yanıt:
{
"success": true,
"message": "Varyasyon zenginleştirme tamamlandı",
"results": {
"totalProcessed": 5,
"enriched": 4,
"newVariationsAdded": 5743, // Artık sınırsız sayıda varyasyon ekleyebilir
"errors": []
}
}node test/swearApi.test.jsBu araç veritabanını test edebilir, temel verileri ekleyebilir ve varyasyonları zenginleştirebilir:
node test/swearDbSeeder.jsBu interaktif araç size şu seçenekleri sunar:
- Temel küfür kelimelerini ekleme
- Yapay zeka (GPT-4.5) ile varyasyon zenginleştirme
- Tespit sistemini test etme
- Tüm işlemleri sırayla çalıştırma
Test aracı özellikle yeni kurulmuş sistemlerde veritabanını başlatmak ve sistemin çalışmasını doğrulamak için çok faydalıdır.
- v0.0.3 Sistem Testi: Saniyede 120 küfür tespiti (4 çekirdekli 8GB RAM sunucuda)
- Sunucu Gereksinimleri: 20.000 küfür varyasyonu için ~500MB depolama alanı
- Önbellek Boyutu: 10.000 kelimelik bir önbellek için ~250MB RAM kullanımı
- Yapay Zeka Kullanımı: Yalnızca diğer yöntemler başarısız olduğunda
MIT
- Bu API küfür tespiti yaptığı için, veritabanı hassas içerik içerebilir.
- Üretim ortamında API erişimlerini JWT veya API key ile sınırlandırmanız önerilir.
- API'yi herkesin erişebileceği bir ortamda çalıştırıyorsanız, rate limiting değerlerini düşürmeyi düşünün.
- Sınırsız varyasyon özelliği çok büyük veritabanlarına yol açabileceği için, düzenli veritabanı bakımı önerilir.