
정교하게 훈련된 머신러닝 모델은 대량의 오픈소스 소프트웨어 데이터를 활용함으로써, 이제 소프트웨어 공학(Software Engineering, SE) 작업의 자동화를 위한 흥미로운 접근법으로 부상하고 있다. 최근 몇 년간 더 나은 모델과 훈련 방법의 발전으로 인해 여러 SE 작업들이 이 접근법을 적용해 왔으며, 성능이 점차 향상되고 있다. 보다 많고 다양한 정제된 레이블 데이터는 모델 훈련에 더욱 유리하지만, 고품질 데이터셋을 구축하는 것은 시간이 오래 걸리고 어려운 과제이다. 정제된 레이블 데이터의 양과 다양성을 증가시키는 방법은 일반적으로 광범위한 적용 가능성을 지닌다. 일부 언어(예: Ruby)의 경우 레이블 데이터가 상대적으로 적고, 다른 언어(예: JavaScript)는 특정 응용 분야에 치우친 데이터가 많아 다양성이 부족한 경우가 있다. 이러한 데이터 제약을 극복하기 위해, 우리는 서로 다른 언어로 작성된 인간의 코드가 동일한 기능을 수행할 때 매우 유사하며, 특히 식별자(identifier) 이름 패턴을 잘 유지한다는 증거를 제시한다. 또한 식별자가 소프트웨어 공학 작업의 훈련 데이터에서 매우 중요한 요소임을 추가로 입증한다. 이 우연한 현상을 활용하여, 다양한 언어 간에 존재하는 다국어 훈련 데이터가 성능 향상에 기여할 수 있다는 증거를 찾았다. 본 연구에서는 코드 요약(code summarization), 코드 검색(code retrieval), 함수 이름 지정(function naming)의 세 가지 작업에 대해 이 현상을 검토하였다. 또한 이 데이터 증강 기법이 다양한 작업, 언어, 머신러닝 모델과 넓게 호환됨을 확인하였다.