這篇解什麼問題
沒有任何一筆標記資料、也不打算訓練的情況下,本地 LLM 零樣本分類能不能當一個堪用的方案,還是純粹陪榜。
我怎麼做
模型用 gemma4:e2b(機器上已經裝好的基準模型),透過 Ollama 本地 API 呼叫。Prompt 很直接:
Classify this tweet as describing a REAL disaster/emergency (1) or
NOT (metaphor, joke, unrelated) (0). Answer with only a single
digit, 0 or 1.
Tweet: "{text}"
Answer:
三個關鍵設定:think: false(gemma4:e2b 預設會開思考模式,這個任務不需要,關掉能省下大量推論時間)、temperature: 0(貪婪解碼,同一則推文重跑答案要一致)、num_predict: 5(答案只需要一個數字,不用留太多產出空間)。
第一階段先在跟 Route A、C 同一份驗證切分(80/20,random_state=42)裡分層抽了 199 則推文測本地驗證分數;分數出來後,為了拿到跟 A、B 一樣可比較的 Kaggle 公開分數,把完整測試集(3,263 則推文)也跑過一輪、產出正式提交檔。
結果與數據
199 筆子樣本的本地驗證 F1 是 0.76647,平均每則推文 0.61 秒、全程 0 筆解析失敗。完整測試集跑完花了 2072.3 秒(約 34.5 分鐘),提交 Kaggle 後 public leaderboard 分數是 0.77536。
對照組是 Route A(TF-IDF,public LB 0.80018)——零樣本落後不到 2.5 分,而且這個分數是在完全沒看過任何一筆這個任務的訓練資料的情況下拿到的。
一句話結論
不訓練不代表沒有用——當你不想花時間標資料或等訓練,本地 LLM 零樣本已經是一個可以直接拿來用的基準,代價只是每則推文多花零點幾秒的推論時間。