# textcat.teach surprising UI for multilabel

**URL:** <https://support.prodi.gy/t/textcat-teach-surprising-ui-for-multilabel/6182>\
**Category:** Uncategorized\
**Created:** [December 13, 2022, 6:46am UTC](https://support.prodi.gy/t/textcat-teach-surprising-ui-for-multilabel/6182 "2022-12-13T06:46:23Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![claycwardell](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/claycwardell/32/3456_2.png) [@claycwardell](https://support.prodi.gy/u/claycwardell)\
**Post date:** [December 13, 2022, 6:46am UTC](https://support.prodi.gy/t/textcat-teach-surprising-ui-for-multilabel/6182/1 "2022-12-13T06:46:23Z")

</div>

Ran the following command:

```python
prodigy textcat.teach insults-w-negs-4 blank:en ~/datasets/reddit-comment-corpus/RC_2011-08.bz2 --loader reddit --label NOT_INSULT,INSULT,AWESOME

```

The UI at `localhost:8080` shows this:

 ![image](https://us1.discourse-cdn.com/flex020/uploads/prodigy/original/2X/7/7fedbd4226b0a458a0d2b3df7a200206c2e5f2ec.png)

I would have thought I'd get three options in the same way that you do for textcat.manual. Am I misunderstanding?

---

<div class="post-metadata">

**Author:** ![koaning](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/koaning/32/230_2.png) [@koaning](https://support.prodi.gy/u/koaning)\
**Post date:** [December 13, 2022, 10:34am UTC](https://support.prodi.gy/t/textcat-teach-surprising-ui-for-multilabel/6182/2 "2022-12-13T10:34:25Z")

</div>

When you go to the [docs](https://prodi.gy/docs/recipes#textcat-teach) you can confirm that the `textcat.teach` recipe is a **binary** interface. That means that it only gives you the option to say weather or not the current prediction is correct.

 ![CleanShot 2022-12-13 at 11.33.53](https://us1.discourse-cdn.com/flex020/uploads/prodigy/original/2X/7/7a84f58b528daf1bbe9176bfd86cd87b44c8b8b2.png)

You could alternatively use `textcat.correct` if you'd like a full manual interface where you can correct the model.

---

<div class="post-metadata">

**Author:** ![claycwardell](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/claycwardell/32/3456_2.png) [@claycwardell](https://support.prodi.gy/u/claycwardell)\
**Post date:** [December 13, 2022, 3:13pm UTC](https://support.prodi.gy/t/textcat-teach-surprising-ui-for-multilabel/6182/3 "2022-12-13T15:13:52Z")

</div>

Thanks for clarifying. So in that case, what is the intended use case of passing multiple labels to textcat.teach? Error messaging suggests textcat.teach requires _at least_ one --label, and it runs fine on 3 -- what is it doing with them if the UI only gives me the option to accept or reject?

---

<div class="post-metadata">

**Author:** ![koaning](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/koaning/32/230_2.png) [@koaning](https://support.prodi.gy/u/koaning)\
**Post date:** [December 15, 2022, 9:16am UTC](https://support.prodi.gy/t/textcat-teach-surprising-ui-for-multilabel/6182/4 "2022-12-15T09:16:06Z")

</div>

A binary interface doesn't imply that there is only one label. A binary interface merely implies that what is on display is either correct or wrong. Maybe these examples help make clarify the expectations a bit.

## Binary vs. Manual in NER

For example, this is an interface for `ner.correct`. This allows you to take the model output and to correct. In the case of NER, you can still assign multiple labels to the text because this is a manual interface.

 ![CleanShot 2022-12-15 at 10.05.50](https://us1.discourse-cdn.com/flex020/uploads/prodigy/original/2X/6/683672f0eb4b55e058dd0b8a82d0139fe7a3f6dd.png)

But now consider [ner.teach](https://prodi.gy/docs/recipes#ner-teach). This just shows one annotation at a time and you can only tell the interface if the current annotation is correct or not.

 ![CleanShot 2022-12-15 at 10.06.57](https://us1.discourse-cdn.com/flex020/uploads/prodigy/original/2X/f/f043148597a2692933297fe819d26fb5efeb9057.png)

The binary interfaces are less expressive, but annotate a whole lot quicker because each example is a simple yes/no.

## Binary vs. Manual in Textcat

Let's now consider how this would work for text classification. This is one example for [textcat.correct](https://prodi.gy/docs/recipes/#textcat-correct). This is a manual interface, and it allows you to select each class individually.

 ![CleanShot 2022-12-15 at 10.08.55](https://us1.discourse-cdn.com/flex020/uploads/prodigy/original/2X/5/54162d2a75cd500a8ed22f558b0350154984c2e2.png)

But now, let's consider [textcat.teach](https://prodi.gy/docs/recipes/#textcat-teach). That would look like this:

 ![CleanShot 2022-12-15 at 10.13.22](https://us1.discourse-cdn.com/flex020/uploads/prodigy/original/2X/e/e6289bc031875b31fa90efef4c409747e53be7a5.png)

Again, this is a binary interface and you'd only be able to say if it is correct or not. Again, it's less expressive, but it's faster to annotate because it's a yes/no decision. Note that in this case you'd still be able to attach more than one class to an example, but each class would pop up in a separate example. Typically these classes would be suggested by a spaCy model that tries to predict the examples.

Does this help?

---

<div class="post-metadata">

**Author:** ![claycwardell](https://sea2.discourse-cdn.com/flex020/user_avatar/support.prodi.gy/claycwardell/32/3456_2.png) [@claycwardell](https://support.prodi.gy/u/claycwardell)\
**Post date:** [December 15, 2022, 1:15pm UTC](https://support.prodi.gy/t/textcat-teach-surprising-ui-for-multilabel/6182/5 "2022-12-15T13:15:27Z")

</div>

> Does this help?

Yep, thank you.
