Skip to main content
QUICK REVIEW

[논문 리뷰] Big Code != Big Vocabulary: Open-Vocabulary Models for Source Code

Rafael-Michael Karampatsis, Hlib Babii|arXiv (Cornell University)|2020. 03. 17.
Software Engineering Research참고 문헌 82인용 수 76
한 줄 요약

이 논문은 소스 코드 언어 모델의 어휘 설계를 분석하고, BPE를 이용한 개방 어휘 NLM을 도입하며, 대규모 말뭉리에 확장하고, Java, C, Python에서 기존 모델을 능가한다.

ABSTRACT

Statistical language modeling techniques have successfully been applied to large source code corpora, yielding a variety of new software development tools, such as tools for code suggestion, improving readability, and API migration. A major issue with these techniques is that code introduces new vocabulary at a far higher rate than natural language, as new identifier names proliferate. Both large vocabularies and out-of-vocabulary issues severely affect Neural Language Models (NLMs) of source code, degrading their performance and rendering them unable to scale. In this paper, we address this issue by: 1) studying how various modelling choices impact the resulting vocabulary on a large-scale corpus of 13,362 projects; 2) presenting an open vocabulary source code NLM that can scale to such a corpus, 100 times larger than in previous work; and 3) showing that such models outperform the state of the art on three distinct code corpora (Java, C, Python). To our knowledge, these are the largest NLMs for code that have been reported. All datasets, code, and trained models used in this work are publicly available.

연구 동기 및 목표

  • 소스 코드 언어 모델에서 어휘 설계 선택이 어휘 규모와 OOV(단어 외) 비율에 미치는 영향을 연구한다.
  • 서브워드 단위를 사용하는 소스 코드용 대규모 개방 어휘 신경 언어 모델을 개발하고 평가한다.
  • 개방 어휘 모델이 여러 프로그래밍 언어에서 최신 모델을 능가함을 보여준다.
  • 코드 완성 및 버그 코드 하이라이팅과 같은 하류 작업에 대한 개방 어휘 모델의 영향을 평가한다.

제안 방법

  • 소스 코드에 대한 어휘 설계 선택(주석, 문자열, 공백, 필터링, 토큰 분할)을 체계적으로 평가한다.
  • Byte-Pair Encoding을 사용해 서브워드 단위를 생성하는 개방 어휘 NLM을 제안한다.
  • Java, C, Python 전역에서 최대 13,362개 프로젝트를 대상으로 GRU 기반 RNN LM을 학습한다.
  • 코드 완성에서 개방 어휘 NLM의 성능을 n-그램 LM 및 폐쇄 어휘 NLM과 비교한다.
  • 버그 코드 하이라이팅과 같은 하류 작업으로의 언어 모델 개선의 전이 효과를 평가한다.
  • 데이터셋, 코드, 학습된 모델을 공개적으로 설명하고 공개한다.

실험 결과

연구 질문

  • RQ1소스 코드 언어 모델에서 어휘 설계 선택이 어휘 규모와 OOV 비율에 어떤 영향을 미치는가?
  • RQ2서브워드 단위의 개방 어휘 모델이 대규모 코드 말뭉정과 다양한 언어에 확장될 수 있는가?
  • RQ3개방 어휘 모델이 Java, C, Python 전반에서 코드 완성 성능을 기준선 대비 향상시키는가?
  • RQ4언어 모델 개선이 버그 탐지/수집과 같은 하류 소프트웨어 공학 작업의 개선으로 이어지는가?

주요 결과

  • 어휘 설계 선택은 어휘 규모와 OOV 비율에 상당한 영향을 미치며, 실험 전반에 걸쳐 큰 효과가 관찰된다.
  • 단순한 컨벤션 분할을 넘는 서브워드 기반 접근이 어휘를 효과적으로 관리하는 데 필요하다.
  • Byte-Pair Encoding(BPE)은 진정한 개방 어휘를 가능하게 하며 예측력을 유지하면서 OOV 문제를 줄여준다.
  • 개방 어휘 NLM은 여러 언어에서 코드 완성에 대해 n-그램 LM과 폐쇄 어휘 NLM을 모두 능가한다.
  • 개방 어휘 모델은 또한 버그 코드 하이라이팅에서 우수한 성능을 보이며 하류 SE 작업으로의 전이를 시사한다.
  • 이 접근법은 수천 개의 프로젝트에서 학습하는 규모로 확장되며 당시 가장 큰 규모의 코드 신경 모델로 보고되었다.

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

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

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

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