Custom textcat.manual to account for many labels

I have a textcat task where I have ~20 labels. Due to the many labels I prefer view_id: classification but with the possibility to change the suggested label. Is that possible? The view_id: choice isn't really convenient with 10+ labels - both visually and since the keyboard shortcuts doesn't work for all labels.

I'd imagine this is a very common task so I wonder if somebody have come up with a good recipe?

The keyboard shortcuts technically work for up to with shift and shift+alt:

The numbers 1 to 9 map to the options 1 through 9, and 0 maps to option 10. For interfaces with more than 10 options, e.g. manual annotation with larger label sets, the options 11 though 20 are available via shift+num and 21 through 30 via shift+alt+num. For example, shift+6 will select option 16, and shift+alt+0 option 30.

Although, I agree that large label lists are just not very convenient, even if you can make it work with the keyboard shortcuts. Here's a section from the new docs (hopefully live tomorrow :crossed_fingers:) on how to handle large label schemes without actually displaying all labels at the same time:

If you're working on a task that involves more than 10 or 20 labels, it's often better to break the annotation task up a bit more, so that annotators don't have to remember the whole annotation scheme. Remembering and applying a complicated annotation scheme can slow annotation down a lot, and lead to much less reliable annotations. Because Prodigy is programmable, you don't have to approach the annotations the same way you want your models to work. You can break up the work so that it's easy to perform reliably, and then merge everything back later when it's time to train your models.

If your annotation scheme is mutually exclusive (that is, texts receive exactly one label), you'll often want to organize your labels into a hierarchy, grouping similar labels together. For instance, let's say you're working on a chat bot that supports 200 different intents. Choosing between all 200 intents will be very difficult, so you should do a first pass where you annotate much more general categories. You'd then take all the texts annotated for some general type, such as information, and set up a new annotation task to sort them into more specific subtypes. This lets the annotators study up on that part of the annotation scheme, so they can make more reliable decisions.

If you definitely want to show labels at the same time, you could use the choice interface with some custom CSS that aligns the options over multiple columns. Or you could add a fully custom interface with a dropdown and custom JavaScript that calls window.prodigy.update with the value of the selected option, if the <select> value changes.

1 Like