Dale and Reiter, computational interpretations of the Gricean maxims (1995) #
A referring expression is a distinguishing description: a set of attribute-value pairs that all hold of the intended referent and that together rule out every member of the contrast set, which makes finding one a set-cover problem and finding a shortest one NP-hard. Dale and Reiter compare four computational readings of Grice's brevity submaxim, Full Brevity (a shortest description), Dale's Greedy Heuristic, Reiter's Local Brevity rules and their own Incremental Algorithm, which walks a fixed preference list of attributes and keeps any value that rules out a distractor not yet ruled out. They argue for the last on cost and on two psycholinguistic observations: speakers include unnecessary modifiers, which only the greedy and incremental algorithms produce, and speakers begin an expression before they have finished scanning the distractors, which only the incremental algorithm allows.
We define distinguishing descriptions and the four readings with a finite contrast set, prove that a shortest description satisfies Reiter's two rules while the greedy and incremental algorithms return unnecessary pairs on the paper's own examples, and prove that Fig. 6's output rules out every distractor, never retracts a pair and, under §4.5's accuracy user model, is a distinguishing description.
Implementation notes #
- Reiter's third rule, Lexical Preference, is not modelled.
- Fig. 6's
FindBestValuerecurses until the taxonomy has no more specific value; the descent is bounded by the domain'sdepth, which must cover the taxonomies' height. - Fig. 3 leaves ties between equally discriminating properties open;
greedytakes the first in the order ofP.
References #
Distinguishing descriptions (§2.2) #
The value an entity has for an attribute in the host's knowledge base, if it has one (§4.1).
Equations
- DaleReiter1995.KB E A V = (E → A → Option V)
Instances For
The semantic content of a referring expression, a set of attribute-value pairs (§2.2).
Equations
- DaleReiter1995.Description A V = Finset (A × V)
Instances For
The pair holds of the entity.
Equations
- DaleReiter1995.Applies kb x p = (kb x p.1 = some p.2)
Instances For
Equations
- DaleReiter1995.instDecidableAppliesOfDecidableEq kb x p = id inferInstance
Every pair of a description holds of the entity.
Equations
- DaleReiter1995.extension kb L x = ∀ p ∈ L, DaleReiter1995.Applies kb x p
Instances For
Equations
- DaleReiter1995.instDecidableExtensionOfDecidableEq kb L x = id inferInstance
A distinguishing description of r against the contrast set C holds of r and
distinguishes it from C, so that every pair holds of r and every distractor fails some
pair.
Equations
- DaleReiter1995.Distinguishing kb r C L = (DaleReiter1995.extension kb L r ∧ Reference.Distinguishes (DaleReiter1995.extension kb) C r L)
Instances For
Equations
- DaleReiter1995.instDecidableDistinguishingOfDecidableEq kb r C L = id inferInstance
The members of the contrast set a pair rules out (§2.2).
Equations
- DaleReiter1995.rulesOut kb C p = {x ∈ C | ¬DaleReiter1995.Applies kb x p}
Instances For
A description distinguishes when its pairs' rulesOut sets cover the contrast set, the
set-cover problem of §2.2.
Four interpretations of brevity (§3.1) #
A distinguishing description of least cardinality, the Full Brevity reading (§3.1.1).
Equations
- DaleReiter1995.IsShortest kb r C L = MinimalFor (DaleReiter1995.Distinguishing kb r C) Finset.card L
Instances For
A distinguishing description with two pairs is shortest once neither the empty description nor any single pair distinguishes.
A distinguishing description none of whose pairs can be dropped, Reiter's No Unnecessary Components rule (§3.1.3).
Equations
- DaleReiter1995.NoUnnecessary kb r C L = (DaleReiter1995.Distinguishing kb r C L ∧ ∀ p ∈ L, ¬DaleReiter1995.Distinguishing kb r C (Finset.erase L p))
Instances For
A description with no unnecessary pair in which no set of pairs can be replaced by a single new pair, Reiter's Local Brevity rule (§3.1.3).
Equations
- DaleReiter1995.LocallyBrief kb r C L = (DaleReiter1995.NoUnnecessary kb r C L ∧ ∀ S ⊆ L, 2 ≤ Finset.card S → ∀ (p : A × V), ¬DaleReiter1995.Distinguishing kb r C (insert p (L \ S)))
Instances For
Equations
- DaleReiter1995.instDecidableNoUnnecessary kb r C L = id inferInstance
Reiter's first rule is subset-minimality among distinguishing descriptions.
A shortest description has no unnecessary pair, so Full Brevity never includes an unnecessary modifier (§3.2.1).
A shortest description is locally brief.
Descriptions the exhaustive Full Brevity search checks, with na available attributes
and a shortest description of nl pairs (§3.1.1).
Equations
- DaleReiter1995.fullBrevitySteps na nl = ∑ i ∈ Finset.Icc 1 nl, na.choose i
Instances For
The paper's four counts, six for §2.2's example, 175, over 6,000 and over 2,000,000.
Equations
- One or more equations did not get rendered due to their size.
- DaleReiter1995.greedyAux kb 0 x✝² x✝¹ x✝ = if x✝².Nonempty then none else some x✝
Instances For
Fig. 3's Greedy Heuristic, which from the properties P true of the referent adds the
one leaving the fewest distractors, the first in P on a tie, until none remain, and fails
when P runs out.
Equations
- DaleReiter1995.greedy kb C P = DaleReiter1995.greedyAux kb P.length C P ∅
Instances For
The Incremental Algorithm (§4, Fig. 6) #
Equations
- DaleReiter1995.instDecidableEqKnowledge x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- DaleReiter1995.instReprKnowledge = { reprPrec := DaleReiter1995.instReprKnowledge.repr }
The head-noun attribute, basic-level values, value taxonomies and user model the host system supplies (§4.1).
- type : A
The attribute realized as the head noun (§2.2).
- depth : ℕ
The depth of the value taxonomies, bounding
findBestValue's descent. - basicLevel : E → A → Option V
The basic-level value of an attribute for an entity (BasicLevelValue).
- moreSpecific : E → A → V → Option V
The child of a value in the attribute's taxonomy that still subsumes the entity's own value (MoreSpecificValue).
- userKnows : E → A → V → Knowledge
What the user knows of the pair holding of the entity (UserKnows).
Instances For
A domain without value taxonomies whose user knows a pair to hold exactly when it is accurate, the user model of §4.5.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Under the accuracy user model, what the user knows is what the knowledge base records.
The remaining distractors the user knows not to bear the pair (Fig. 6, RulesOut).
Equations
- d.rulesOut C a v = {x ∈ C | d.userKnows x a v = DaleReiter1995.Knowledge.fails}
Instances For
Fig. 6's FindBestValue, the initial value when the user knows it to hold of r, refined
to a more specific value only when that rules out more distractors.
Equations
- One or more equations did not get rendered due to their size.
- d.findBestValue r C a 0 x✝ = if d.userKnows r a x✝ = DaleReiter1995.Knowledge.holds then some x✝ else none
Instances For
FindBestValue returns only values the user knows to hold of the referent.
Fig. 6's return, which always includes a head noun, the basic-level type added without a
UserKnows check.
Equations
- d.withType r L = if ∃ p ∈ L, p.1 = d.type then L else match d.basicLevel r d.type with | none => L | some b => insert (d.type, b) L
Instances For
The return never retracts a pair.
The return adds at most the basic-level head noun.
One attribute of Fig. 6's loop, whose best value is kept when it rules out a remaining distractor, those distractors being removed.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A step never retracts a pair (§4.3).
A step adds only pairs the user knows to hold of the referent.
Every distractor a step removes is ruled out by the pair the step adds.
Fig. 6's loop over the preferred attributes.
Equations
Instances For
Fig. 6's MakeReferringExpression, the Incremental Algorithm over the preferred
attributes P, failing when they run out before the contrast set does.
Equations
- d.makeReferringExpression r C P = d.loop r C P ∅
Instances For
The loop returns through withType a description that never retracts a pair, rules out
every remaining distractor and adds only pairs known to hold (§3.2.1's indelible
generation, §4.3).
Fig. 6's output rules out every member of the contrast set (§4.3).
Every pair of Fig. 6's output is known to the user to hold of the referent, except the head noun added at the end, which is the basic-level type (§4.3).
Fig. 6's output carries a head noun whenever the referent has a basic-level type (§4.3).
Under the accuracy user model the output is a distinguishing description (§2.2).
The paper's examples #
The head noun and the perceptual properties, the attributes of the paper's examples.
- type : Attr
- property (d : Degree.PropertyDomain) : Attr
Instances For
Equations
- DaleReiter1995.instDecidableEqAttr.decEq DaleReiter1995.Attr.type DaleReiter1995.Attr.type = isTrue ⋯
- DaleReiter1995.instDecidableEqAttr.decEq DaleReiter1995.Attr.type (DaleReiter1995.Attr.property d) = isFalse ⋯
- DaleReiter1995.instDecidableEqAttr.decEq (DaleReiter1995.Attr.property d) DaleReiter1995.Attr.type = isFalse ⋯
- DaleReiter1995.instDecidableEqAttr.decEq (DaleReiter1995.Attr.property a) (DaleReiter1995.Attr.property b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
- DaleReiter1995.instReprAttr.repr DaleReiter1995.Attr.type prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "DaleReiter1995.Attr.type")).group prec✝
Instances For
Equations
- DaleReiter1995.instReprAttr = { reprPrec := DaleReiter1995.instReprAttr.repr }
Equations
- DaleReiter1995.instFintypeAttr = Fintype.ofEquiv (Unit ⊕ Degree.PropertyDomain) DaleReiter1995.Attr.proxyTypeEquiv
Equations
- DaleReiter1995.instDecidableEqValue x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
- DaleReiter1995.instReprValue.repr DaleReiter1995.Value.dog prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "DaleReiter1995.Value.dog")).group prec✝
- DaleReiter1995.instReprValue.repr DaleReiter1995.Value.cat prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "DaleReiter1995.Value.cat")).group prec✝
- DaleReiter1995.instReprValue.repr DaleReiter1995.Value.bird prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "DaleReiter1995.Value.bird")).group prec✝
- DaleReiter1995.instReprValue.repr DaleReiter1995.Value.cup prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "DaleReiter1995.Value.cup")).group prec✝
- DaleReiter1995.instReprValue.repr DaleReiter1995.Value.red prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "DaleReiter1995.Value.red")).group prec✝
- DaleReiter1995.instReprValue.repr DaleReiter1995.Value.blue prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "DaleReiter1995.Value.blue")).group prec✝
Instances For
Equations
- DaleReiter1995.instReprValue = { reprPrec := DaleReiter1995.instReprValue.repr }
Equations
- DaleReiter1995.instFintypeValue = { elems := { val := ↑DaleReiter1995.Value.enumList, nodup := DaleReiter1995.Value.enumList_nodup }, complete := DaleReiter1995.instFintypeValue._proof_1 }
The two dogs and the cat (§2.2, §4.4) #
Equations
- DaleReiter1995.instDecidableEqAnimal x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- DaleReiter1995.instReprAnimal = { reprPrec := DaleReiter1995.instReprAnimal.repr }
The most specific values the system knows (§4.4).
Equations
- DaleReiter1995.Animal.object1.kb DaleReiter1995.Attr.type = some DaleReiter1995.Value.chihuahua
- DaleReiter1995.Animal.object1.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.size) = some DaleReiter1995.Value.small
- DaleReiter1995.Animal.object1.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.color) = some DaleReiter1995.Value.black
- DaleReiter1995.Animal.object2.kb DaleReiter1995.Attr.type = some DaleReiter1995.Value.chihuahua
- DaleReiter1995.Animal.object2.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.size) = some DaleReiter1995.Value.large
- DaleReiter1995.Animal.object2.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.color) = some DaleReiter1995.Value.white
- DaleReiter1995.Animal.object3.kb DaleReiter1995.Attr.type = some DaleReiter1995.Value.siameseCat
- DaleReiter1995.Animal.object3.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.size) = some DaleReiter1995.Value.small
- DaleReiter1995.Animal.object3.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.color) = some DaleReiter1995.Value.black
- x✝¹.kb x✝ = none
Instances For
The basic-level values of §2.2, dog, dog and cat.
Equations
Instances For
The taxonomy of §4.4, the breeds below their basic-level types.
Equations
Instances For
The domain of §4.4, in which the breeds are the only more specific values and the user knows a pair to hold exactly when it is accurate under the taxonomy.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The contrast set.
Equations
Instances For
The black dog and the small dog are distinguishing descriptions of Object1 (§2.2).
No single pair distinguishes Object1, so the black dog is a shortest description (§3.1.1's six steps).
The breed rules out no more distractors than the basic-level type, so FindBestValue
keeps dog (§4.4).
With the preference order type, colour, size the algorithm returns the black dog; with type, size, colour it returns the small dog (§4.4).
The seven cups (§3.1.2) #
Equations
- DaleReiter1995.instDecidableEqCup x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- DaleReiter1995.instReprCup = { reprPrec := DaleReiter1995.instReprCup.repr }
Equations
- DaleReiter1995.instReprCup.repr DaleReiter1995.Cup.object1 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "DaleReiter1995.Cup.object1")).group prec✝
- DaleReiter1995.instReprCup.repr DaleReiter1995.Cup.object2 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "DaleReiter1995.Cup.object2")).group prec✝
- DaleReiter1995.instReprCup.repr DaleReiter1995.Cup.object3 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "DaleReiter1995.Cup.object3")).group prec✝
- DaleReiter1995.instReprCup.repr DaleReiter1995.Cup.object4 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "DaleReiter1995.Cup.object4")).group prec✝
- DaleReiter1995.instReprCup.repr DaleReiter1995.Cup.object5 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "DaleReiter1995.Cup.object5")).group prec✝
- DaleReiter1995.instReprCup.repr DaleReiter1995.Cup.object6 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "DaleReiter1995.Cup.object6")).group prec✝
- DaleReiter1995.instReprCup.repr DaleReiter1995.Cup.object7 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "DaleReiter1995.Cup.object7")).group prec✝
Instances For
Size, colour and material of each cup.
Equations
- DaleReiter1995.Cup.object1.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.size) = some DaleReiter1995.Value.large
- DaleReiter1995.Cup.object1.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.color) = some DaleReiter1995.Value.red
- DaleReiter1995.Cup.object1.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.material) = some DaleReiter1995.Value.plastic
- DaleReiter1995.Cup.object2.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.size) = some DaleReiter1995.Value.small
- DaleReiter1995.Cup.object2.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.color) = some DaleReiter1995.Value.red
- DaleReiter1995.Cup.object2.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.material) = some DaleReiter1995.Value.plastic
- DaleReiter1995.Cup.object3.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.size) = some DaleReiter1995.Value.small
- DaleReiter1995.Cup.object3.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.color) = some DaleReiter1995.Value.red
- DaleReiter1995.Cup.object3.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.material) = some DaleReiter1995.Value.paper
- DaleReiter1995.Cup.object4.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.size) = some DaleReiter1995.Value.medium
- DaleReiter1995.Cup.object4.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.color) = some DaleReiter1995.Value.red
- DaleReiter1995.Cup.object4.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.material) = some DaleReiter1995.Value.paper
- DaleReiter1995.Cup.object5.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.size) = some DaleReiter1995.Value.large
- DaleReiter1995.Cup.object5.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.color) = some DaleReiter1995.Value.green
- DaleReiter1995.Cup.object5.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.material) = some DaleReiter1995.Value.paper
- DaleReiter1995.Cup.object6.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.size) = some DaleReiter1995.Value.large
- DaleReiter1995.Cup.object6.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.color) = some DaleReiter1995.Value.blue
- DaleReiter1995.Cup.object6.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.material) = some DaleReiter1995.Value.paper
- DaleReiter1995.Cup.object7.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.size) = some DaleReiter1995.Value.large
- DaleReiter1995.Cup.object7.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.color) = some DaleReiter1995.Value.blue
- DaleReiter1995.Cup.object7.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.material) = some DaleReiter1995.Value.plastic
- x✝¹.kb x✝ = none
Instances For
The contrast set for Object1.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Object1's properties in the paper's order.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The greedy heuristic selects plastic first, then large and red, giving the large red plastic cup once the head noun is added (§3.1.2).
The large red cup is the shortest description (§3.1.2).
The greedy result distinguishes Object1 but carries an unnecessary pair (§3.1.2, §3.2.1).
The white bird (§3.2.1) #
Equations
- DaleReiter1995.instDecidableEqPicture x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- DaleReiter1995.instReprPicture = { reprPrec := DaleReiter1995.instReprPicture.repr }
Type and colour of each object.
Equations
- DaleReiter1995.Picture.bird.kb DaleReiter1995.Attr.type = some DaleReiter1995.Value.bird
- DaleReiter1995.Picture.bird.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.color) = some DaleReiter1995.Value.white
- DaleReiter1995.Picture.blackCup.kb DaleReiter1995.Attr.type = some DaleReiter1995.Value.cup
- DaleReiter1995.Picture.blackCup.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.color) = some DaleReiter1995.Value.black
- DaleReiter1995.Picture.whiteCup.kb DaleReiter1995.Attr.type = some DaleReiter1995.Value.cup
- DaleReiter1995.Picture.whiteCup.kb (DaleReiter1995.Attr.property Degree.PropertyDomain.color) = some DaleReiter1995.Value.white
- x✝¹.kb x✝ = none
Instances For
The contrast set.
Equations
Instances For
The paper's speaker scans the black cup and says white, then scans the white cup and adds bird, which alone would have done (§3.2.1). The algorithm reproduces that output only with colour before type in the preference order; type first yields the bird.
The colour-first output contains an unnecessary modifier, the behaviour of Observation 1 that Full Brevity and Local Brevity never produce (§3.2.1).