尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證NUSConfessIT - now on the web.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Scraper, dashboard, ML experiments, and public viewer for @NUSConfessIT — an anonymous confession channel for the NUS community on Telegram.
Live site → confessit.space Analysis writeup → anselmlong.com/blog/nus-confessit-analysis
| Component | Description |
|---|---|
scrape.py | Incremental Telegram scraper (Telethon) |
scrape_replies.py | Fetches reply counts from the discussion group |
refresh_reactions.py | Refreshes reaction counts on existing posts |
server.py | Local Flask dashboard — top posts, search, individual post pages |
frontend/ | Next.js 15 public site deployed to confessit.space |
ml/ | Virality prediction experiments (TF-IDF, embeddings, LightGBM) |
export_v6_dataset.py | Exports the ML-ready CSV dataset |
report.py | Generates HTML digest reports |
dataset/ | Published dataset (72,279 posts, CC BY-NC 4.0) |
Data is stored locally in data/messages.db (SQLite).
Python scraper + local server
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # add your Telegram API credentials
Get API credentials at my.telegram.org.
Next.js frontend
cd frontend
npm install
npm run dev
python scrape.py # incremental fetch (new messages only)
python scrape.py --limit 500 # fetch at most 500 new messages
python scrape.py --since-id 0 # re-fetch everything from the beginning
python scrape_replies.py # update reply counts
python refresh_reactions.py # refresh reaction counts
The scraper writes to data/messages.db. First run triggers a Telegram auth flow — a session file is saved to sessions/ so subsequent runs are silent.
python server.py # runs at http://localhost:5000
python server.py --port 8080
Routes: / (top posts), /search, /post/<id>, /stats.
dataset/confessit_v6_dataset.csv — 72,279 posts with virality scores, binary viral labels, and metadata features. See dataset/README.md for the full schema and baseline ML results.
To export a fresh dataset from the local DB:
python export_v6_dataset.py
Scripts in ml/ cover the full modelling pipeline:
| Script | What it does |
|---|---|
ml_embeddings.py | Computes sentence embeddings via sentence-transformers |
ml_viral_classifier.py | Baseline TF-IDF + metadata classifier |
ml_viral_v4.py / ml_viral_v5.py | Iterative model improvements |
ml_v6_combined.py | Best model: TF-IDF + embeddings + metadata (AUC 0.804) |
ml_ablation.py | Feature ablation study |
ml_feature_importance.py | SHAP feature importance |
ml_landscape.py / ml_cluster_explore.py | Embedding visualisation and clustering |
ml_experiments.py / ml_experiments_v2*.py | Hyperparameter search |
Fine-tuning experiments (LLM on confession text) live in finetune_confessit.py and unsloth-finetune.ipynb. SLURM job scripts are in ml/slurm_finetune.sh and ml/infer-slurm.sh.
The dataset and database contain unmoderated anonymous posts, including discussions of suicide, self-harm, mental health, and other sensitive topics.