# How to treat entity-free text in manual/match modes.

**URL:** <https://support.prodi.gy/t/how-to-treat-entity-free-text-in-manual-match-modes/1403>\
**Category:** Uncategorized\
**Tags:** usage, ner\
**Created:** [April 16, 2019, 1:48pm UTC](https://support.prodi.gy/t/how-to-treat-entity-free-text-in-manual-match-modes/1403 "2019-04-16T13:48:34Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![edward](https://avatars.discourse-cdn.com/v4/letter/e/90db22/32.png) [@edward](https://support.prodi.gy/u/edward)\
**Post date:** [April 16, 2019, 1:48pm UTC](https://support.prodi.gy/t/how-to-treat-entity-free-text-in-manual-match-modes/1403/1 "2019-04-16T13:48:34Z")

</div>

If I see text with no entities at all in `ner.manual` or `match` modes, should I:

A. Accept, leaving no text highlighted.  
B. Reject, leaving no text highlighted.  
C. Ignore, leaving no text highlighted.

Plus, what’s the difference between doing A, B or C? Generally, the controls (while great for things like `ner.teach`) don’t seem intuitive/well-suited to these workflows - unless I’m missing something!

---

<div class="post-metadata">

**Author:** ![ines](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/ines/32/3_2.png) [@ines](https://support.prodi.gy/u/ines)\
**Post date:** [April 16, 2019, 3:42pm UTC](https://support.prodi.gy/t/how-to-treat-entity-free-text-in-manual-match-modes/1403/2 "2019-04-16T15:42:34Z")

</div>

This is a good question and actually a very important one. TL;DR answer: You should pretty much always accept examples with no entities if the text doesn’t actually contain any entities.

Training your model with examples of entities _and_ examples of what’s not an entity / texts without any entities is very important – you don’t want it to overfit and “hallucinate” entities because it’s never seen a single example without entity annotations during training.

Accepting an example will include it in the training data. Ignoring an example will _always_ exclude it from the training and evaluation data – so you should only really do that for examples that are to difficult to answer, weird, broken etc. How rejected examples are handled depends on how you’re training the model later on. If you’re training it from binary accept/reject examples, the accepted and rejected examples will help construct the best possible analysis given your feedback. You can see some examples of that [in my slides here](https://speakerdeck.com/inesmontani/belgium-nlp-meetup-rapid-nlp-annotation-through-binary-decisions-pattern-bootstrapping-and-active-learning?slide=12). This means that the model can be updated accordingly, even if you haven’t collected annotations about _every single token_. If you’re training from manual annotations and set the `--no-missing` flag, spaCy will assume that the data is “gold standard” and that the annotated entities are the only entities present in the data and all other tokens are `O` (outside an entity). So only the accepted answers will be used and they’ll be treated as the perfect and “final” analysis. If an accepted text has no entities highlighted, this will be interpreted as “this text has no entities”.
