Autorii : Yue Wang, wang.y@salesforce.com (Salesforce Research Asia) Weishi Wang, weishi.wang@salesforce.com (Salesforce Research Asia; Nanyang Technological University, Singapore) Shafiq Joty, sjoty@salesforce.com (Salesforce Research Asia; Nanyang Technological University, Singapore) Steven C.H. Hoi, shoi@salesforce.com (Salesforce Research Asia) Autorii : Yue Wang, wang.y@salesforce.com (Salesforce Research Asia) Weishi Wang, weishi.wang@salesforce.com (Salesforce Research Asia; Universitatea Tehnologică Nanyang, Singapore) Shafiq Joty, sjoty@salesforce.com (Salesforce Research Asia; Universitatea Tehnologică Nanyang, Singapore) Steven C.H. Hoi, shoi@salesforce.com (Salesforce Research Asia) abstractă În ciuda succesului lor, majoritatea metodelor actuale se bazează fie pe un cod-only (sau decoder-only) pre-training care este suboptim pentru generarea (respectiv înțelegerea) a sarcinilor sau prelucrează fragmentul de cod în același mod ca NL, neglijând caracteristicile speciale ale sarcinilor PL, cum ar fi tipurile de token. Prezentăm CodeT5, un model unificat de cod-only (sau decoder-only) care valorifică mai bine semantica codului transmis de la identificatorii eliberați de developer. Modelul nostru utilizează un cadru unificat pentru a sprijini fără probleme atât sarcinile de cod-generare a sarcinilor PL, cât și sarcinile de generare a sarcinilor și permite învățarea multi-task. În plus, propun . https://github.com/salesforce/CodeT5 1 Introducere Modele pre-formate de limbă, cum ar fi BERT ( , b) în cazul în care ( , , și T5 ( , De obicei, ei folosesc o paradigmă pre-antrenament apoi fine-tune care vizează derivarea de reprezentări lingvistice generice prin formare auto-supravegheată pe date neetichetate la scară largă, care pot fi transferate pentru a beneficia de mai multe sarcini în aval, în special cele cu anotații de date limitate. Inspirat de succesul lor, există multe încercări recente de a adapta aceste metode de pre-antrenament pentru limbajul de programare (PL) ( , • , • , ), care prezintă rezultate promițătoare la sarcinile legate de cod. Devlin și al. 2019 Radford și al. 2019 Răzvan şi al. 2020 Sfântu Gheorghe şi al. 2020 Canada şi al. 2020 Feng și al. 2020 Cu toate acestea, în ciuda succesului lor, cele mai multe dintre aceste modele se bazează pe un model doar codificator similar BERT ( , • , sau un model de decodificare numai ca GPT ( , ), which is suboptimal for generation and understanding tasks, respectively. For example, CodeBERT ( , ) necesită un decoder suplimentar atunci când este aplicat pentru sarcina de rezumare a codului, unde acest decoder nu poate beneficia de pre-formare.În plus, cele mai multe metode existente folosesc pur și simplu tehnicile convenționale de pre-formare NLP pe codul sursă, referindu-l ca o secvență de tokenuri, cum ar fi NL. Acest lucru ignoră în mare măsură informațiile structurale bogate din cod, care sunt vitale pentru înțelegerea completă a semantică a codului. Iohannis şi alţii. 2020 Feng și al. 2020 canadiană şi al. 2020 Feng și al. 2020 În această lucrare, prezentăm CodeT5, un model pre-instruit de codificare-decodare care ia în considerare informațiile de tip token în cod. , ) that employs denoising sequence-to-sequence (Seq2Seq) pre-training and has been shown to benefit both understanding and generation tasks in natural language. In addition, we propose to leverage the developer-assigned identifiers in code. When writing programs, developers tend to employ informative identifiers to make the code more understandable, so that these identifiers would generally preserve rich code semantics, Identificatorul „binarySearch” din figură Pentru a fuziona astfel de cunoștințe specifice codului, propunem un nou obiectiv conștient de identificator care instruiește modelul să distingă ce tokenuri sunt identificatori și să le recupereze atunci când sunt mascate. Răzvan şi al. 2020 în g, 2 În plus, propunem să valorificăm codul și comentariile care îl însoțesc pentru a învăța o mai bună aliniere NL-PL. Dezvoltatorii oferă adesea documentație pentru programe pentru a facilita o mai bună întreținere a software-ului ( , ), so that such PL-NL pairs are widely available in most source code. Specifically, we regard the NL→PL generation and PL→NL generation as dual tasks and simultaneously optimize the model on them. de Suceava şi al. 2005 În cazul în care este necesar să se efectueze o evaluare în conformitate cu cerințele Codului de procedură civilă ( , În consecință ( , În plus, în cadrul programului de cercetare, se vor colecta date suplimentare privind C/C# din depozitele Github cu sursă deschisă. , ), inclusiv două sarcini de înțelegere: detectarea defectelor de cod și detectarea clonelor și sarcini de generare, cum ar fi rezumarea codului, generarea, traducerea și rafinarea. , explorăm, de asemenea, învățarea multi-task pentru a ajusta CodeT5 pe mai multe sarcini în același timp folosind un cod de control al sarcinilor ca prompt sursă. Husain şi al. 2019 Feng și al. 2020 Lu și al. 2021 1 Prezentăm unul dintre primele modele unificate de codificare-decodare CodeT5 pentru a sprijini atât înțelegerea codului, cât și sarcinile de generare și, de asemenea, permite învățarea multi-task. Propunem un nou obiectiv de pre-formare conștient de identificator care ia în considerare informațiile critice de tip token (identificatori) din cod. În plus, propunem să valorificăm perechile NL-PL care sunt disponibile în mod natural în codul sursă pentru a învăța o mai bună aliniere trans-modală. Experimente extinse arată că CodeT5 produce rezultate de ultimă oră pe cele paisprezece sub-tasks din CodeXGLUE. Analizele ulterioare arată că CodeT5 poate capta mai bine semantica codului cu pre-antrenarea propusă conștientă de identificator și generarea dublă bimodală beneficiază în primul rând de sarcinile NL↔PL. 2 Lucrări conexe Modele pre-instruite bazate pe arhitecturi Transformer ( , În general, se pot clasifica în trei grupe: modelele numai codificatoare, cum ar fi BERT ( , Rădulescu ( , , și electra ( , , numai modele de decodificare, cum ar fi GPT ( , , precum și modele de codificare-decodare, cum ar fi MASS ( , Bărbatul ( , ), and T5 ( , Comparativ cu modelele codificatoare-numai și decodificatoare-numai care favorizează înțelegerea și sarcinile de generare, respectiv, modelele codificatoare-decodificatoare pot susține bine ambele tipuri de sarcini. Adesea folosesc obiective de pre-formare denoizante de secvență-la-secvență care corupe intrarea sursă și necesită decodificatorul să le recupereze. Pre-training on Natural Language. Vâlcea et al. 2017 Devlin și al. 2019 Liu şi al. 2019b Clark și al. 2020 Radford și al. 2019 Cântecul şi al. 2019 Lewis și al. 2020 Răzvan şi al. 2020 Pre-formarea în limbajul de programare este un domeniu nou-născut în care o mulțime de lucrări recente încearcă să extindă metodele de pre-formare NLP la codul sursă. , În cazul în care codificarea ( , CuBERT utilizează obiectivul puternic de modelare a limbajului mascat BERT pentru a deriva reprezentarea generică specifică codului, iar CodeBERT adaugă în continuare o detecție de token înlocuită ( , ) sarcina de a învăța reprezentarea cross-modală NL-PL. Pe lângă modelele de stil BERT, (în ) și (în În cazul în care este necesar să se efectueze o evaluare în conformitate cu cerințele GMP și GMP ( , Pentru a îndeplini sarcina de completare a codului. transcoder ( , Spre deosebire de acestea, explorăm modele de codificare-decodare bazate pe T5 pentru pregătirea prealabilă a limbajului de programare și susținem un set mai cuprinzător de sarcini. Pre-training on Programming Language. Canada şi al. 2020 Feng şi al. 2020 Clark și al. 2020 Iohannis şi alţii. 2020 Liviu şi al. 2020 Dăncilă şi al. 2019 Rozière et al. 2020 Unele lucrări emergente ( , ; , • , ) în literatura recentă explorează, de asemenea, cadrul T5 pe cod, dar acestea se concentrează numai pe un subset limitat de sarcini de generare și nu susțin sarcinile de înțelegere ca noi. , ) bazat pe un alt model de codificator-decoder BART poate, de asemenea, să susțină atât înțelegerea, cât și sarcinile de generare. Cu toate acestea, toate lucrările anterioare de mai sus procesează pur și simplu codul în același mod ca și limbajul natural și ignoră în mare măsură caracteristicile specifice codului. Clement și al. 2020 Mănăstirea Mastropaolo et al. 2021 Elnaggar et al. 2021 Ahmad et al. 2021 Cu toate acestea, în cazul în care este necesar să se efectueze o analiză detaliată a codului de referință ( , Incorporează fluxul de date extras din structura de cod în CodeBERT, în timp ce (în ) propose a deobfuscation objective to leverage the structural aspect of PL. These models only focus on training a better code-specific encoder. (în În contrast, ne concentrăm în mod specific pe identificatorii care rezervă semantica bogată a codului și fuzionează astfel de informații într-un model Seq2Seq prin intermediul a două noi sarcini de etichetare și predicție a identificatorului. Iohannis şi al. 2021 Rădulescu şi al. 2021 Târgovişte şi al. 2021 3 Codul 5 Codul T5 se bazează pe un cadru de codificare-decodare cu aceeași arhitectură ca și T5 ( , Scopul său este de a obține reprezentări generice pentru limbajul de programare (PL) și limbajul natural (NL) prin pre-formare pe codul sursă fără etichete. , we extend the denoising Seq2Seq objective in T5 by proposing two identifier tagging and prediction tasks to enable the model to better leverage the token type information from PL, which are the identifiers assigned by developers. To improve the NL-PL alignment, we further propose a bimodal dual learning objective for a bidirectional conversion between NL and PL. Răzvan şi al. 2020 2 În cele ce urmează, prezentăm modul în care CodeT5 codifică intrările PL și NL (§ ) și sarcinile noastre pre-antrenamentale propuse de identificator-conștient (§ ), urmată de fine-tuning cu transfer de învățare specifică sarcinilor și de formare multi-task (§ ) din 3.1 3.2 3.3 3.1 Codificarea NL și PL În stadiul de pre-formare, modelul nostru ar primi fie PL-only, fie NL-PL ca intrări, în funcție de faptul dacă fragmentul de cod are sau nu descrieri NL însoțitoare. = ([CLS], 1*, ..., wn*, [SEP], 1*, ..., cm*, [SEP]), în care şi Denumirea numărului de tokenuri de cuvânt NL și a tokenurilor de cod PL, respectiv. Secvența de cuvinte NL va fi goală pentru intrările unimodale PL-numai. x w c n m Pentru a captura mai multe caracteristici specifice codului, propunem utilizarea informațiilor tip token din cod. Ne concentrăm pe tipul de identificatori ( nume de funcții și variabile) deoarece acestea sunt una dintre cele mai PL-agnostice caracteristici și rezervă semantică bogată a codului. În special, transformăm segmentul PL într-un copac de sintaxă abstractă (AST) și extragem tipurile de noduri pentru fiecare token de cod. În cele din urmă, construim o secvență de etichete binare ∈ {0*, * 1} pentru segmentul PL, în care fiecare ∈ {0*,* 1} reprezintă dacă codul Este sau nu un identificator. în g, y m yi ci 3.2 Sarcinile de pregătire prealabilă Prezentăm acum sarcinile noastre propuse de pre-antrenament care permit CodeT5 să învețe modele utile din datele bimodale PL-only sau NL-PL. S-a demonstrat că pre-antrenamentele de dezghețare secvență-secvență (Seq2Seq) sunt destul de eficiente într-un set larg de sarcini NLP ( , • , • , De obicei, acest obiectiv denoizant corupe mai întâi secvența sursă cu unele funcții zgomotoase și apoi necesită decodificatorul pentru a recupera textele originale. , care maschează în mod aleatoriu intervalele cu lungimi arbitrare și apoi prezice aceste intervalele mascate combinate cu unele token-uri sentinel la decoder. , as illustrated in Figure şi a. Identifier-aware Denoising Pre-training. Cântecul şi al. 2019 Raf-fel și al. 2020 Lewis și al. 2020 Răzvan şi al. 2020 Masked Span Prediction (MSP) 2 Mai exact, folosim aceeași rată de corupție de 15% ca și T5 și asigurăm că lungimea medie a intervalului este de 3 prin eșantionarea uniformă a intervalelor de la 1 la 5 jetoane. prin eșantionarea intervalelor înainte de tokenizarea subverbelor, care urmărește să evite mascarea sub-tokenelor parțiale și se dovedește a fi utilă ( , În special, pre-antrenăm un model partajat pentru diferite PL-uri pentru a învăța reprezentări translinguale robuste. Cuvânt cheie: mască Sun și al. 2019 unde θ sunt parametrii modelului, x \mask este intrarea mascată, x mask este secvența mascată pentru a prezice de la decoder cu k denotând numărul de jetoane din x mask, iar xmask <t este secvența generată până acum. Pentru a fuziona mai multe informații structurale specifice codului (tipul nodului de identificare în AST) în model, propunem două sarcini suplimentare: şi pentru a completa pregătirea prealabilă. Etichetă de identificare (IT) Predicția identificatorului mascat (MIP) • Acesta își propune să notifice modelul cu cunoștința dacă acest token de cod este un identificator sau nu, care împărtășește un spirit similar de sintaxă de evidențiere în unele instrumente asistate de dezvoltatori. (b) cartografiem stările ascunse finale ale segmentului PL la codificatorul CodeT5 într-o secvență de probabilități • ( 1*, ..., pm*), și calculați o pierdere de entropie încrucișată binară pentru etichetarea secvențelor: Identifier Tagging (IT) 2 p p unde Rețineți că prin aruncarea sarcinii ca o problemă de etichetare a secvențelor, se așteaptă ca modelul să capteze sintaxa de cod și structurile fluxului de date ale codului. θe • Different from the random span masking in MSP, we mask all identifiers in the PL segment and employ a unique sentinel token for all occurrences of one specific identifier. In the field of software engineering, this is called unde schimbarea numelor de identificatori nu afectează semantica codului. (în ), we arrange the unique identifiers with the sentinel tokens into a target sequence as shown in Figure (c). We then predict it in an auto-regressive manner: Masked Identifier Prediction (MIP) obscură Rozière et al. 2021 I 2 unde I este intrarea mascată. reţineţi că is a more challenging task that requires the model to comprehend the code semantics based on obfuscated code and link the occurrences of the same identifiers together. x dezamăgire Optimizăm alternativ aceste trei pierderi cu o probabilitate egală, ceea ce constituie pregătirea prealabilă propusă de denozație conștientă de identificator. În faza de pre-formare, decodificatorul vede numai spații și identificatori mascați discrete, ceea ce este diferit de sarcinile din aval în care decodificatorul trebuie să genereze fie texte NL fluente, fie fragmente de cod corectate sintactic. Pentru a închide decalajul dintre pre-formare și tuning fin, propunem să valorificăm datele bimodale NL-PL pentru a instrui modelul pentru o conversie bidirecțională, așa cum se arată în figură (d) În mod specific, considerăm generarea NL→PL și generarea PL→NL ca fiind două sarcini și optimizăm simultan modelul pe ele. Bimodal Dual Generation. 2 Pentru a face acest lucru, se recomandă să utilizați două tipuri de șuruburi de șuruburi și să adăugați două tipuri de șuruburi ( <java> și <en> pentru Java PL și English NL, respectiv). Această operațiune poate fi văzută și ca un caz special de mascare a intervalului T5 prin mascarea segmentului NL sau PL complet din intrările bimodale. e.g., 3.3 Fine-tuning pentru CodeT5 După pregătirea prealabilă cu privire la date neetichetate la scară largă, adaptăm CodeT5 la sarcinile din aval, fie prin învățarea transferului specific sarcinii, fie prin învățarea multi-task. Code-related tasks can be categorized into generation and understanding tasks. For the former one, our CodeT5 can be naturally adapted with its Seq2Seq framework. For understanding tasks, we investigate two ways of either generating the label as a unigram target sequence ( , ), or predicting it from the vocabulary of class labels based on the last decoder hidden state following (în ). Task-specific Transfer Learning: Generation vs. Understanding Tasks. Raffel et al. 2020 Lewis et al. 2020 We also explore a multi-task learning setting by training a shared model on multiple tasks at a time. Multi-task learning is able to reduce computation cost by reusing the most of model weights for many tasks and has been shown to improve the model generalization capability in NL pre-training ( , ). We follow ( pentru a utiliza același model unificat pentru toate sarcinile fără a adăuga nicio rețea specifică sarcinii, dar pentru a permite selectarea diferitelor puncte de control optime pentru diferite sarcini.Pentru a notifica modelul cu care se ocupă sarcina, proiectăm un format unificat de coduri de control al sarcinii și îl pregătim în intrările sursă, după cum se arată în figură . For instance, we employ “Translate Java to CSharp:” as the source prompt for the code-to-code translation task from Java to CSharp. Multi-task Learning. Liu et al. 2019a Raffel et al. 2020 1 As different tasks have different dataset sizes, we follow Conneau and Lample (2019) to employ a balanced sampling strategy. For N number of datasets (or tasks), with probabilities {qi} N i=1, we define the following multinomial distribution to sample from: unde ni este numărul de exemple pentru sarcina i-a și α este setat la 0,7. această eșantionare echilibrată vizează atenuarea biasului față de sarcinile cu resurse mari. 4 Construcții experimentale 4.1 Set de date de pregătire prealabilă Urmărim Feng et al. (2020) pentru a folosi CodeSearchNet (Husain et al., 2019) pentru a pregăti CodeT5, care constă din șase PL-uri cu date atât unimodale, cât și bimodale. În plus, colectăm două seturi de date C/CSharp de la BigQuery1 pentru a ne asigura că toate sarcinile din aval au suprapus PL-urile cu datele de pre-antrenament. În total, folosim aproximativ 8,35 milioane de instanțe pentru pre-antrenament. Tabelul 1 prezintă unele statistici de bază. Pentru a obține etichetele de identificator din cod, valorificăm copacul-sitter2 pentru a converti PL într-un copac de sintaxă abstract și apoi extragem informațiile de tip nod. Filtrăm cuvintele 4.2 Tokenizator specific codului Tokenization is a key ingredient for the success of pre-trained language models like BERT and GPT. They often employ a Byte-Pair Encoding (BPE) to-kenizer ( , ) to alleviate the Out-of-Vocabulary (OoV) issues. Specifically, we train a Byte-level BPE tokenizer following ( Adăugăm token-uri speciale suplimentare ([PAD], [CLS], [SEP], [MASK0], ..., [MASK99]). Acest tokenizer este instruit pe toate datele noastre de pre-formare cu caractere neimprimabile și token-uri cu frecvență scăzută (care se întâmplă de <3 ori) filtrate. Noi îl comparăm cu tokenizatorul implicit al T5 și găsim că tokenizatorul nostru reduce în mare măsură lungimea secvenței de cod tokenizat cu 30% - 45% pe sarcinile din aval. Acest lucru va accelera instruirea și va beneficia în special de sarcinile de generare datorită secvenței mai scurte pentru a prezice. De asemenea, identificăm o problemă gravă pentru aplicarea tokenizatorului implicit al T5 pe cod Sennrich et al. 2016 Radford și al. 2019 4.3 Downstream Tasks and Metrics We cover most generation and understanding tasks in the CodeXGLUE benchmark ( , ) și să folosească seturile de date publice furnizate și aceleași diviziuni de date care urmează pentru toate aceste sarcini. Lu et al. 2021 În primul rând, vom lua în considerare două sarcini de generație intermodală. aims to summarize a function-level code snippet into English descriptions. The dataset consists of six PLs including Ruby, JavaScript, Go, Python, Java, and PHP from CodeSearchNet ( , ). We employ the smoothed BLEU-4 ( , ) to eval-uate this task. is the task to gen-erate a code snippet based on NL descriptions. We employ the Concode data ( , ) in Java where the input contains both NL texts and class environment contexts, and the output is a function. We evaluate it with BLEU-4, exact match (EM) accuracy, and CodeBLEU ( , ) care ia în considerare potrivirea sintactică și semantică bazată pe structura codului în plus față de potrivirea n-gram. Code summarization Husain et al. 2019 Lin and Och 2004 Code generation Iyer et al. 2018 Ren et al. 2020 Besides, we consider two code-to-code generation tasks. are ca scop migrarea software-ului moștenit de la un PL la altul, unde ne concentrăm pe traducerea funcțiilor de la Java la CSharp și invers. aims to convert a buggy function into a correct one. We employ two Java datasets provided by (în ) with various function lengths: small (fewer than 50 tokens) and medium (50-100 tokens). We use BLEU-4 and exact match to evaluate them. Code translation Code refinement Tufano et al. 2019 We also investigate how CodeT5 performs on two understanding-based tasks. The first one is care are scopul de a prezice dacă un cod este vulnerabil la sistemele software sau nu. ( ) for experiment. The second task is which aims to measure the similarity between two code snippets and predict whether they have the same functionality. We experiment with the Java data provided by (în ). We employ F1 score and accuracy for evaluating these two tasks respectively. In total, our CodeT5 supports six tasks and fourteen sub-tasks in CodeXGLUE with a unified encoder-decoder model. defect detection Iohannis şi al. 2019 clone detection Wang et al. 2020 4.4 Comparison Models We compare CodeT5 with state-of-the-art (SOTA) pre-trained models that can be categorized into three types: encoder-only, decoder-only, and encoder-decoder models. As models, we consider RoBERTa ( , ), RoBERTa (code) trained with masked language modeling (MLM) on code, CodeBERT ( , ) trained with both MLM and replaced token detection ( , Cuvânt cheie: Cuvânt cheie ( , ) using data flow from code, and DOBF ( , ) trained with the identifier deobfuscation objective. Note that although DOBF employs a Seq2Seq model during pre-training, it only aims to train a better encoder for downstream tasks without exploring the poten-tial benefit of the pre-trained decoder. encoder-only Liviu şi al. 2019b Feng și al. 2020 Clark și al. 2020 Guo et al. 2021 Rădulescu şi al. 2021 For models, we compare GPT-2 ( , ) and its adaptations on code domain including CodeGPT-2, and CodeGPT-adapted. The difference is that the latter one utilizes a GPT-2 checkpoint for model initialization while the former one is trained from scratch. As models, the current SOTA model for the CodeXGLUE benchmark is PLBART ( , ) based on BART ( , ) architecture. For pre-training data, most of these models employ CodeSearchNet ( , ) except DOBF and PLBART. DOBF is pre-trained on 7.9M Java and 3.6M Python files from BigQuery while PLBART employs a much larger data with 470M Python and 210M Java functions, and 47M NL posts from StackOverflow. decoder-only Radford și al. 2019 encoder-decoder Ah-mad et al. 2021 Lewis et al. 2020 Husain şi al. 2019 4.5 Model Configurations Citește mai multe despre: c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c5 c , ) PyTorch implementation and employ two sizes of CodeT5-small (60M) and CodeT5-base (220M). We set the maximum source and target sequence lengths to be 512 and 256, respectively. We use the mixed precision of FP16 to accelerate the pre-training. We set the batch size to 1024 and employ the peak learning rate of 2e-4 with linear decay. We pre-train the model with the denoising objective for 100 epochs and bimodal dual training for further 50 epochs on a cluster of 16 NVIDIA A100 GPUs with 40G memory. The total training time for CodeT5-small and CodeT5-base is 5 and 12 days, respectively. Raf-fel et al. 2020 3 In the fine-tuning phase, we find that the tasks in CodeXGLUE ( , ) are quite sensitive to some hyper parameters such as learning rate, training steps, and batch size. We conduct a grid search and select the best parameters based on the validation set. In multi-task learning, we cover all downstream tasks except clone detection. Lu et al. 2021 5 Results and Analysis In this section, we compare CodeT5 with SOTA models on a broad set of CodeXGLUE downstream tasks (§ ), and investigate the effects of our bimodal dual generation and multi-task learning (§ ), followed by a detailed analysis on the proposed identifier-aware pre-training (§ ). 5.1 5.2 5.3 5.1 CodeXGLUE Downstream Tasks We evaluate two sizes of our model: CodeT5-small and CodeT5-base that are pre-trained with identifier-aware denoising. In addition, we consider the model that continues to train with bimodal dual generation (dual-gen) and show the results with multi-task fine-tuning. The results of all comparison models are obtained from their original papers and also the CodeXGLUE paper ( , ). Lu et al. 2021 We show code summarization results of smoothed BLEU-4 on six PL data in Table . We observe all our model variants significantly outperform prior work with either an encode-only (RoBERTa, CodeBERT, DOBF) or encoder-decoder framework (PLBART). Moreover, the salient performance gap between these two groups of models confirms that encode-only frameworks are suboptimal for generation tasks. Compared to the SOTA encoder-decoder model PLBART, we find that even our CodeT5-small yields better overall scores (also on Python and Java) given that our model is much smaller (60M vs. 140M) and PLBART is pre-trained with much larger Python and Java data (> 100 times). We attribute such improvement to our identifier-aware denoising pre-training and better employment of bi-modal training data . By increasing the model size, our CodeT5-base boosts the overall performance by over 1.2 absolute points over PLBART. Code Summarization. 2 4 We compare CodeT5 with GPT-style models and PLBART in Table . Our CodeT5-small outperforms all decoder-only mod-els and also the SOTA PLBART, which again confirms the superiority of encoder-decoder models at generating code snippets. Moreover, our CodeT5-base further significantly pushes the SOTA results across three metrics. Particularly, it achieves around 4.7 points improvement on CodeBLEU over PLBART, indicating our CodeT5 can better comprehend the code syntax and semantics with the __help of identi__fier-aware pre-training. Code Generation. 3 We compare two code-to-code generation tasks: code translation and code refinement in Table and further consider one naive copy baseline by copying the source input as the target prediction. In the code translation task, our CodeT5-small outperforms most of base-lines and obtains comparable results with PLBART, which shows the advantages of encoder-decoder models in the code-to-code generation setting. Our CodeT5-base further achieves consistent improvements over PLBART across various metrics for translating from Java to C# and vice versa. Code-to-Code Generation Tasks. 4 Here we show one CodeT5’s output of translating C# to Java in Figure . In this case, despite the poor BLEU score, CodeT5 is able to generate a function that reserves the same functionality and even has better readability compared to the ground-truth. This reveals that CodeT5 has a good generalization ability instead of memorizing and repeating what it has seen before. On the other hand, it also suggests that BLEU score is not a perfect evaluation metric for code generation tasks, where sometimes a higher score can instead reflect the problematic copy issues of neural models. 3 Another code-to-code generation task is code refinement, a challenging task that requires detecting which parts of code are buggy and fix them via generating a bug-free code sequence. Due to the large overlap of source and target code, even the naive copy approach yields very high BLEU scores but zero exact matches. Therefore, we focus on the exact match (EM) metric to evaluate on this task. As shown in Table , we observe that EM scores for the small data are consistently higher than the medium one, indicating that it is harder to fix bugs for a longer code snippet. Our CodeT5-base significantly outperforms all baselines on EM and especially boosts over 4.8 points for the more challenging medium task (13.96 vs. GraphCodeBERT’s 9.10), reflecting its strong code understanding capability. 4 We compare with two understanding tasks of defect detection and clone detection in Table 5. Understanding Tasks. În mod specific, generăm etichetele binare ca o secvență unigram din decoder pentru sarcina de detectare a defectelor, în timp ce pentru sarcina de detectare a clonelor, obținem mai întâi încorporarea secvenței fiecărui fragment de cod folosind ultima stare a decoderului următoare. (în ) and then predict the labels by measuring their similarity. Both CodeT5-small and CodeT5-base outperform all baselines on the defect detection task while CodeT5-base yields 2.6 accuracy score improvement than PLBART. For the clone detection task, our CodeT5 models achieve comparable results to the SOTA GraphCodeBERT and PLBART models. These results demonstrate that with an encode-decoder framework, our CodeT5 can still be adapted well for understanding tasks. Lewis et al. 2020 5.2 Effects of Bimodal Dual Generation and Multi-task Learning We examine the effects of bimodal dual generation at pre-training and multi-task learning at fine-tuning. The bimodal pre-training brings consistent improvements for code summarization and generation tasks on both CodeT5-small and CodeT5-base. However, this pre-training task does not help and even sometimes slightly hurts the performance for PL-PL generation and understanding tasks. We anticipate this is because bimodal dual generation learns a better alignment between PL and NL that naturally benefits the former tasks involving both PL and NL. As a side effect, this objective could bias the model towards the PL-NL tasks and affect its performance on PL-PL tasks. În învățarea multi-task, în general, îmbunătățește majoritatea sarcinilor din aval, cu excepția traducerii codului și a detectării defectelor. În special, îmbunătățește în mare măsură performanța la rezumarea codului, ceea ce nu este surprinzător, deoarece rezumarea codului ocupă cea mai mare parte a sub-sarcinilor (șase din treisprezece) și, astfel, beneficiază cel mai mult de învățarea multi-task. Another possible reason is that multi-task training with defect detection would enable the model to better comprehend the code semantics for bug detection, which is also a necessary intermediate step for code refinement. 5.3 Analizarea pre-antrenamentului de identificare-conștient We provide an ablation study to examine the contribution of each component in our identifier-aware objective. Specifically, we compare the performance of our CodeT5-small on four selected tasks by ablating each of the three objectives: masked span prediction (MSP), identifier tagging (IT), and masked identifier prediction (MIP). As shown in Table , observăm că, în general, eliminarea unuia dintre obiective ar reduce performanța pentru toate sarcinile, indicând că toate obiectivele contribuie la o mai bună înțelegere a codului nostru CodeT5. Cu toate acestea, efectul fiecărui obiectiv diferă de la o sarcină la alta. În special, eliminarea MSP ar reduce în mare măsură performanța tuturor sarcinilor de generare, dar în schimb ar crește performanța de detectare a defectelor. Acest lucru arată că predicția spatiului mascat este mai crucială pentru capturarea informațiilor sintactice pentru sarcinile de generare. Dimpotrivă, eliminarea MIP ar afecta sarcina de detectare a defectelor cel mai mult, indicând că ar putea să se concentreze mai mult pe înțelegerea semantică a codului. Prin combin 6 We further provide outputs from CodeT5 and its variant without MIP and IT on code generation in Figure Observăm că CodeT5 poate genera corect funcția exactă, în timp ce modelul fără MIP și IT nu reușește să recupereze identificatorii „s2” și „hasField”. 4 We also investigate the identifier tagging performance and find it achieves over 99% F1 for all PLs, showing that our CodeT5 can confidently distinguish identifiers in code. We then check whether MSP and MIP tasks would have conflicts as they employ the same sentinel tokens for masking. In identifier masking, all occurrences of one unique identifier are replaced with the same sentinel token, resulting in a many-to-one mapping compared to the one-to-one mapping in span prediction. We compare models pre-trained with either MSP or MIP, and both on these two tasks in Table . We report the prediction accuracy and also the ratio of how often they can generate the same number of predictions as the sentinel tokens. We observe that pre-training only with either MIP or MSP would bias the model towards that task, achieving poor accuracy and higher mismatch in number of predictions when applied to the other task. Interestingly, we find that MIP-only objective can better recover the correct number of predictions in the MSP task than MSP-only does for the MIP task, meaning that it is easier to adapt from many-to-one mapping to one-to-one mapping and difficult for the opposite. At last, combining them can help our model to make a good trade-off on both tasks. 7 6 Conclusion We have presented CodeT5, a pre-trained encoder-decoder model that incorporates the token type information from code. We propose a novel identifier-aware pre-training objective to better leverage the identifiers and propose a bimodal dual generation task to learn a better NL-PL alignment using code and its comments. Our unified model can support both code understanding and generation tasks and allow for multi-task learning. Experiments show that CodeT5 significantly outperforms all prior work in most CodeXGLUE tasks. Further analysis also reveals its better code comprehension capability across various programming languages. Impact mai larg și considerații etice Lucrările noastre aparțin în general aplicațiilor NLP pentru inteligența software. Cu scopul de a îmbunătăți productivitatea de dezvoltare a software-ului cu metode de învățare automată, cercetarea în domeniul inteligenței software a atras o atenție tot mai mare atât în mediul academic, cât și în industrie în ultimul deceniu. Tehnicile de inteligență a codului software pot ajuta dezvoltatorii să reducă sarcinile de lucru repetitive plictisitoare, să îmbunătățească calitatea programării și să îmbunătățească productivitatea generală a dezvoltării software-ului. Acest lucru ar reduce considerabil timpul de lucru și ar putea reduce, de asemenea, costurile de calcul și de funcționare, deoarece un bug ar putea degrada performanța sistemului sau chiar să prăbușească întregul sistem. Lucrarea noastră abordează provocarea fundamentală We further discuss the ethical consideration of training CodeT5 and the potential risks when applying it into real-world downstream applications: The training datasets in our study are source code including user-written comments from open source Github repositories and publicly available, which do not tie to any specific application. However, it is possible that these datasets would encode some stereotypes like race and gender from the text comments or even from the source code such as variables, function and class names. As such, social biases would be intrinsically embedded into the models trained on them. As suggested by ( ), interventions such as filtration or modulation of generated outputs may help to mitigate these biases in code corpus. Dataset bias. Chen și al. 2021 Pre-formarea modelului nostru necesită resurse de calcul non-triviale, deși am încercat să proiectăm cu atenție experimentele noastre și să îmbunătățim experimentele pentru a economisi costuri de calcul inutile. , ), our CodeT5-base has a much smaller model size of 220M than theirs of 12B (∼ 55×). In addition, we experiment on Google Cloud Plat-form which purchases carbon credits to reduce its carbon footprint, training CodeT5-base produced around 49.25 kg CO2 which was totally off-set by the provider. Furthermore, we release our pre-trained models publicly to avoid repeated training for the code intelligence research community. Computational cost. Chen et al. 2021 e.g., Deoarece CodeT5 poate fi implementat pentru a oferi asistență de codare, cum ar fi generarea de coduri pentru a ajuta dezvoltatorii, biasurile de automatizare ale sistemelor de învățare automată ar trebui luate în considerare cu atenție, în special pentru dezvoltatorii care tind să se bazeze excesiv pe ieșirile generate de modele. Uneori aceste sisteme pot produce funcții care par superficiale corecte, dar nu se aliniază cu intențiile dezvoltatorului. Dacă dezvoltatorii adoptă în mod involuntar aceste sugestii incorecte de cod, le poate provoca o perioadă mult mai lungă de timp pe debugging și chiar duce la unele probleme semnificative de securitate. Automation bias. Citește mai multe despre Codul de conduită (CodeSearchNet) , ) and a small fraction of Google BigQuery, both of which are originally collected from public Github repositories. Pre-trained mod-els might encode some sensitive information ( personal addresses or identification numbers) from the training data. Though we have conducted multi-rounds of data cleaning to mitigate this before training our models, it is still possible that some sensitive information cannot be completely removed. Besides, due to the non-deterministic nature of generation models like CodeT5, it might produce some vulnerable code to harmfully affect the software and even be able to benefit more advanced malware development when deliberately misused. Security implications. Husain şi al. 2019 e.g., Recunoaşterea We thank Akhilesh Deepak Gotmare, Amrita Saha, Junnan Li, and Chen Xing for valuable discussions. We thank Kathy Baxter for the ethical review. We also thank our anonymous reviewers for their insightful feedback on our paper. References Wasi Uddin Ahmad, Saikat Chakraborty, Baishakhi Ray și Kai-Wei Chang. . In , pages 2655–2668. Association for Computational Linguistics. Unified pre-training for program understanding and generation Proceduri ale Conferinței din 2021 a Capitolului nord-american al Asociației pentru Lingvistică Computațională: Tehnologii de limbă umană, NAACL-HLT 2021, Online, 6-11 iunie 2021 Mark Chen, Jerry Tworek, Heewoo Jun, Qiming Yuan, Henrique Ponde de Oliveira Pinto, Jared Kaplan, Harrison Edwards, Yuri Burda, Nicholas Joseph, Greg Brockman, Alex Ray, Raul Puri, Gretchen Krueger, Michael Petrov, Heidy Khlaaf, Girish Sastry, Pamela Mishkin, Brooke Chan, Scott Gray, Nick Ryder, Mikhail Pavlov, Alethea Power, Lukasz Kaiser, Mohammad Bavarian, Clemens Win-ter, Philippe Tillet, Felipe Petroski Such, Dave Cum-mings, Matthias Plappert, Fotios Chantzis, Eliza-beth Barnes, Ariel Herbert-Voss, William Hebgen Guss, Alex Nichol, Alex Paino, Nikolas Tezak, Jie Tang, Igor Babuschkin, Suchir Balaji, Shantanu Jain, William Saunders, Christopher Hesse, Andrew N. Carr, Jan Leike, Joshua Achiam, Vedant Misra, Evan Morikawa, Alec Radford, Matthew Knight, Miles Brundage, Mira Murati, Katie Mayer, Peter Welin-der, Bob McGrew, Dario Amodei, Sam McCandlish, Ilya Sutskever, and Wojciech Zaremba. 2021. . , ABS/2107.03374. Evaluating large language models trained on code CoRR Kevin Clark, Minh-Thang Luong, Quoc V. Le, and Christopher D. Manning. 2020. În Despre OpenReview.net ELECTRA: textul de pre-formare codifică ca discriminatori mai degrabă decât Generatoare A 8-a Conferință Internațională privind Reprezentările Învățării, ICLR 2020, Addis Ababa, Etiopia, 26-30 aprilie 2020 Colin B. Clement, Dawn Drain, Jonathan Timcheck, Alexey Svyatkovskiy, and Neel Sundaresan. 2020. . In , pages 9052–9065. Association for Computational Linguistics. Pymt5: Traducerea în mai multe moduri a limbii naturale and python code with transformers Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing, EMNLP 2020, Online, November 16-20, 2020 Alexis Conneau and Guillaume Lample. 2019. În , pages 7057–7067. Cross-lingual language model pretraining Advances in Neural Information Processing Systems 32: Annual Conference on Neural Information Processing Systems 2019, NeurIPS 2019, December 8-14, 2019, Vancouver, BC, Canada Sergio Cozzetti B. de Souza, Nicolas Anquetil și Káthia Marçal de Oliveira. . In Pagini A study of the documentation essential to software maintenance Proceduri de la cea de-a 23-a Conferință Internațională Anuală privind Designul Comunicațiilor: Documentarea și Proiectarea pentru Informații Pervazive, SIGDOC 2005, Coventry, Marea Britanie, 21-23 septembrie 2005 68 – 75 din ACM. Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. 2019. În Pagini 4171 – 4186 BERT: Pre-antrenament de Transformatoare bidirecționale profunde pentru înțelegerea limbajului Proceduri ale Conferinței din 2019 a Capitolului nord-american al Asociației pentru Lingvistică Computațională: Tehnologii lingvistice umane, NAACL-HLT 2019, Minneapolis, MN, SUA, 2-7 iunie 2019, Volumul 1 (Papere lungi și scurte) Li Dong, Nan Yang, Wenhui Wang, Furu Wei, Xi-aodong Liu, Yu Wang, Jianfeng Gao, Ming Zhou, and Hsiao-Wuen Hon. 2019. În Pagini 13042 – 13054 Limbă unificată Model de pre-antrenament pentru înțelegerea și generarea limbii naturale Progrese în sistemele de prelucrare a informațiilor neuronale 32: Conferința anuală privind sistemele de prelucrare a informațiilor neuronale 2019, NeurIPS 2019, 8-14 decembrie 2019, Vancouver, BC, Canada Ahmed Elnaggar, Wei Ding, Llion Jones, Tom Gibbs, Tamas Feher, Christoph Angerer, Silvia Severini, Florian Matthes, and Burkhard Rost. 2021. . . , abs/2104.02443. Code-trans: Towards cracking the language of silicone’s codificare prin auto-supraveghere învățare profundă și înaltă performance computing CoRR Zhangyin Feng, Daya Guo, Duyu Tang, Nan Duan, Xi-aocheng Feng, Ming Gong, Linjun Shou, Bing Qin, Ting Liu, Daxin Jiang și Ming Zhou. În , paginile 1536-1547.Asociaţia pentru Lingvistică Computaţională. Code-bert: Un model pre-instruit pentru programare și limbi naturale Proceduri ale Conferinței din 2020 privind metodele empirice în prelucrarea limbajului natural: constatări, EMNLP 2020, Eveniment online, 16-20 noiembrie 2020 Daya Guo, Shuo Ren, Shuai Lu, Zhangyin Feng, Duyu Tang, Shujie Liu, Long Zhou, Nan Duan, Alexey Svyatkovskiy, Shengyu Fu, Michele Tu-fano, Shao Kun Deng, Colin B. Clement, Dawn Drain, Neel Sundaresan, Jian Yin, Daxin Jiang și Ming Zhou. . In . OpenReview.net. Graphcodebert: Pre-training code representations with data flow Cea de-a 9-a conferință internațională privind reprezentările de învățare, ICLR 2021, Eveniment virtual, Austria, 3-7 mai 2021 Hamel Husain, Ho-Hsiang Wu, Tiferet Gazit, Miltiadis Allamanis și Marc Brockschmidt. . , abs/1909.09436. Code-searchnet challenge: Evaluating the state of semantic code search Coroană Srinivasan Iyer, Ioannis Konstas, Alvin Cheung, and Luke Zettlemoyer. 2018. . In , paginile 1643-1652. Asociaţia pentru Lingvistică Computaţională. Mapping language to code in programmatic context Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing, Brussels, Belgium, October 31 - November 4, 2018 Aditya Kanade, Petros Maniatis, Gogul Balakrishnan, and Kensen Shi. 2020. . In , volume 119 of , pages 5110–5121. PMLR. Learning and evaluating contextual embedding of source code Proceedings of the 37th International Conference on Machine Learning, ICML 2020, 13-18 July 2020, Virtual Event Proceedings of Machine Learning Research Mike Lewis, Yinhan Liu, Naman Goyal, Marjan Ghazvininejad, Abdelrahman Mohamed, Omer Levy, Veselin Stoyanov, and Luke Zettlemoyer. 2020. În , pages 7871–7880. Association for Computational Linguistics. BART: denoising sequence-to-sequence pre-training for natural language generation, translation, and comprehension Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, ACL 2020, Online, July 5-10, 2020 Chin-Yew Lin and Franz Josef Och. 2004. . In . ORANGE: o metodă de evaluare a metricilor automate de evaluare pentru traducerea automată COLING 2004, 20th International Conference on Computational Linguistics, Proceedings of the Conference, 23-27 August 2004, Geneva, Switzerland Fang Liu, Ge Li, Yunfei Zhao, and Zhi Jin. 2020. . In , pages 473–485. IEEE. Modelul de învățare a limbilor pre-instruite bazat pe învățarea multi-task code completion 35th IEEE/ACM International Conference on Automated Software Engineering, ASE 2020, Melbourne, Australia, September 21-25, 2020 Xiaodong Liu, Pengcheng He, Weizhu Chen, and Jian-feng Gao. 2019a. În , paginile 4487–4496.Asociația pentru Lingvistică Computațională. Multi-task deep neural networks for natural language understanding Proceedings of the 57th Conference of the Association for Computational Linguistics, ACL 2019, Florence, Italy, July 28- August 2, 2019, Volume 1: Long Papers Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Man-dar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, and Veselin Stoyanov. 2019b. . , abs/1907.11692. Roberta: A robustly optimized BERT pretraining approach Coroană Shuai Lu, Daya Guo, Shuo Ren, Junjie Huang, Alexey Svyatkovskiy, Ambrosio Blanco, Colin B. Clement, Dawn Drain, Daxin Jiang, Duyu Tang, Ge Li, Li-dong Zhou, Linjun Shou, Long Zhou, Michele Tu-fano, Ming Gong, Ming Zhou, Nan Duan, Neel Sun-daresan, Shao Kun Deng, Shengyu Fu, and Shujie Liu. 2021. . , abs/2102.04664. Codexglue: A machine learning benchmark dataset for code understanding and generation Coroană Antonio Mastropaolo, Simone Scalabrino, Nathan Cooper, David Nader-Palacio, Denys Poshyvanyk, Rocco Oliveto, and Gabriele Bavota. 2021. . In paginile 336-347 din IEEE. Studying the usage of text-to-text transfer transformer to support code-related tasks 43rd IEEE/ACM International Conference on Software Engineering, ICSE 2021, Madrid, Spain, 22-30 May 2021 Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, and Ilya Sutskever. 2019. . , 1(8):9. Language models are unsupervised multitask learners Deschide blogul Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, and Peter J. Liu. 2020. . , 21:140:1–140:67. Exploring the limits of transfer learning with a unified text-to-text transformer J. Mach. să învețe. Res. Shuo Ren, Daya Guo, Shuai Lu, Long Zhou, Shujie Liu, Duyu Tang, Neel Sundaresan, Ming Zhou, Am-brosio Blanco, and Shuai Ma. 2020. . , abs/2009.10297. Codebleu: a method for automatic evaluation of code synthesis Coroană Baptiste Rozière, Marie-Anne Lachaux, Lowik Chanussot, and Guillaume Lample. 2020. . In Unsupervised translation of programming languages Progrese în sistemele de prelucrare a informațiilor neuronale 33: Conferința anuală privind sistemele de prelucrare a informațiilor neuronale 2020, NeurIPS 2020, decembrie . 6-12, 2020, virtual Baptiste Rozière, Marie-Anne Lachaux, Marc Szafraniec și Guillaume Lample. . , abs/2102.07492. Dublă : A deobfuscation pre-training objective for programming languages Coroană Rico Sennrich, Barry Haddow, and Alexandra Birch. 2016. În . The Association for Computer Linguistics. Neural machine translation of rare words with subword units Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics, ACL 2016, August 7-12, 2016, Berlin, Germany, Volume 1: Long Papers Kaitao Song, Xu Tan, Tao Qin, Jianfeng Lu, and Tie-Yan Liu. 2019. . In , volume 97 of , pages 5926–5936. PMLR. MASS: secvență mascată la pre-antrenament de secvență pentru generarea de limbi Proceedings of the 36th International Conference on Machine Learning, ICML 2019, 9-15 June 2019, Long Beach, California, USA Proceedings of Machine Learning Research Yu Sun, Shuohuan Wang, Yu-Kun Li, Shikun Feng, Xuyi Chen, Han Zhang, Xin Tian, Danxiang Zhu, Hao Tian și Hua Wu. . , abs/1904.09223. ERNIE: enhanced representation through knowledge integration CoRR Alexey Svyatkovskiy, Shao Kun Deng, Shengyu Fu, and Neel Sundaresan. 2020. În , pages 1433–1443. ACM. Intellicode compune: Generarea de coduri folosind transformatorul ESEC/FSE ’20: 28th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering, Virtual Event, USA, November 8-13, 2020 Michele Tufano, Cody Watson, Gabriele Bavota, Massimiliano Di Penta, Martin White, and Denys Poshy-vanyk. 2019. . , 28(4):19:1–19:29. An empirical study on learning bug-fixing patches in the wild via neural machine translation ACM Trans. Softw. Eng. Methodol. Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, and Illia Polosukhin. 2017. . In , pages 5998–6008. Attention is all you need Progrese în sistemele de prelucrare a informațiilor neuronale 30: Conferința anuală privind sistemele de prelucrare a informațiilor neuronale 2017, 4-9 decembrie 2017, Long Beach, CA, SUA Wenhan Wang, Ge Li, Bo Ma, Xin Xia și Zhi Jin. În , pages 261–271. IEEE. Detecting code clones with graph neural network and flow-augmented abstract syntax tree 27th IEEE International Conference on Software Analysis, Evolution and Reengineering, SANER 2020, London, ON, Canada, February 18-21, 2020 Yaqin Zhou, Shangqing Liu, Jing Kai Siow, Xiaon-ing Du, and Yang Liu. 2019. În , pages 10197–10207. Etichetă: eficient vulnerability identification by learning comprehensive program semantics via graph neural networks Advances in Neural Information Processing Systems 32: Annual Conference on Neural Information Processing Systems 2019, NeurIPS 2019, December 8-14, 2019, Vancouver, BC, Canada Daniel Zügner, Tobias Kirschstein, Michele Catasta, Jure Leskovec, and Stephan Günnemann. 2021. . In Despre OpenReview.net Învățarea reprezentării lingvistic-agnostice a sursei Codul din structură și context 9th International Conference on Learning Representations, ICLR 2021, Virtual Event, Austria, May 3-7, 2021 Acest document este disponibil în arhivă sub licența CC by 4.0 Deed (Attribution 4.0 International). Acest document este disponibil în arhivă sub licența CC by 4.0 Deed (Attribution 4.0 International).