Skip to main content
QUICK REVIEW

[논문 리뷰] Simplifying Deep-Learning-Based Model for Code Search.

Chao Liu, Xin Xia|arXiv (Cornell University)|2020. 05. 29.
Software Engineering Research참고 문헌 44인용 수 6
한 줄 요약

이 논문은 코드 검색을 위한 간소화된 딥러닝 기반 모델인 CodeMatcher를 제안한다. 이 모델은 키워드 기반 검색과 메소드 이름 및 본문에 대한 퍼지 매칭을 결합하여, 41,000개의 저장소로 구성된 데이터셋에서 DeepCS 대비 97% 높은 MRR과 66배 빠른 속도 향상을 달성하며, 최신의 정보 검색(IR) 모델인 CodeHow에 비해 MRR에서 73% 높은 성능을 기록한다.

ABSTRACT

To accelerate software development, developers frequently search and reuse existing code snippets from a large-scale codebase, e.g., GitHub. Over the years, researchers proposed many information retrieval (IR) based models for code search, which match keywords in query with code text. But they fail to connect the semantic gap between query and code. To conquer this challenge, Gu et al. proposed a deep-learning-based model named DeepCS. It jointly embeds method code and natural language description into a shared vector space, where methods related to a natural language query are retrieved according to their vector similarities. However, DeepCS' working process is complicated and time-consuming. To overcome this issue, we proposed a simplified model CodeMatcher that leverages the IR technique but maintains many features in DeepCS. Generally, CodeMatcher combines query keywords with the original order, performs a fuzzy search on name and body strings of methods, and returned the best-matched methods with the longer sequence of used keywords. We verified its effectiveness on a large-scale codebase with about 41k repositories. Experimental results showed the simplified model CodeMatcher outperforms DeepCS by 97% in terms of MRR (a widely used accuracy measure for code search), and it is over 66 times faster than DeepCS. Besides, comparing with the state-of-the-art IR-based model CodeHow, CodeMatcher also improves the MRR by 73%. We also observed that: fusing the advantages of IR-based and deep-learning-based models is promising because they compensate with each other by nature; improving the quality of method naming helps code search, since method name plays an important role in connecting query and code.

연구 동기 및 목표

  • 코드 검색에서 자연어 쿼리와 코드 스니펫 간의 의미적 격차를 해소하기 위해.
  • DeepCS의 복잡하고 느린 추론 과정을 단순화하면서도 그 의미 매칭 능력을 유지하기 위해.
  • 키워드 기반 정보 검색(IR)과 딥러닝 기반 벡터 정렬을 융합하여 검색 정확도와 효율성을 향상시키기 위해.
  • 정보 검색 기반과 딥러닝 기반 접근 방식을 융합하는 것이 코드 검색에 얼마나 효과적인지 조사하기 위해.
  • 메소드 이름 품질이 코드 검색 성능에 미치는 영향을 평가하기 위해.

제안 방법

  • CodeMatcher는 쿼리 키워드를 원래 순서로 조합하여 메소드 이름과 본문에 대비해 퍼지 매칭을 위한 쿼리 시퀀스를 형성한다.
  • 메소드 이름과 메소드 본문에 대해 퍼지 문자열 매칭을 수행하여 관련 코드 스니펫을 식별한다.
  • 매칭에 사용된 키워드 시퀀스의 길이에 따라 가장 잘 매칭된 메소드를 반환하며, 더 포괄적인 매칭을 우선시한다.
  • DeepCS의 공유 벡터 공간 개념을 활용하지만, 엔드 투 엔드 학습을 피함으로써 아키텍처를 단순화한다.
  • 효율적인 문자열 연산에 의존하면서도, 쿼리 키워드를 코드 요소와 정렬함으로써 의미적 관련성을 유지한다.
  • 키워드 매칭과 의미 정렬을 융합함으로써 정보 검색 기반 및 딥러닝 기반 모델의 장점을 통합한다.

실험 결과

연구 질문

  • RQ1간소화된 모델이 추론 속도를 크게 향상시키면서도 DeepCS의 의미 매칭 능력을 유지할 수 있는가?
  • RQ2MRR 및 속도 측면에서 CodeMatcher는 DeepCS 및 최신 IR 기반 모델인 CodeHow와 비교해 어떻게 성능을 내는가?
  • RQ3메소드 이름이 코드 검색 효과성에 얼마나 기여하는가?
  • RQ4정보 검색 기반 기법과 딥러닝 원리를 융합하면 코드 검색 정확도와 효율성이 향상되는가?
  • RQ5메소드 이름 품질을 향상시키면 코드 검색 결과가 더 나아지는가?

주요 결과

  • CodeMatcher는 41,000개의 저장소로 구성된 대규모 코드베이스에서 DeepCS 대비 97% 높은 MRR을 달성한다.
  • CodeMatcher는 DeepCS 대비 66배 이상 빠른 속도를 기록하여 추론 효율성을 크게 향상시킨다.
  • CodeMatcher는 최신 IR 기반 모델인 CodeHow에 비해 MRR에서 73% 높은 성능을 기록한다.
  • 정보 검색 기반과 딥러닝 기반 접근 방식을 융합하는 것은 유망한데, 서로의 강점을 상보적으로 보완하기 때문이다.
  • 메소드 이름 품질 향상은 코드 검색 성능을 향상시키며, 메소드 이름이 쿼리와 코드를 연결하는 데 핵심적인 역할을 한다.

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

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

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

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