Skip to main content
QUICK REVIEW

[논문 리뷰] A parallel corpus of Python functions and documentation strings for automated code documentation and code generation

Antonio Valerio Miceli Barone, Rico Sennrich|arXiv (Cornell University)|2017. 07. 07.
Natural Language Processing Techniques참고 문헌 14인용 수 57
한 줄 요약

이 논문은 GitHub에서 수집한 파이썬 함수와 그 도큐스트링의 대형 병렬 말뭉치와 코드 문서화 및 코드 생성의 베이스라인을 제시하고, 연구를 위해 이 자원을 공개했다.

ABSTRACT

Automated documentation of programming source code and automated code generation from natural language are challenging tasks of both practical and scientific interest. Progress in these areas has been limited by the low availability of parallel corpora of code and natural language descriptions, which tend to be small and constrained to specific domains. In this work we introduce a large and diverse parallel corpus of a hundred thousands Python functions with their documentation strings ("docstrings") generated by scraping open source repositories on GitHub. We describe baseline results for the code documentation and code generation tasks obtained by neural machine translation. We also experiment with data augmentation techniques to further increase the amount of training data. We release our datasets and processing scripts in order to stimulate research in these areas.

연구 동기 및 목표

  • 대규모이고 현실적인 코드-언어 말뭉치가 자동 코드 문서화 및 생성 향상을 위해 필요하다는 동기를 제시한다.
  • GitHub의 파이썬 함수와 도큐스트링 및 동반 메타데이터로 다양한 병렬 말뭉치를 생성한다.
  • 코드-도큐스트링 및 도큐스트링-코드 작업에 대한 기본 신경 기계 번역 결과를 제공한다.
  • 합성 도큐스트링을 통한 데이터 증강으로 학습 데이터를 강화한다.
  • 데이터셋, 전처리 스크립트, 베이스라인 구성 등을 연구 커뮤니티에 공개한다.

제안 방법

  • GitHub에서 Python 2.7 코드를 수집하고 함수 선언부, 도큐스트링, 본문으로 분할한다.
  • 병렬 말뭉치를 생성하고 합성 도큐스트링을 가진 코드 전용 말뭉치를 별도로 만들기 위해 필터링 및 전처리한다.
  • 모제스 토큰화로 토큰화하고 희소성을 줄이기 위해 바이트-페어 인코딩을 적용한다.
  • 특정 하이퍼파라미터로 Nematus를 사용하여 양 방향(코드-도큐스트링 및 도큐스트링-코드) 신경 기계 번역 모델을 학습한다.
  • 코드 전용 데이터에 합성 도큐스트링을 생성하여 백번역(backtranslation)을 적용하고 재학습한다.

실험 결과

연구 질문

  • RQ1큰 규모의 다양하고 파이썬 함수-도큐스트링 코퍼스가 코드 문서화 및 코드 생성 작업에 효과적인 학습을 뒷받침할 수 있는가?
  • RQ2이 데이터에서 코드-도큐스트링 및 도큐스트링-코드 작업에 대한 신경 기계 번역 베이스라인은 어떻게 수행되는가?
  • RQ3백번역 및 합성 도큐스트링 증강이 성능을 개선하는가?
  • RQ4이 코퍼스에 대한 작업 난이도를 나타내는 기본 BLEU 점수는 무엇인가?

주요 결과

  • 주요 병렬 코퍼스에는 150,370개의 함수 선언, 도큐스트링, 본문이 포함되며 학습용 109,108개, 검증용 2,000개, 테스트용 2,000개 예제를 포함한다.
  • Code-to-docstring 베이스라인 BLEU: 14.03 (유효성) 및 13.84 (테스트).
  • Docstring-to-code (base) BLEU: 10.32 (유효성) 및 10.24 (테스트).
  • Docstring-to-code with backtranslation BLEU: 10.85 (유효성) 및 10.90 (테스트).
  • Backtranslation은 기본 도큐스트링-코드 모델 대비 약 0.5–0.6 BLEU 포인트의 중간 정도의 개선을 제공한다.
  • 데이터세트가 이전에 발표된 파이썬 말뭉치보다 더 까다로우며(예: 다른 데이터셋의 BLEU 점수가 60–85 범위), 현실적인 복잡성을 시사한다.

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

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

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

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