Bu depo, Next4biz Data Science R&D birimindeki bir aylık staj boyunca geliştirdiğim Türkçe konu keşfi çalışmalarının gizlilik odaklı portföy sürümüdür. İlk sürümde yalnızca sentetik bir demonstrasyon vardı; bu sürüm gerçek araştırma akışını gösterecek şekilde baştan düzenlendi:
Bu kişisel bir araştırma portföyüdür; Next4biz'in resmî ürünü, performans beyanı veya resmî deposu değildir.
Etiketi bulunmayan, gürültülü Türkçe müşteri geri bildirimlerinde bir kaydın ana ve gerektiğinde ikincil sorun konuları nasıl keşfedilebilir?
Yerel çalışma kesiti 6.459 kayıt ve 10 markadan oluşuyordu. Repo gerçek şikâyetleri,
başlıkları veya marka eşleme anahtarını içermez. Marka dağılımı gerekiyorsa eşleme
anahtarı saklanmayan ve her exportta yeniden karıştırılan Marka_A–Marka_J takma
adları ile yuvarlanmış toplu değerler gösterilir.
Notebook'lar eski çalışma klasöründen körlemesine kopyalanmadı. Benzer dosyalar birleştirildi; kayıtlı çıktılar, execution count'lar, kişisel mutlak yollar, gerçek marka adları, ham metin önizlemeleri ve cloud API çağrıları çıkarıldı.
| Aşama | Notebook'lar | İçerik |
|---|---|---|
| Veri ve Türkçe ön işleme | 00–02 | Şema/encoding audit'i, Stanza–Zeyrek–Zemberek, regex temizliği, NER ve marka redaksiyonu |
| Lexical ve embedding | 03–06 | Word cloud, TF-IDF, KeyBERT ablation/kümeleme, E5–ConvBERT–ELECTRA |
| Topic modelling | 07–09, 16 | Çok etiketli NMF, parametre arama, BERTopic, E5–Leiden–c-TF-IDF |
| Label-driven yöntemler | 10–12, 15 | Zero-shot NLI, prototip tabanlı few-shot, sentence-level ablation, NLI+E5 hibrit |
| Yerel/LLM destekli | 13–14 | Gemma 3n + MLX ve tamamen offline TopicGPT-esinli sonuç analizi |
Başlangıç noktası: notebook rehberi. Notebook bazlı kurulum seçenekleri: ortam rehberi.
Araştırma notebook'ları “private veriyi GitHub'da çalıştır” örneği değildir. Kod
akışını korur fakat çıktı içermez; veri yolu açıkça PRIVATE_DATA_PATH benzeri yerel
bir yapılandırmaya çevrilmiştir. TopicGPT notebook'u cloud çağrısı yapmaz ve yalnız
anonim toplu sonuçlarla çalışır.
results/ altında şunlar bulunur:
Hiçbir sonuç dosyasında complaint_detail, header, evidence, kişi/iletişim
bilgisi, gerçek marka, demografi veya satır bazlı tahmin bulunmaz.
Orijinal word cloud eksik marka stoplist'i nedeniyle yayımlanmadı. Repodaki görsel, yalnız gözden geçirilmiş genel sorun terimlerinden yeniden üretildi. Diğer görseller de hover metni, temsilci doküman veya marka içermeyen toplu çıktılardır.
![]() | ![]() |
![]() | ![]() |
| Deney | Arşivlenmiş toplu gözlem | Yorum sınırı |
|---|---|---|
| KeyBERT + KMeans | En yüksek cosine silhouette yaklaşık 0.151 | Bu grid'de ayrışma zayıf |
| KeyBERT + HDBSCAN | 936 keyword'ün 894'ü noise (%95.5) | Keyword'ü bağlamdan koparıp kümelemek bu koşuda uygun değildi |
| NMF | 10 topic, diversity 0.96, NPMI 0.154, cardinality 1.494 | 300 iterasyonda yakınsamadı; accuracy değildir |
| BERTopic | 500 kaydın 89'u outlier topic (%17.8) | Parametre ve granularity duyarlılığı var |
| Zero-shot / prototype | Desteği en az 10 olan label'larda agreement 0.448–0.929 | Agreement ground-truth accuracy değildir |
| TopicGPT-esinli pilot | Batch–tekil primary agreement 84/100 | Her iki yöntem birlikte yanlış olabilir |
| TopicGPT secondary | Batch: ort. 0.40; tekil: ort. 1.25 secondary topic | Batch işleme yan konuları daha sık kaçırdı |
| Gemma 3n + MLX | Tek kayıtlı koşu: 441 token / 23.4 s / 18.8 token/s | Kontrollü hız karşılaştırması değildir |
NMF, bu çalışmada düşük maliyetli ve yorumlanabilir en pratik klasik baseline oldu. Bu, NMF'nin her veri setinde BERTopic veya başka bir yöntemden üstün olduğu anlamına gelmez. Araştırmanın bütün karar zinciri araştırma yolculuğunda, her iddianın dayanağı ise kanıt kaydında açıklanır.
Kısa bir tur için:
00_data_quality_audit.ipynb01_zemberek_preprocessing.ipynb05_keybert_clustering.ipynb07_nmf_multilabel.ipynb08_nmf_parameter_search.ipynb09_bertopic_experiment.ipynb10_zero_shot_nli.ipynb13_local_gemma_mlx_taxonomy.ipynb14_topicgpt_inspired_offline.ipynb16_leiden_ctfidf_local_labeling.ipynbTüm defterlerin kaynağı, birleştirme kararı ve neden dışarıda bırakılan benzerleri notebooks/README.md içinde listelenir.
Ham veri paylaşmadan çekirdek akışı yeniden üretmek için:
python -m venv .venv
source .venv/bin/activate
python -m pip install -e .
topic-cluster examples/synthetic_complaints.csv \
--text-column text \
--n-topics 6 \
--min-df 1 \
--output-dir artifacts/demo
Bu komut topics.json, üretilmiş kimlikli assignments.csv ve run_summary.json
oluşturur. artifacts/ varsayılan olarak git dışında kalır. Sentetik notebook
public_demo.ipynb, gerçek araştırma defterlerinin
yerine değil, yalnız hızlı çalıştırma kontrolü olarak tutulur.
evidence ve provider kodu çıkarılmıştır.flowchart LR
A[Yetkili yerel veri] --> B[Ham satırlar git dışında]
B --> C[PII + marka azaltma]
C --> D[Modelleme]
D --> E[Toplu metrik/terim exportu]
E --> F[Whitelist + denylist taraması]
F --> G[Manuel inceleme]
G --> H[Private GitHub snapshot]
Regex, NER ve marka takma adı anonimlik garantisi vermez. Kısa bir topic n-gram'ı veya nadir toplu değer dahi başka verilerle eşleştirme riski taşıyabilir. Bu yüzden:
Ayrıntılar: veri kartı ve veri/mahremiyet politikası.
PYTHONPATH=src python -m unittest discover -s tests -v
python -m compileall -q src tests scripts
python scripts/release_check.py .
Release checker, git indexindeki ve untracked adaylardaki dosyaları şu riskler için kontrol eder:
.env,Otomatik tarama hukuki görüş veya anonimlik ispatı değildir.
.
├── docs/ # Yolculuk, metodoloji, kanıt ve public kontrol listesi
├── examples/ # Yalnız açıkça işaretlenmiş sentetik veri
├── figures/ # İncelenmiş toplu görseller
├── notebooks/
│ ├── research/ # 17 output'suz, API'siz kürate edilmiş staj notebook'u
│ └── public_demo.ipynb # Sentetik quickstart
├── results/ # Ham satır içermeyen CSV/JSON araştırma sonuçları
├── scripts/ # Güvenli export, notebook kürasyonu ve yayın taraması
├── src/ # Veri-bağımsız yeniden kullanılabilir çekirdek
└── tests/ # Sentetik testler ve yayın güvenlik kapısı
Bir şikâyetin internette görülebilir olması onu yeniden dağıtma hakkı vermez. Veri kaynağının kullanım koşulları, veri tabanı/telif hakları, staj sözleşmesi, kod sahipliği, işveren izni ve KVKK ayrı ayrı değerlendirilmelidir.
Bu nedenle açık kaynak lisansı eklenmemiştir. Lisans bulunmaması yeniden kullanım izni vermez. Private repo public yapılmadan önce public yayın kontrol listesi tamamlanmalıdır.
3 commits
Jupyter Notebook
59.7%
Python
40.3%
Bu depo, Next4biz Data Science R&D birimindeki bir aylık staj boyunca geliştirdiğim Türkçe konu keşfi çalışmalarının gizlilik odaklı portföy sürümüdür. İlk sürümde yalnızca sentetik bir demonstrasyon vardı; bu sürüm gerçek araştırma akışını gösterecek şekilde baştan düzenlendi:
Bu kişisel bir araştırma portföyüdür; Next4biz'in resmî ürünü, performans beyanı veya resmî deposu değildir.
Etiketi bulunmayan, gürültülü Türkçe müşteri geri bildirimlerinde bir kaydın ana ve gerektiğinde ikincil sorun konuları nasıl keşfedilebilir?
Yerel çalışma kesiti 6.459 kayıt ve 10 markadan oluşuyordu. Repo gerçek şikâyetleri,
başlıkları veya marka eşleme anahtarını içermez. Marka dağılımı gerekiyorsa eşleme
anahtarı saklanmayan ve her exportta yeniden karıştırılan Marka_A–Marka_J takma
adları ile yuvarlanmış toplu değerler gösterilir.
Notebook'lar eski çalışma klasöründen körlemesine kopyalanmadı. Benzer dosyalar birleştirildi; kayıtlı çıktılar, execution count'lar, kişisel mutlak yollar, gerçek marka adları, ham metin önizlemeleri ve cloud API çağrıları çıkarıldı.
| Aşama | Notebook'lar | İçerik |
|---|---|---|
| Veri ve Türkçe ön işleme | 00–02 | Şema/encoding audit'i, Stanza–Zeyrek–Zemberek, regex temizliği, NER ve marka redaksiyonu |
| Lexical ve embedding | 03–06 | Word cloud, TF-IDF, KeyBERT ablation/kümeleme, E5–ConvBERT–ELECTRA |
| Topic modelling | 07–09, 16 | Çok etiketli NMF, parametre arama, BERTopic, E5–Leiden–c-TF-IDF |
| Label-driven yöntemler | 10–12, 15 | Zero-shot NLI, prototip tabanlı few-shot, sentence-level ablation, NLI+E5 hibrit |
| Yerel/LLM destekli | 13–14 | Gemma 3n + MLX ve tamamen offline TopicGPT-esinli sonuç analizi |
Başlangıç noktası: notebook rehberi. Notebook bazlı kurulum seçenekleri: ortam rehberi.
Araştırma notebook'ları “private veriyi GitHub'da çalıştır” örneği değildir. Kod
akışını korur fakat çıktı içermez; veri yolu açıkça PRIVATE_DATA_PATH benzeri yerel
bir yapılandırmaya çevrilmiştir. TopicGPT notebook'u cloud çağrısı yapmaz ve yalnız
anonim toplu sonuçlarla çalışır.
results/ altında şunlar bulunur:
Hiçbir sonuç dosyasında complaint_detail, header, evidence, kişi/iletişim
bilgisi, gerçek marka, demografi veya satır bazlı tahmin bulunmaz.
Orijinal word cloud eksik marka stoplist'i nedeniyle yayımlanmadı. Repodaki görsel, yalnız gözden geçirilmiş genel sorun terimlerinden yeniden üretildi. Diğer görseller de hover metni, temsilci doküman veya marka içermeyen toplu çıktılardır.
![]() | ![]() |
![]() | ![]() |
| Deney | Arşivlenmiş toplu gözlem | Yorum sınırı |
|---|---|---|
| KeyBERT + KMeans | En yüksek cosine silhouette yaklaşık 0.151 | Bu grid'de ayrışma zayıf |
| KeyBERT + HDBSCAN | 936 keyword'ün 894'ü noise (%95.5) | Keyword'ü bağlamdan koparıp kümelemek bu koşuda uygun değildi |
| NMF | 10 topic, diversity 0.96, NPMI 0.154, cardinality 1.494 | 300 iterasyonda yakınsamadı; accuracy değildir |
| BERTopic | 500 kaydın 89'u outlier topic (%17.8) | Parametre ve granularity duyarlılığı var |
| Zero-shot / prototype | Desteği en az 10 olan label'larda agreement 0.448–0.929 | Agreement ground-truth accuracy değildir |
| TopicGPT-esinli pilot | Batch–tekil primary agreement 84/100 | Her iki yöntem birlikte yanlış olabilir |
| TopicGPT secondary | Batch: ort. 0.40; tekil: ort. 1.25 secondary topic | Batch işleme yan konuları daha sık kaçırdı |
| Gemma 3n + MLX | Tek kayıtlı koşu: 441 token / 23.4 s / 18.8 token/s | Kontrollü hız karşılaştırması değildir |
NMF, bu çalışmada düşük maliyetli ve yorumlanabilir en pratik klasik baseline oldu. Bu, NMF'nin her veri setinde BERTopic veya başka bir yöntemden üstün olduğu anlamına gelmez. Araştırmanın bütün karar zinciri araştırma yolculuğunda, her iddianın dayanağı ise kanıt kaydında açıklanır.
Kısa bir tur için:
00_data_quality_audit.ipynb01_zemberek_preprocessing.ipynb05_keybert_clustering.ipynb07_nmf_multilabel.ipynb08_nmf_parameter_search.ipynb09_bertopic_experiment.ipynb10_zero_shot_nli.ipynb13_local_gemma_mlx_taxonomy.ipynb14_topicgpt_inspired_offline.ipynb16_leiden_ctfidf_local_labeling.ipynbTüm defterlerin kaynağı, birleştirme kararı ve neden dışarıda bırakılan benzerleri notebooks/README.md içinde listelenir.
Ham veri paylaşmadan çekirdek akışı yeniden üretmek için:
python -m venv .venv
source .venv/bin/activate
python -m pip install -e .
topic-cluster examples/synthetic_complaints.csv \
--text-column text \
--n-topics 6 \
--min-df 1 \
--output-dir artifacts/demo
Bu komut topics.json, üretilmiş kimlikli assignments.csv ve run_summary.json
oluşturur. artifacts/ varsayılan olarak git dışında kalır. Sentetik notebook
public_demo.ipynb, gerçek araştırma defterlerinin
yerine değil, yalnız hızlı çalıştırma kontrolü olarak tutulur.
evidence ve provider kodu çıkarılmıştır.flowchart LR
A[Yetkili yerel veri] --> B[Ham satırlar git dışında]
B --> C[PII + marka azaltma]
C --> D[Modelleme]
D --> E[Toplu metrik/terim exportu]
E --> F[Whitelist + denylist taraması]
F --> G[Manuel inceleme]
G --> H[Private GitHub snapshot]
Regex, NER ve marka takma adı anonimlik garantisi vermez. Kısa bir topic n-gram'ı veya nadir toplu değer dahi başka verilerle eşleştirme riski taşıyabilir. Bu yüzden:
Ayrıntılar: veri kartı ve veri/mahremiyet politikası.
PYTHONPATH=src python -m unittest discover -s tests -v
python -m compileall -q src tests scripts
python scripts/release_check.py .
Release checker, git indexindeki ve untracked adaylardaki dosyaları şu riskler için kontrol eder:
.env,Otomatik tarama hukuki görüş veya anonimlik ispatı değildir.
.
├── docs/ # Yolculuk, metodoloji, kanıt ve public kontrol listesi
├── examples/ # Yalnız açıkça işaretlenmiş sentetik veri
├── figures/ # İncelenmiş toplu görseller
├── notebooks/
│ ├── research/ # 17 output'suz, API'siz kürate edilmiş staj notebook'u
│ └── public_demo.ipynb # Sentetik quickstart
├── results/ # Ham satır içermeyen CSV/JSON araştırma sonuçları
├── scripts/ # Güvenli export, notebook kürasyonu ve yayın taraması
├── src/ # Veri-bağımsız yeniden kullanılabilir çekirdek
└── tests/ # Sentetik testler ve yayın güvenlik kapısı
Bir şikâyetin internette görülebilir olması onu yeniden dağıtma hakkı vermez. Veri kaynağının kullanım koşulları, veri tabanı/telif hakları, staj sözleşmesi, kod sahipliği, işveren izni ve KVKK ayrı ayrı değerlendirilmelidir.
Bu nedenle açık kaynak lisansı eklenmemiştir. Lisans bulunmaması yeniden kullanım izni vermez. Private repo public yapılmadan önce public yayın kontrol listesi tamamlanmalıdır.
3 commits
Jupyter Notebook
59.7%
Python
40.3%