Skip to main content
QUICK REVIEW

[논문 리뷰] Predicting the Programming Language of Questions and Snippets of StackOverflow Using Natural Language Processing

Kamel Alreshedy, Dhanush Dharmaretnam|arXiv (Cornell University)|2018. 09. 21.
Topic Modeling참고 문헌 13인용 수 3
한 줄 요약

이 논문은 자연어 처리와 코드 스니펫을 활용하여 스택 오버플로우 질문의 프로그래밍 언어를 예측하는 기계학습 분류기를 제안하며, 텍스트 및 코드 특징을 조합하여 91.1%의 정확도를 달성한다. 또한 텍스트 전용 모델(81.1% 정확도)과 코드 전용 모델(77.7% 정확도)을 도입하여 자동 태깅 및 코드 분석 도구의 효과적인 언어 검출을 입증한다.

ABSTRACT

Stack Overflow is the most popular Q&A website among software developers. As a platform for knowledge sharing and acquisition, the questions posted in Stack Overflow usually contain a code snippet. Stack Overflow relies on users to properly tag the programming language of a question and it simply assumes that the programming language of the snippets inside a question is the same as the tag of the question itself. In this paper, we propose a classifier to predict the programming language of questions posted in Stack Overflow using Natural Language Processing (NLP) and Machine Learning (ML). The classifier achieves an accuracy of 91.1% in predicting the 24 most popular programming languages by combining features from the title, body and the code snippets of the question. We also propose a classifier that only uses the title and body of the question and has an accuracy of 81.1%. Finally, we propose a classifier of code snippets only that achieves an accuracy of 77.7%. These results show that deploying Machine Learning techniques on the combination of text and the code snippets of a question provides the best performance. These results demonstrate also that it is possible to identify the programming language of a snippet of few lines of source code. We visualize the feature space of two programming languages Java and SQL in order to identify some special properties of information inside the questions in Stack Overflow corresponding to these languages.

연구 동기 및 목표

  • 질문의 잘못된 또는 누락된 프로그래밍 언어 태그로 인해 효과적인 질문 라우팅 및 코드 렲영이 방해당하는 문제를 해결한다.
  • 질문의 자연어 텍스트와 코드 스니펫을 모두 활용하여 자동 태그 제안 시스템의 정확도를 향상시킨다.
  • 스택 오버플로우를 초월하여도 적용 가능한, 단독으로 짧은 코드 스니펫의 프로그래밍 언어를 신뢰성 있게 식별하는 방법을 개발한다.
  • 프로그래밍 언어 예측에서 텍스트 콘텐츠와 코드 구조 간의 기여도를 평가한다.
  • 코드 검색 엔진, 문서화 도구, 스니펫 매니저 등에 더 나은 지원을 제공하기 위해 언어 검출을 자동화한다.

제안 방법

  • 질문 제목, 본문 및 코드 스니펫에서 추출한 특징을 기반으로 다중항법 베이지안, 랜덤 포레스트, XGBoost를 사용한 하이브리드 분류기를 훈련시켰다.
  • 의존성 구문 분석 및 어휘 분석을 포함한 NLP 기법을 활용해 텍스트(제목 및 본문)에서 언어학적 및 문법적 특징을 추출했다.
  • 주석과 공백을 제거한 후, 키워드, 연산자, 구문 패턴과 같은 구문적 및 구조적 특징을 추출하기 위해 코드 스니펫을 사전 처리했다.
  • 텍스트 기반 및 코드 기반 특징을 통합하여 주 분류기 훈련을 위한 유일한 특징 벡터를 구성했다.
  • 코드와 텍스트에서 예측된 언어를 기반으로 태그를 제안하는 하이브리드 자동 태깅 시스템을 사용하여 사용자 태깅 정확도를 향상시켰다.
  • 자바와 SQL의 특징 공간을 시각화하여 개발자 질문에서 언어별로 특징적인 어휘적 및 구문적 패턴을 식별했다.

실험 결과

연구 질문

  • RQ1텍스트 콘텐츠와 코드 스니펫을 모두 활용하여 스택 오버플로우 질문의 프로그래밍 언어를 예측할 수 있는가?
  • RQ2코드 스니펫에 의존하지 않고 질문의 텍스트 정보(제목 및 본문)만으로도 프로그래밍 언어를 예측할 수 있는가?
  • RQ3단독으로 존재하는 코드 스니펫에 대해 기계학습을 활용해 프로그래밍 언어를 예측할 수 있는가?
  • RQ4텍스트만, 코드만, 또는 둘 다를 사용했을 때 언어 예측 성능가 어떻게 달라지는가?

주요 결과

  • 텍스트 및 코드 특징을 모두 사용한 통합 분류기는 91.1%의 정확도를 기록했으며, 정밀도와 재현율 모두 0.91이었다.
  • 텍스트 전용 분류기는 81.1%의 정확도를 기록했으며, 이는 이전 최고 성능 모델(예: Baquero et al. [13])을 초월하는 정밀도(0.83)와 재현율(0.81)을 확보했다.
  • 코드 전용 분류기는 77.7%의 정확도를 기록했으며, 짧은 코드 스니펫이라도 기계학습을 통해 신뢰성 있게 분류가 가능하다는 점을 입증했다.
  • 텍스트 특징이 코드 특징보다 더 높은 예측 능력을 보였으며, 질문 내 자연어적 단서가 언어 식별에 더 구분력이 있음을 시사한다.
  • 특징 공간 시각화를 통해 자바와 SQL에 관한 질문에서 언어별로 특징적인 어휘적 및 구문적 패턴을 확인했으며, 개발자 대화에서 언어에 특화된 어휘와 어법이 존재함을 확인했다.
  • 모델은 스택 오버플로우를 초월해 블로그 포스트, 문서화 자료, 코드 리포지터리 등에 적용되어 자동 언어 태깅에 활용될 수 있다.

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

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

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

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