hç commited on
Upload 4 files
Browse files- README.md +65 -1
- app.py +33 -0
- ridge_model.pkl +3 -0
- tfidf_vectorizer.pkl +3 -0
README.md
CHANGED
|
@@ -1,3 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# 📝 Feedback Prize - English Language Learning (Basitleştirilmiş Versiyon)
|
| 2 |
+
|
| 3 |
+
Bu proje, Kaggle'daki "Feedback Prize - English Language Learning" yarışmasına basitleştirilmiş bir çözüm sunar. Öğrenci kompozisyonlarından 6 dil becerisi tahmin edilir:
|
| 4 |
+
|
| 5 |
+
- Cohesion
|
| 6 |
+
- Syntax
|
| 7 |
+
- Vocabulary
|
| 8 |
+
- Phraseology
|
| 9 |
+
- Grammar
|
| 10 |
+
- Conventions
|
| 11 |
+
|
| 12 |
---
|
| 13 |
+
|
| 14 |
+
## 📁 Kullanılan Veri Seti
|
| 15 |
+
|
| 16 |
+
- `train.csv`: Öğrenci yazıları ve puanlar
|
| 17 |
+
- `test.csv`: Tahmin yapılacak yazılar
|
| 18 |
+
- `sample_submission.csv`: Örnek çıktı formatı
|
| 19 |
+
|
| 20 |
+
Veriler [Kaggle yarışma sayfasından](https://www.kaggle.com/competitions/feedback-prize-english-language-learning/data) indirilebilir.
|
| 21 |
+
|
| 22 |
---
|
| 23 |
+
|
| 24 |
+
## 🔧 Kullanılan Yöntemler
|
| 25 |
+
|
| 26 |
+
- **TF-IDF** ile metin vektörleştirme
|
| 27 |
+
- **Ridge Regression** ile çoklu puan tahmini
|
| 28 |
+
- `MultiOutputRegressor` ile 6 hedefin aynı anda öğrenilmesi
|
| 29 |
+
- Basit ve etkili yaklaşım (RMSE ≈ 0.56)
|
| 30 |
+
|
| 31 |
+
---
|
| 32 |
+
|
| 33 |
+
## 💻 Streamlit Uygulaması
|
| 34 |
+
|
| 35 |
+
```bash
|
| 36 |
+
streamlit run app.py
|
| 37 |
+
|
| 38 |
+
📦 Kurulum
|
| 39 |
+
|
| 40 |
+
pip install -r requirements.txt
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
🧠 Model ve Vektörleştirici
|
| 45 |
+
ridge_model.pkl: Eğitilmiş regresyon modeli
|
| 46 |
+
|
| 47 |
+
tfidf_vectorizer.pkl: TF-IDF ile kelime temsilleri
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
📤 Kaggle Submission
|
| 51 |
+
Model, test.csv üzerinde tahmin yaparak submission.csv dosyasını üretir. Bu dosya doğrudan Kaggle'a yüklenebilir.📌 Geliştirilebilirlik
|
| 52 |
+
Daha güçlü NLP modelleri (BERT, DeBERTa)
|
| 53 |
+
|
| 54 |
+
Ensemble yaklaşımlar
|
| 55 |
+
|
| 56 |
+
Tokenizer bazlı embedding’ler
|
| 57 |
+
|
| 58 |
+
LSTM/Transformer tabanlı derin modeller
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
🧑🎓 Amaç
|
| 63 |
+
Bu proje, gerçek bir yarışmanın sadeleştirilmiş bir çözümünü anlamak, NLP modelleme sürecini öğrenmek ve üretilebilir bir prototip oluşturmak amacıyla geliştirilmiştir.
|
| 64 |
+
|
| 65 |
+
|
| 66 |
+
🏷️ Lisans
|
| 67 |
+
MIT License
|
app.py
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# app.py
|
| 2 |
+
import streamlit as st
|
| 3 |
+
import pandas as pd
|
| 4 |
+
import numpy as np
|
| 5 |
+
import joblib
|
| 6 |
+
from sklearn.feature_extraction.text import TfidfVectorizer
|
| 7 |
+
from sklearn.linear_model import Ridge
|
| 8 |
+
from sklearn.multioutput import MultiOutputRegressor
|
| 9 |
+
|
| 10 |
+
# Başlık
|
| 11 |
+
st.title("📝 English Essay Skill Predictor")
|
| 12 |
+
st.markdown("Yazınızı girin, 6 dil puanını tahmin edelim (cohesion, syntax, etc.)")
|
| 13 |
+
|
| 14 |
+
# Kullanıcıdan metin al
|
| 15 |
+
user_text = st.text_area("✍️ Kompozisyonunuzu buraya yazın", height=250)
|
| 16 |
+
|
| 17 |
+
# Model ve TF-IDF yükleme (önceden eğitilmiş)
|
| 18 |
+
model = joblib.load("ridge_model.pkl")
|
| 19 |
+
tfidf = joblib.load("tfidf_vectorizer.pkl")
|
| 20 |
+
|
| 21 |
+
# Tahmin butonu
|
| 22 |
+
if st.button("📊 Tahmin Et"):
|
| 23 |
+
if user_text.strip() == "":
|
| 24 |
+
st.warning("Lütfen bir yazı girin.")
|
| 25 |
+
else:
|
| 26 |
+
# Vektörleştir
|
| 27 |
+
text_vec = tfidf.transform([user_text])
|
| 28 |
+
preds = model.predict(text_vec)[0]
|
| 29 |
+
|
| 30 |
+
# Sonuçları göster
|
| 31 |
+
labels = ['Cohesion', 'Syntax', 'Vocabulary', 'Phraseology', 'Grammar', 'Conventions']
|
| 32 |
+
for label, score in zip(labels, preds):
|
| 33 |
+
st.write(f"**{label}**: {round(score, 2)} / 5")
|
ridge_model.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:68c068bc0a684d581f4c350662cca089f2b7126a79c2ede0412fe075778b6743
|
| 3 |
+
size 481432
|
tfidf_vectorizer.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:fa30b4afda71944c53a5f76c65fea2c987763fbf43bb796f22ba328e5a5dce07
|
| 3 |
+
size 371125
|