Accept or reject partial pattern match under condition?

Ideally, you should always reject partial matches – especially if your goal is to train a model later on. Otherwise, you can easily end up with conflicting annotations, or with annotations that express the wrong thing. Rejecting is better than ignoring, because it allows you to define more fine-grained constraints for that particular context. Even if the partial match might be correct in a different context, in this context it's not.

If you accept a partial match on, say, "I live at 456 Def Street NW", the feedback the model gets is "In contexts like this, the analysis ['?', '?', '?', 'B-ADDR', 'I-ADDR', 'L-ADDR', '?']" is definitely correct." That's obviously bad, and you'd rather want to give the feedback ['?', '?', '?', '?', '?', '?', '?'] and in the next step, confirm ['?', '?', '?', 'B-ADDR', 'I-ADDR', 'I-ADDR', 'L-ADDR'] for this particular example and context. Even if for some reason you don't see a suggestion for the correct analysis, the model is still more likely to learn the right thing and end up producing the correct analysis (because you've explicitly rejected the incorrect partial one).

Btw, this thread also has more background on how the sparse annotations are interpreted: