CodeNER: Code Prompting for Named Entity Recognition
Dit paper introduceert CodeNER, een nieuwe methode die code-gebaseerde prompting gebruikt om grote taalmodellen beter in staat te stellen om Named Entity Recognition uit te voeren door BIO-schema-instructies expliciet te structureren, wat resulteert in betere prestaties dan traditionele tekstgebaseerde prompting op diverse datasets.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
CodeNER: Hoe programmeertaal helpt om namen in teksten te vinden
Stel je voor dat je een enorme berg brieven krijgt en je taak is om elke naam van een persoon, plaats of organisatie eruit te halen. Dit heet in de computerwereld Named Entity Recognition (NER). Vroeger deden computers dit met speciale regels, maar nu gebruiken we slimme "Large Language Models" (LLMs) – denk aan super-intelligente chatbots zoals ChatGPT – die dit voor ons kunnen doen.
Het probleem? Deze slimme chatbots zijn geweldig in het praten en redeneren, maar ze hebben moeite met de specifieke regels van het "naam-vinden-spel".
Het probleem: De vertaler die de regels niet kent
Stel je voor dat je een vertaler vraagt: "Haal alle namen uit deze tekst."
De vertaler (de chatbot) leest de tekst en zegt: "Ah, 'New York' is een stad!" Maar soms maakt hij fouten. Hij vergeet dat een naam uit meerdere woorden bestaat, of hij labelt een woord twee keer, of hij mist een naam helemaal omdat hij de tekst te snel "overziet" in plaats van woord voor woord te bekijken.
De reden? Chatbots zijn getraind om tekst in te voeren en tekst uit te geven. Ze denken in zinnen. Maar het taakje "namen vinden" vereist een heel specifiek systeem: elk woord moet een label krijgen (bijvoorbeeld: "B-PER" voor het begin van een persoonsnaam, "I-PER" voor het volgende woord in die naam, en "O" voor woorden die geen naam zijn).
Het is alsof je iemand vraagt om een muur te schilderen, maar je geeft hem alleen de opdracht "schilder de muur", zonder te zeggen dat hij elke steen apart moet behandelen. De muur wordt dan wel geschilderd, maar de details (de voegen tussen de stenen) gaan verloren.
De oplossing: CodeNER (De bouwpakket-methode)
De auteurs van dit paper, CodeNER, hebben een slimme oplossing bedacht. In plaats van de chatbot gewoon een tekstopdracht te geven, geven ze de opdracht in de vorm van computercode (zoals Python).
De analogie:
Stel je voor dat je een chatbot vraagt om een taak te doen.
- De oude manier (Tekst): Je zegt: "Lees deze tekst en geef me de namen." De chatbot denkt: "Oké, ik ga kijken wat er belangrijk is." Hij kan de regels vergeten.
- De nieuwe manier (CodeNER): Je zegt: "Hier is een programma. Loop door elke letter van de tekst heen. Als je een naam ziet, schrijf 'B-NAAM' erbij. Als het volgende woord nog bij die naam hoort, schrijf 'I-NAAM'. Doe dit voor elk woord."
Door de opdracht te verpakken in code, dwingen ze de chatbot om te denken zoals een computerprogramma: stap-voor-stap, woord-voor-woord.
Waarom werkt dit zo goed?
- De "Lus" (For-loop): In programmeertaal is er een constructie genaamd een "for-loop". Dit is een instructie die zegt: "Doe dit voor elk item in deze lijst." Door de chatbot te vragen om een loop te schrijven, dwing je hem om elk woord in de zin één voor één te bekijken en te labelen. Hij kan niet meer "over het algemeen" kijken; hij moet de details doen.
- Structuur: Code is strak en logisch. Het is als een bouwtekening. Waar natuurlijke taal soms vaag kan zijn ("zoek de belangrijke namen"), is code exact ("voor elk woord in de zin: controleer of het een naam is").
- Geen dubbele labels: Omdat de chatbot nu "stap-voor-stap" werkt, labelt hij geen woord twee keer en mist hij geen woorden die dicht bij elkaar staan.
Wat hebben ze ontdekt?
De onderzoekers hebben hun methode getest op tien verschillende datasets in talen als Engels, Arabisch, Fins, Deens en Duits.
- Resultaat: CodeNER deed het over het algemeen veel beter dan de oude tekst-methode. De chatbots maakten minder fouten bij het vinden van de grenzen van namen (bijvoorbeeld: weten dat "New York" één entiteit is en niet twee losse woorden).
- De uitzondering: Soms, als een naam een hele lange zin is (zoals in filmrecensies waar hele zinnen als "Plot" worden gemarkeerd), werkt de oude tekst-methode soms nog net iets beter. Maar voor de meeste taken is de code-methode de winnaar.
Conclusie
Kortom: CodeNER is een slimme truc. Het gebruikt de kracht van programmeertaal om een chatbot te dwingen om de regels van het "namen vinden-spel" strikt te volgen. Het is alsof je een kunstenaar (de chatbot) niet vraagt om "een mooi schilderij te maken", maar hem een exacte bouwtekening (code) geeft zodat hij elke steen op de juiste plek zet.
Dit maakt de AI veel slimmer in het begrijpen van de fijne details van taal, zonder dat we de AI zelf hoeven te herscholen. We geven hem gewoon een betere "handleiding" in de taal die hij het beste begrijpt: code.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.