Skip to content
AITroveRead. Build. Understand.
Make this comfortable

Predicate arguments: actors, targets and negation scope

Last updated: 7 Oct 20265 min read
tutorial
AdvancedBy AITrove Editorial

A sentence can name an action without asserting that it happened. Extract the predicate, participants and scope before recording an event.

Define the event frame

“The gateway did not retry the charge” contains an actor, action and target, but it denies the action. Store the predicate span, actor span, target span, polarity, modality and source revision. An event frame is a statement made in text, not proof the system performed it. In “the charge was retried by the gateway,” grammatical subject and actor differ. Dependency structure can propose arguments, while offsets preserve what was said.

Mark scope, not just trigger words

Negation may cover one predicate while leaving another affirmative: “The worker did not send a receipt but logged the payment.” A sentence-level negative flag would erase the logging event. “May retry” describes possibility, not a completed action. Annotators need a policy for conditional clauses, quotations, reported claims and uncertain pronouns. Keep a distinct reported-by field where the speaker is not the actor.

Validate participants and identity

Link candidate actors and targets only after their spans and roles are stable. “Atlas” may be a service or dashboard, so a guessed catalog ID should not silently overwrite a mention. Entity linking can return NIL. When a document is edited, invalidate affected frames and downstream relations. A role label tied to an outdated tokenization must be regenerated rather than shifted by hand.

Evaluate as a frame

Measure predicate detection, argument span boundaries, role assignment and polarity separately. Then score whether the full frame supports the intended incident decision. A model can get actor and target right but miss “not,” reversing the outcome. Hold entire incidents out during audit. The frame decoder checks structure; the project stages these records for review.

Implementation

python
def event_frame(predicate, actor, target, polarity, source_revision):
    if not source_revision or polarity not in {"affirmed", "negated", "uncertain"}:
        raise ValueError("invalid frame evidence")
    if not predicate or not actor or not target:
        raise ValueError("missing argument")
    return {"predicate": predicate, "actor": actor, "target": target,
            "polarity": polarity, "source_revision": source_revision}

frame = event_frame("retry", "gateway", "charge ZX-47",
                    "negated", "note-r47")
assert frame["polarity"] == "negated"

Performance and operating cost

The frame check is O(1) for fixed fields; copying text spans costs their combined length. Sequence labeling or parsing cost grows with sentence length, and cross-sentence coreference adds another pass. Human review should focus on polarity and action-target errors because they can reverse an incident decision even when most spans are correct.

Common Mistakes

  • Treating every mentioned action as completed.
  • Attaching sentence-level negation to the wrong predicate.
  • Using grammatical subject as actor in passive clauses.
  • Replacing mention text with an uncertain catalog ID.

Read next

Continue the workflow: Contrastive text cases: minimal edits and gold-label contracts.

Continue the workflow: Runbook steps: actions, targets and source conditions.

ai-data
natural-language-processing
Storage details