Yes, you are right. I am concerned about the entries where multiple labels get combined into one entry on the .accept
key.
Here is one of the full lines from the JSONL with that thing occuring:
{
"text": "REDACTED",
"meta": {
"id": REDACTED,
"created_at": "REDACTED",
"counter_holder": "REDACTED",
"amount": REDACTED
},
"options": [
{
"id": "Aufzüge",
"text": "Aufzüge"
},
{
"id": "Bank- & Kontoführungsgebühren",
"text": "Bank- & Kontoführungsgebühren"
},
{
"id": "Beleuchtung/Strom",
"text": "Beleuchtung/Strom"
},
{
"id": "Entwässerung",
"text": "Entwässerung"
},
{
"id": "Gebäudereinigung",
"text": "Gebäudereinigung"
},
{
"id": "Grundsteuer",
"text": "Grundsteuer"
},
{
"id": "Hausgeld",
"text": "Hausgeld"
},
{
"id": "Heizkosten",
"text": "Heizkosten"
},
{
"id": "Heizkostenvorauszahlung",
"text": "Heizkostenvorauszahlung"
},
{
"id": "Instandhaltungskosten",
"text": "Instandhaltungskosten"
},
{
"id": "Kaltmiete",
"text": "Kaltmiete"
},
{
"id": "Kaltwasser",
"text": "Kaltwasser"
},
{
"id": "Kaution",
"text": "Kaution"
},
{
"id": "Modernisierungskosten",
"text": "Modernisierungskosten"
},
{
"id": "Müllabfuhr",
"text": "Müllabfuhr"
},
{
"id": "Nachzahlung aus Nebenkostenabrechnung",
"text": "Nachzahlung aus Nebenkostenabrechnung"
},
{
"id": "Nebenkostenvorauszahlung",
"text": "Nebenkostenvorauszahlung"
},
{
"id": "Rückzahlung Kaution",
"text": "Rückzahlung Kaution"
},
{
"id": "Sach- & Haftpflichtversicherungen",
"text": "Sach- & Haftpflichtversicherungen"
},
{
"id": "Schornsteinfeger",
"text": "Schornsteinfeger"
},
{
"id": "Sonstige Ausgaben",
"text": "Sonstige Ausgaben"
},
{
"id": "Sonstige Einnahmen",
"text": "Sonstige Einnahmen"
},
{
"id": "Sonstige Kosten",
"text": "Sonstige Kosten"
},
{
"id": "Sonstige Nebenkosten",
"text": "Sonstige Nebenkosten"
},
{
"id": "Straßenreinigung",
"text": "Straßenreinigung"
},
{
"id": "TV/Fernsehen",
"text": "TV/Fernsehen"
},
{
"id": "Tilgung",
"text": "Tilgung"
},
{
"id": "Werbungskosten",
"text": "Werbungskosten"
},
{
"id": "Zinsen",
"text": "Zinsen"
}
],
"accept": [
"Nebenkostenvorauszahlung, Kaltmiete, Kaltmiete, Nebenkostenvorauszahlung"
],
"config": {
"choice_style": "multiple"
},
"answer": "accept",
"_input_hash": 1183031980,
"_task_hash": 1872175840
}
As stated earlier the only thing that I did to actuall get those entries into the JSONL file was calling:
prodigy db-out bank_turnovers_categorization > assets/bank_turnovers_categorization_annotated.jsonl
And there is not one, but a lot of those entries:
jq -n '[inputs | .accept] | add | group_by(.) | map({key: .[0], value: length}) | from_entries' assets/bank_turnovers_categorization_annotated.jsonl
{
"Bank- & Kontoführungsgebühren": 4,
"Beleuchtung/Strom": 81,
"Entwässerung": 161,
"Entwässerung, Kaltwasser": 3,
"Gebäudereinigung": 10,
"Grundsteuer": 253,
"Hausgeld": 3,
"Hausgeld, Hausgeld": 3,
"Hausgeld, Hausgeld, Instandhaltungskosten": 2,
"Hausgeld, Instandhaltungskosten, Hausgeld": 1,
"Heizkosten": 65,
"Heizkostenvorauszahlung, Kaltmiete, Nebenkostenvorauszahlung": 48,
"Heizkostenvorauszahlung, Nebenkostenvorauszahlung, Kaltmiete": 42,
"Instandhaltungskosten": 63,
"Kaltmiete": 1057,
"Kaltmiete, Heizkostenvorauszahlung, Nebenkostenvorauszahlung": 45,
"Kaltmiete, Nebenkostenvorauszahlung": 148,
"Kaltmiete, Nebenkostenvorauszahlung, Heizkostenvorauszahlung": 31,
"Kaltmiete, Nebenkostenvorauszahlung, Heizkostenvorauszahlung, Nebenkostenvorauszahlung, Kaltmiete, Heizkostenvorauszahlung, Nebenkostenvorauszahlung, Heizkostenvorauszahlung, Kaltmiete, Heizkostenvorauszahlung, Nebenkostenvorauszahlung, Kaltmiete, Heizkostenvorauszahlung, Nebenkostenvorauszahlung, Kaltmiete, Heizkostenvorauszahlung, Nebenkostenvorauszahlung, Kaltmiete": 1,
"Kaltwasser": 177,
"Kaltwasser, Sonstige Nebenkosten": 1,
"Kaution": 75,
"Mietminderung": 4,
"Modernisierungskosten": 14,
"Müllabfuhr": 20,
"Nachzahlung aus Nebenkostenabrechnung": 5,
"Nebenkostenvorauszahlung": 90,
"Nebenkostenvorauszahlung, Heizkostenvorauszahlung, Kaltmiete": 38,
"Nebenkostenvorauszahlung, Kaltmiete": 156,
"Nebenkostenvorauszahlung, Kaltmiete, Heizkostenvorauszahlung": 45,
"Nebenkostenvorauszahlung, Kaltmiete, Kaltmiete, Nebenkostenvorauszahlung": 1,
"Nebenkostenvorauszahlung, Kaltmiete, Nebenkostenvorauszahlung, Kaltmiete": 1,
"Privat": 833,
"Rückzahlung Kaution": 50,
"Sach- & Haftpflichtversicherungen": 140,
"Schornsteinfeger": 1,
"Sonstige Ausgaben": 12,
"Sonstige Ausgaben, Aufzüge": 1,
"Sonstige Einnahmen": 9,
"Sonstige Kosten": 1,
"Sonstige Nebenkosten": 39,
"Sonstige Nebenkosten, Sonstige Ausgaben, Sonstige Nebenkosten, Sonstige Nebenkosten, Sonstige Nebenkosten, Sonstige Nebenkosten, Instandhaltungskosten, Sonstige Nebenkosten, Sonstige Nebenkosten, Sonstige Nebenkosten, Sonstige Nebenkosten, Sonstige Nebenkosten": 1,
"Straßenreinigung": 8,
"TV/Fernsehen": 114,
"Tilgung": 730,
"Tilgung, Zinsen": 18,
"Werbungskosten": 229,
"Zinsen": 703,
"Zinsen, Tilgung": 11
}
In order to label them I followed the manual by adding only few labels at a time, like this:
prodigy textcat.manual bank_turnovers_categorization assets/bank_turnovers_versicherung.jsonl --label "Sach- & Haftpflichtversicherungen,Werbungskosten,Privat"
Later I resorted to incoporated an LLM to help:
prodigy textcat.llm.correct bank_turnovers_categorization configs/spacy_textcat_llm_config.cfg assets/bank_turnovers_miete.jsonl