I don't have an answer to the main question, but from the examples it seems that "have" and "be" only contract when they're used as an auxiliary. That is, they proceed another verb. Maybe something in POS tagging them, then checking if they're followed by a verb?

Edit: Nope, your second positive example disagrees with this.