updated rating
This commit is contained in:
parent
10162064ff
commit
93087001f9
@ -1348,6 +1348,7 @@ func computeHighlightRatingWithUsername(segments []aiSegmentMeta, durationSec fl
|
|||||||
var totalWeighted float64
|
var totalWeighted float64
|
||||||
|
|
||||||
var positionEffectiveWeighted float64
|
var positionEffectiveWeighted float64
|
||||||
|
var positionFlagged float64
|
||||||
var peakQuality float64
|
var peakQuality float64
|
||||||
|
|
||||||
var longest float64
|
var longest float64
|
||||||
@ -1395,6 +1396,7 @@ func computeHighlightRatingWithUsername(segments []aiSegmentMeta, durationSec fl
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
positionEffectiveWeighted += effectiveWeightedDur
|
positionEffectiveWeighted += effectiveWeightedDur
|
||||||
|
positionFlagged += segDur
|
||||||
|
|
||||||
if quality > peakQuality {
|
if quality > peakQuality {
|
||||||
peakQuality = quality
|
peakQuality = quality
|
||||||
@ -1424,17 +1426,22 @@ func computeHighlightRatingWithUsername(segments []aiSegmentMeta, durationSec fl
|
|||||||
positionDensityNorm := ratingSoftCap(positionDensity, 5.5)
|
positionDensityNorm := ratingSoftCap(positionDensity, 5.5)
|
||||||
coverageNorm := ratingSoftCap(weightedCoverageRatio, 0.20)
|
coverageNorm := ratingSoftCap(weightedCoverageRatio, 0.20)
|
||||||
longestNorm := ratingSoftCap(longest, 24.0)
|
longestNorm := ratingSoftCap(longest, 24.0)
|
||||||
|
positionDurationNorm := ratingSoftCap(positionFlagged, 45.0)
|
||||||
confNorm := ratingSmoothStep((avgConfidence - 0.30) / 0.65)
|
confNorm := ratingSmoothStep((avgConfidence - 0.30) / 0.65)
|
||||||
|
|
||||||
// Positionen dominieren. Kleidung/Objekte fließen durch Combo-Segment-Qualität (peakNorm) ein.
|
// Positionen dominieren. Kleidung/Objekte fließen durch Combo-Segment-Qualität (peakNorm) ein.
|
||||||
|
// Die Länge der erkannten Positionen wird bewusst stark gewichtet:
|
||||||
|
// längstes Positions-Segment (longestNorm) + Gesamtdauer aller Positionen (positionDurationNorm).
|
||||||
|
// Je länger eine Position erkannt wird, desto höher der Score.
|
||||||
// Keine Penalties, keine Caps – die Formel bewertet natürlich nach Positions-Intensität.
|
// Keine Penalties, keine Caps – die Formel bewertet natürlich nach Positions-Intensität.
|
||||||
// Summe = 1.00.
|
// Summe = 1.00.
|
||||||
raw :=
|
raw :=
|
||||||
0.42*positionDensityNorm +
|
0.34*positionDensityNorm +
|
||||||
0.26*peakNorm +
|
0.22*peakNorm +
|
||||||
0.18*coverageNorm +
|
0.13*coverageNorm +
|
||||||
0.08*longestNorm +
|
0.16*longestNorm +
|
||||||
0.06*confNorm
|
0.11*positionDurationNorm +
|
||||||
|
0.04*confNorm
|
||||||
|
|
||||||
// Sehr wenig Material nicht überbewerten.
|
// Sehr wenig Material nicht überbewerten.
|
||||||
if totalFlagged < 5.0 && n <= 1 {
|
if totalFlagged < 5.0 && n <= 1 {
|
||||||
@ -1469,13 +1476,14 @@ func computeHighlightRatingWithUsername(segments []aiSegmentMeta, durationSec fl
|
|||||||
r.AvgConfidence = ratingRound(avgConfidence, 3)
|
r.AvgConfidence = ratingRound(avgConfidence, 3)
|
||||||
|
|
||||||
appLogf(
|
appLogf(
|
||||||
"✅ %s rating score=%.1f stars=%d bonus=%.1f segs=%d flagged=%.1f posDensity=%.2f coverage=%.4f longest=%.1f avgConf=%.3f",
|
"✅ %s rating score=%.1f stars=%d bonus=%.1f segs=%d flagged=%.1f posFlagged=%.1f posDensity=%.2f coverage=%.4f longest=%.1f avgConf=%.3f",
|
||||||
ratingLogSubject(username),
|
ratingLogSubject(username),
|
||||||
r.Score,
|
r.Score,
|
||||||
r.Stars,
|
r.Stars,
|
||||||
ratingRound(excellenceBonus*100, 1),
|
ratingRound(excellenceBonus*100, 1),
|
||||||
r.Segments,
|
r.Segments,
|
||||||
r.FlaggedSeconds,
|
r.FlaggedSeconds,
|
||||||
|
ratingRound(positionFlagged, 1),
|
||||||
positionDensity,
|
positionDensity,
|
||||||
r.WeightedCoverageRatio,
|
r.WeightedCoverageRatio,
|
||||||
r.LongestSegmentSeconds,
|
r.LongestSegmentSeconds,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user