Skip to main content
QUICK REVIEW

[논문 리뷰] OCoR: An Overlapping-Aware Code Retriever

Qihao Zhu, Zeyu Sun|arXiv (Cornell University)|2020. 08. 12.
Software Engineering Research참고 문헌 38인용 수 9
한 줄 요약

OCoR는 자연어 설명과 코드 식별자 간의 겹침을 문자 수준 임베딩과 학습 가능한 겹침 행렬을 사용하여 명시적으로 모델링함으로써 코드 검색 성능을 향상시키는 새로운 신경망 코드 검색기입니다. 이는 SQL 및 C# 데이터셋에서 기존 방법 대비 검색 정확도를 13.1%에서 22.3% 향상시켜 최신 기술 수준을 달성합니다.

ABSTRACT

Code retrieval helps developers reuse the code snippet in the open-source projects. Given a natural language description, code retrieval aims to search for the most relevant code among a set of code. Existing state-of-the-art approaches apply neural networks to code retrieval. However, these approaches still fail to capture an important feature: overlaps. The overlaps between different names used by different people indicate that two different names may be potentially related (e.g., "message" and "msg"), and the overlaps between identifiers in code and words in natural language descriptions indicate that the code snippet and the description may potentially be related. To address these problems, we propose a novel neural architecture named OCoR, where we introduce two specifically-designed components to capture overlaps: the first embeds identifiers by character to capture the overlaps between identifiers, and the second introduces a novel overlap matrix to represent the degrees of overlaps between each natural language word and each identifier. The evaluation was conducted on two established datasets. The experimental results show that OCoR significantly outperforms the existing state-of-the-art approaches and achieves 13.1% to 22.3% improvements. Moreover, we also conducted several in-depth experiments to help understand the performance of different components in OCoR.

연구 동기 및 목표

  • 기존 신경망 코드 검색 모델이 자연어 설명과 코드 식별자 간의 의미적 겹침을 포착하는 데에 한계가 있음을 해결한다.
  • 이름 간의 겹치는 부분(예: 'Sort'와 'QuickSort')과 코드 식별자 및 자연어 단어 간의 겹침(예: 'joint_table_b'와 'joint table')을 모델링한다.
  • 검색 관련성을 향상시키기 위해 겹침 특징을 명시적으로 인코딩하는 신경망 아키텍처를 설계한다.
  • 기본 데이터셋에서의 추론 및 분석 실험을 통해 겹침 인식 구성 요소의 효과를 입증한다.

제안 방법

  • 단어와 식별자를 표현하기 위해 문자 수준 임베딩을 사용하여 유사한 개념을 위한 다양한 이름 간의 부분 문자열 겹침을 포착할 수 있도록 한다.
  • 자연어 설명의 각 단어와 코드 스니펫 내 각 식별자 간의 겹침 정도를 측정하기 위해 최장 공통 부분문자열(LCS)을 측정 기준으로 삼는 새로운 겹침 행렬을 도입한다.
  • Transformer 기반 인코더에서 생성된 문맥 임베딩과 겹침 행렬을 결합하여 표현 학습을 향상시킨다.
  • 다양한 검색 신호를 통합하기 위해 여러 검색 모델 간 앙상블 학습을 활용하여 성능을 추가로 향상시킨다.
  • 정렬 성능을 최적화하기 위해 대비 손실을 사용하여 모델을 엔드 투 엔드로 훈련시킨다.

실험 결과

연구 질문

  • RQ1자연어 설명과 코드 식별자 간의 부분 문자열 겹침을 명시적으로 모델링하면 코드 검색 성능이 향상되는가?
  • RQ2문자 수준 임베딩은 개발자가 지정한 식별자에서 겹치는 부분문자열을 통해 의미적 유사성을 얼마나 잘 포착하는가?
  • RQ3LCS 기반 겹침 행렬은 표준 임베딩 기반 방법에 비해 검색 정확도 향상에 얼마나 기여하는가?
  • RQ4OCoR 아키텍처의 어떤 구성 요소가 성능 향상에 가장 기여하는가?
  • RQ5제안된 방법은 SQL 및 C# 외의 프로그래밍 언어로도 일반화 가능한가?

주요 결과

  • OCoR는 두 개의 기존 코드 검색 데이터셋에서 최신 기술 수준의 기준 모델 대비 검색 성능을 13.1%에서 22.3% 향상시킨다.
  • 제거 실험 결과, 문자 수준 임베딩과 겹침 행렬 구성 요소가 성능 향상에 필수적임을 확인한다.
  • 겹침 행렬은 철자적으로 다를 수 있지만 의미적으로 관련된 용어들(예: 'msg'와 'message') 간의 연결 능력을 크게 향상시킨다.
  • 다양한 모델의 앙상블은 성능 향상을 추가로 이끌어내어, 다양한 검색 신호를 조합하는 것이 유익함을 시사한다.
  • StaQC 데이터셋의 89.12%의 인스턴스에서 최소 한 개 이상의 겹치는 부분문자열이 존재함을 감안할 때, 높은 겹침 빈도를 가진 코드에 대해 모델의 일반화 능력이 뛰어나다.
  • 이 방법은 파이썬, 자바, C++와 같은 다른 프로그래밍 언어로의 확장 가능성도 매우 높다.

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

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

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

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