Kreisā galda
2 COCOGEN: Pārstāvot Commonsense struktūras ar kodu un 2.1 Konvertējot (T, G) uz Python kodu
2.2 Daži izsaukumi, lai ģenerētu G
3 Novērtējums un 3.1 Eksperimentālā uzstādīšana
3.2 Skriptu ģenerācija: PROSCRIPT
3.3 Entitātes stāvokļa izsekošana: PROPARA
3.4 Argumentu grafika ģenerācija: EXPLAGRAPHS
6 Secinājums, atzinumi, ierobežojumi un atsauces
A Few-shot modeļu izmēru aprēķini
G - strukturēta uzdevuma Python klases izstrāde
2 COCOGEN: Pārstāvot Commonsense struktūras ar kodu
Katrs šādu uzdevumu apmācības piemērs ir veidlapā (T, G), kur T ir teksta ievade, un G ir struktūra, kas tiek ģenerēta (parasti grafiks). COCOGEN galvenā ideja ir pārveidot izejas grafiku G par semantiski līdzvērtīgu programmu Gc, kas rakstīts vispārējas nozīmes programmēšanas valodā. Šajā darbā mēs izvēlējāmies Python, jo tas ir populārs mūsdienu CodeLLM (Xu et al., 2022), bet mūsu pieeja ir agnostika programmēšanas valodai. Koda pārveidotie grafiki ir līdzīgi formātā Code-MLL priekšapmācības datiem, un tādējādi kalpo kā vieglāk ģeneralizēt apmācību vai dažus šāvienu piemērus nekā oriģināls grafiks. COCOGEN izmanto Code
Mēs izmantojam skriptu ģenerēšanas uzdevumu (PROSCRIPT, 1. attēls) kā piemēru, lai motivētu mūsu metodi: skriptu ģenerēšanas mērķis ir izveidot skriptu (G), lai sasniegtu noteiktu augsta līmeņa mērķi (T).
2.1 Konvertēšana (T, G) uz Python kodu
Mēs pārvēršam (T, G) pāru Python klasē vai funkcijā. Vispārējā procedūra ietver ievades teksta T pievienošanu koda sākumā kā klases atribūtu vai aprakstošu komentāru un kodēšanu struktūru G, izmantojot standarta konstrukcijas, lai pārstāvētu struktūru kodā (piemēram, hashmaps, objekta atribūti) vai funkciju zvanus.
Piemēram, skripta ģenerēšanas uzdevumam mēs pārveidojam (T, G) pāru uz Tree klasi (Figure 1b). Mērķis T tiek pievienots kā klases atribūts (mērķis), un skripts G tiek pievienots, atsevišķi uzskaitot mezglus un malās. Mēs vispirms instantizējam mezglu sarakstu kā klases mezglu objektus. Tad malās tiek pievienoti kā katra mezgla atribūts bērni (Figure 1b). Piemēram, mēs instantizējam mezglu “Izņemt vairākas plāksnes” kā take_out_several_plates = Node(), un pievienojam to kā mezgla take_pies_out_to_cool.
Lai gan ir vairāki veidi, kā pārstāvēt apmācības piemēru kā Python klasi, mēs empīmiski konstatējām, ka šis salīdzinoši vienkāršais formāts ir visefektīvākais, it īpaši ar lielākiem modeļiem.
2.2 Daži izsaukumi, lai ģenerētu G
Mūsu eksperimentos mēs izmantojām CODEX (Chen et al., 2021a) un konstatējām, ka tas gandrīz vienmēr rada sintaktiski derīgu Python. Tādējādi ģenerēto kodu var viegli pārvērst atpakaļ grafikā un novērtēt, izmantojot datu kopas standarta, oriģinālo, metriku.
Šis dokuments ir pieejams arhivā ar CC BY 4.0 DEED licenci.
TātadŠis dokuments ir pieejams arhivā ar CC BY 4.0 DEED licenci.
Autori :
Tātad(1) Aman Madaan, Valodu tehnoloģiju institūts, Carnegie Mellon Universitāte, ASV ([email protected]);
Tātad(2) Shuyan Zhou, Valodu tehnoloģiju institūts, Carnegie Mellon Universitāte, ASV ([email protected]);
Tātad(3) Uri Alon, Valodu tehnoloģiju institūts, Carnegie Mellon Universitāte, ASV ([email protected]);
Tātad(4) Yiming Yang, Valodu tehnoloģiju institūts, Carnegie Mellon Universitāte, ASV ([email protected]);
Tātad(5) Graham Neubig, Valodu tehnoloģiju institūts, Carnegie Mellon Universitāte, ASV ([email protected]).
TātadAuthors:
(1) Aman Madaan, Valodu tehnoloģiju institūts, Carnegie Mellon Universitāte, ASV ([email protected]);
(2) Shuyan Zhou, Valodu tehnoloģiju institūts, Carnegie Mellon Universitāte, ASV ([email protected]);
(3) Uri Alon, Valodu tehnoloģiju institūts, Carnegie Mellon Universitāte, ASV ([email protected]);
(4) Yiming Yang, Valodu tehnoloģiju institūts, Carnegie Mellon Universitāte, ASV ([email protected]);
(5) Graham Neubig, Valodu tehnoloģiju institūts, Carnegie Mellon Universitāte, ASV ([email protected]).