Skip to main content
QUICK REVIEW

[논문 리뷰] Towards Full-line Code Completion with Neural Language Models

Wenhan Wang, Sijie Shen|arXiv (Cornell University)|2020. 09. 18.
Software Engineering Research참고 문헌 22인용 수 8
한 줄 요약

이 논문은 신경어휘모델을 사용해 한 번에 전체 코드 라인을 생성하는 새로운 작업인 전체 라인 코드 보완을 소개한다. 트랜스포머와 RNN 기반 모델을 파이썬 데이터셋에서 평가한 결과, 토큰 시퀀스 기반 트랜스포머 모델이 문법 기반 및 BPE 접근 방식을 능가하며 높은 문법 정확도와 만족할 만한 추론 속도를 보였지만, 문법 안내 기능은 명확한 성능 향상 없이 상당한 지연을 유발하는 것으로 나타났다.

ABSTRACT

A code completion system suggests future code elements to developers given a partially-complete code snippet. Code completion is one of the most useful features in Integrated Development Environments (IDEs). Currently, most code completion techniques predict a single token at a time. In this paper, we take a further step and discuss the probability of directly completing a whole line of code instead of a single token. We believe suggesting longer code sequences can further improve the efficiency of developers. Recently neural language models have been adopted as a preferred approach for code completion, and we believe these models can still be applied to full-line code completion with a few improvements. We conduct our experiments on two real-world python corpora and evaluate existing neural models based on source code tokens or syntactical actions. The results show that neural language models can achieve acceptable results on our tasks, with significant room for improvements.

연구 동기 및 목표

  • 전체 라인 코드 보완이라는 새로운 코드 보완 작업을 제안하고 정의하는 것: 기존의 토큰 단위 예측 방식이 아니라 한 번에 전체 코드 라인을 생성하는 방식이다.
  • 실제 파이썬 컬렉션을 사용해 최신 신경어휘모델(RNN, 트랜스포머, 문법 기반 모델)을 이 새로운 작업에 대해 평가하는 것.
  • 토큰 기반 또는 BPE 기반 모델 대비 ASDL 액션을 통한 문법 기반 코드 생성이 전체 라인 코드 보완 성능을 향상시키는지 조사하는 것.
  • 전체 라인 코드 보완에서 문법 정확도, 추론 속도, 모델 효과성 간의 상충 관계를 분석하는 것.
  • 현재 문법 안내 기능의 한계를 파악하고 정적 분석 및 AST 구조 통합을 통한未래 개선 방안을 탐색하는 것.

제안 방법

  • 저자들은 GitHub 리포지토리에서 파이썬 2와 파이썬 3용 두 개의 대규모 파이썬 데이터셋을 구축하여 학습 및 평가에 사용했다.
  • 소스 코드 토큰, ASDL 문법 액션, BPE 서브토큰을 기반으로 트랜스포머 및 GRU 기반 신경어휘모델을 미세조정하여 전체 코드 라인 생성을 수행했다.
  • 문법 기반 생성을 위해, 코드 스니펫을 구조 생성 액션 시퀀스로 변환하는 ASDL 파서를 사용하여 문법적 정확성을 보장했다.
  • 표준 평가 지표인 BLEU, ROUGE, 정확한 매칭을 사용해 모델을 평가하였으며, 결과는 두 데이터셋 모두에 대해 보고되었다.
  • 추론 속도는 빔 서치(빔 크기=5)를 사용해 토큰 기반, 문법 기반, BPE 기반 모델 간의 시간 효율성을 비교했다.
  • 수동으로 생성된 코드를 점검하여 문법 정확도를 검증하고, 변수 사용 및 API 호출과 관련된 실패 케이스를 분석했다.

실험 결과

연구 질문

  • RQ1신경어휘모델은 한 번에 하나의 토큰을 예측하는 대신 전체 코드 라인을 단일 단계에서 효과적으로 생성할 수 있는가?
  • RQ2전체 라인 코드 보완 작업에서 트랜스포머 기반 모델은 RNN 기반 모델보다 어떻게 비교되는가?
  • RQ3ASDL 기반 문법 액션을 통합하면 전체 라인 코드 생성의 성능과 정확도가 향상되는가?
  • RQ4문법 기반 생성과 토큰 기반 생성 간에 문법 정확도와 추론 효율성 간의 상충 관계는 어떠한가?
  • RQ5BPE 토크나이제이션과 식별자 처리 방식은 전체 라인 코드 보완에서 모델 성능에 어떤 영향을 미치는가?

주요 결과

  • 트랜스포머 기반 언어 모델은 파이썬 2 및 파이썬 3 데이터셋에서 모든 평가 지표에서 RNN 기반 모델을 능가한다.
  • 토큰 기반 트랜스포머 모델이 가장 높은 성능을 보였으며, Py150에서 47.67%의 정확한 매칭률을 기록했고, 문법 기반 모델을 능가했다.
  • 문법 기반 모델는 문법 정확성을 보장하지만, 훨씬 느리며, 추론당 1초 이상 소요되는 반면, 토큰 기반 모델은 0.1초 미만으로 훨씬 빠르다.
  • BPE 기반 모델은 OOV 문제를 줄였지만, 순수 토큰 모델 대비 식별자 생성 성능에서 열등하다.
  • 대부분의 토큰 기반 모델이 생성한 코드 라인은 문법적으로 정확했으며, 이는 신경어휘모델이 대규모 데이터로부터 문법을 암묵적으로 학습할 수 있음을 시사한다.
  • 문법 기반 접근 방식이 토큰 기반 모델을 능가하지 못하는 것은 ASDL 액션 시퀀스가 더 길고 비효율적이며, 모델이 데이터로부터 문법을 학습할 수 있을 경우 명시적 문법 제약가 효과적이지 않기 때문이다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.