PolarityVetoSignalScorer

Vetoes a merge when two propositions share an entity but assert opposite polarity about it — one states something, the other negates it ("works at Acme" vs "no longer works at Acme" / "left Acme").

This is a veto-only signal: it never contributes a positive score to the blend. When it fires it returns a zero-weight veto so CollectorEdgeAggregator flips vetoed = true without dragging the blended aggregateScore down — a vetoed edge's score should still reflect the real corroborating signals; the edge is excluded from merging by vetoed, not by its score. When it doesn't fire, it abstains (there's nothing else for this signal to say).

Limits worth knowing:

  • It only fires when the mention sets actually overlap; propositions with no mentions never trigger it, since there's no shared-subject evidence.

  • It is a lexical negation-cue scan, not a semantic model — it can misfire on cues used non-negatively ("left a message") and miss negation phrased without a cue word. It's a guard rail for opposite-polarity merges, not an NLI classifier.

Constructors

Link copied to clipboard
constructor()

Types

Link copied to clipboard
object Companion

Functions

Link copied to clipboard
open override fun score(pair: CandidatePair, contextId: <Error class: unknown class>): CollectorSignalScore?