Sammanfattning och översättning
Kunna använda och utvärdera generativa modeller för sammanfattning och översättning.
Förkunskaper
Intuition
Två sorters sammanfattning:
- Extraktiv — välj ut meningar ur originalet. Kan inte hallucinera, men blir hackig.
- Abstraktiv — skriv nytt. Flyter bättre, kan hitta på.
För abstraktiv sammanfattning är trohet (faithfulness) det verkliga problemet: sammanfattningen låter bra men innehåller påståenden som inte finns i källan, eller vänder på ett negerat påstående.
Måtten och vad de duger till:
| Mått | Mäter | Svaghet |
|---|---|---|
| ROUGE | n-gram-överlapp med referens | belönar kopiering, blind för fakta |
| BLEU | precision av n-gram (översättning) | samma problem |
| chrF | teckenbaserad — bättre för svenska | fortfarande ytlig |
| BERTScore | semantisk likhet via embeddings | ser inte faktafel |
| COMET | inlärt kvalitetsmått för översättning | bäst korrelation med människor |
| LLM-domare mot källan | trohet per påstående | kostar, måste kalibreras |
ROUGE ensamt säger nästan ingenting om huruvida sammanfattningen är sann.
Kod
import json
TROHET = """Dela SAMMANFATTNINGEN i påståenden. För varje: stöds det av KÄLLAN?
Svara JSON: {"pastaenden": [{"text": "...", "stods": true|false, "varfor": "..."}]}"""
def utvardera_sammanfattning(llm, kalla, sammanfattning):
d = json.loads(llm(f"{TROHET}\n\nKÄLLA:\n{kalla}\n\nSAMMANFATTNING:\n{sammanfattning}",
temperature=0, json_mode=True))
p = d["pastaenden"]
return {"trohet": sum(x["stods"] for x in p) / max(len(p), 1),
"ogrundade": [x["text"] for x in p if not x["stods"]],
"komprimering": round(len(sammanfattning.split()) / max(len(kalla.split()), 1), 3)}
# Översättning: chrF fungerar bättre än BLEU för svenska (morfologirik)
from sacrebleu import CHRF, BLEU
ref = [["Katten sover på mattan."]]
hyp = ["Katten ligger och sover på mattan."]
print(round(BLEU().corpus_score(hyp, ref).score, 1),
round(CHRF().corpus_score(hyp, ref).score, 1)) # 25.9 68.4
Exemplet visar problemet: översättningen är i praktiken korrekt, men BLEU ger 26 av 100 eftersom orden inte är identiska. chrF ser att tecknen överlappar; en människa hade sagt «bra».
Praktisk regel: använd automatiska mått för att upptäcka regressioner mellan versioner, och trohetsdomare plus mänskligt stickprov för att avgöra kvalitet.
Behärskning innebär
- Använder generativa modeller för sammanfattning och översättning
- Utvärderar med rätt mått och vet deras svagheter
- Hanterar trohet och hallucination
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- arXiv — SummEval: Re-evaluating Summarization Evaluation — arXiv (öppen åtkomst; licens per artikel)
- sacreBLEU (Apache-2.0) — Apache-2.0