# Textcat.teach with Multiple Choice & Update Model

**URL:** <https://support.prodi.gy/t/textcat-teach-with-multiple-choice-update-model/2533>\
**Category:** Uncategorized\
**Tags:** textcat, spacy\
**Created:** [February 11, 2020, 10:34am UTC](https://support.prodi.gy/t/textcat-teach-with-multiple-choice-update-model/2533 "2020-02-11T10:34:56Z")\
**Posts on this page:** 1\
**Showing post:** 2

<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:** [February 11, 2020, 4:16pm UTC](https://support.prodi.gy/t/textcat-teach-with-multiple-choice-update-model/2533/2 "2020-02-11T16:16:05Z")

</div>

Hi! To update the annotation model, you can call `model.update` with a batch of examples in Prodigy's format. Since your recipe is creating predict/update functions depending on whether you're using patterns or not, you probably want to be using that `update` function. For example:

```python
if patterns is None:
    # etc.
    predict = model
    update = model.update
else:
    # etc.
    predict, update = combine_models(model, matcher)

def review_answers(answers):
    update(answers)

```

Alternatively, you could also create a [spaCy text classifier](https://spacy.io/usage/training#textcat) directly and then update that, just like you'd update it during training (by calling `nlp.update` with texts and annotations). This removes one layer of abstraction introduced by Prodigy's annotation model, and makes it easier to see what's going on.

(The annotation model helps dealing with binary accept/reject annotations, converting data etc., but in your case, the annotation part is pretty straightforward: you have multiple choice options, and it's pretty clear what the annotations "mean" and how you want to use them to update your model.)

> [@cathmora](#):
>
> I am also able to update the answer before is written to the DB so I can correct the label before it is written to the DB it in case the prediction was not correct.

Note that any modifications you make to the `answers` in the `update` callback won't be reflected in the database – the annotations in the dataset will always match whatever the annotator saw and created. This is by design, because it'd otherwise be too easy to accidentally overwrite your annotations in place when performing the update and potentially destroying datapoints.

---

_[View the full topic](https://support.prodi.gy/t/textcat-teach-with-multiple-choice-update-model/2533)._
