[논문 리뷰] Topic modeling of public repositories at scale using names in source code
이 논문은 1360만 개의 GitHub 저장소를 대상으로 프로그래머가 정의한 이름을 분석하여 확장 가능한 주제 모델링 방법을 제안한다. 중복 검출에 Weighted MinHash를, 주제 추론에 Additive Regularized Topic Model (ARTM)를 사용하여 다양한 소프트웨어 도메인을 반영하는 256개의 수작업 레이블이 부여된 주제를 식별함으로써, 오픈소스 프로젝트의 대규모 자동 분류를 가능하게 하며 데이터와 도구에 대한 개방형 액세스를 제공한다.
Programming languages themselves have a limited number of reserved keywords and character based tokens that define the language specification. However, programmers have a rich use of natural language within their code through comments, text literals and naming entities. The programmer defined names that can be found in source code are a rich source of information to build a high level understanding of the project. The goal of this paper is to apply topic modeling to names used in over 13.6 million repositories and perceive the inferred topics. One of the problems in such a study is the occurrence of duplicate repositories not officially marked as forks (obscure forks). We show how to address it using the same identifiers which are extracted for topic modeling. We open with a discussion on naming in source code, we then elaborate on our approach to remove exact duplicate and fuzzy duplicate repositories using Locality Sensitive Hashing on the bag-of-words model and then discuss our work on topic modeling; and finally present the results from our data analysis together with open-access to the source code, tools and datasets.
연구 동기 및 목표
- 수작업 키워드 태깅을 초월하여 대규모 오픈소스 소프트웨어 프로젝트의 자동 분류를 가능하게 하기 위해.
- 공식 포크 메타데이터에 의존하지 않고, 식별자 기반 중복 제거를 통해 거대한 코드 저장소에서의 중복 및 포크된 저장소 문제를 해결하기 위해.
- 대규모로 프로그래머가 정의한 소스 코드 이름에서 의미 있는, 인간이 이해할 수 있는 주제를 추출하기 위해.
- 소프트웨어 분석 및 생태계 트렌드 연구를 위한 포괄적이고 개방형 데이터셋과 도구를 제공하기 위해.
- 소스 코드 내 이름이 소프트웨어 프로젝트 의미를 이해하는 데 풍부하고 활용도가 낮은 신호임을 입증하기 위해.
제안 방법
- 1800만 개의 공개 GitHub 저장소에서 추출한 소스 코드의 식별자(변수, 함수, 클래스 이름)에서 단어의 집합 모델을 구축한다.
- 저장소 수준의 식별자를 기반으로 하여, 지역성 감지 해싱(Locality Sensitive Hashing, LSH)을 사용한 Weighted MinHash를 적용하여 정확한 중복과 흐릿한 중복을 탐지하고 제거한다.
- 청소된 데이터셋에 Additive Regularized Topic Model (ARTM)을 훈련시켜 이름 기반 어휘에서 수작업으로 레이블이 부여된 256개의 주제를 추론한다.
- 의미 있는 의미적 내용에 집중하면서 노이즈를 제거하기 위해, 고유한 전처리 파이프라인을 구축하여 식별자를 정규화하고 필터링한다.
- Git 저장소의 구조와 메타데이터를 활용하여 일관된 표현을 보장하고 주제 모델링의 편향을 줄인다.
- 전체 데이터셋, 전처리 도구, 훈련된 모델을 오픈소스로 공개하여 재현 가능성과 향후 연구를 지원한다.
실험 결과
연구 질문
- RQ1프로그래머가 정의한 소스 코드 내 이름은 대규모 소프트웨어 저장소의 고수준 주제를 효과적으로 추론하는 데 사용될 수 있는가?
- RQ2공식 포크 메타데이터에 의존하지 않고, 대규모로 중복 및 포크된 저장소를 효율적으로 탐지하고 제거할 수 있는가?
- RQ31360만 개의 오픈소스 프로젝트에 걸쳐 이름 기반 주제 모델링에서 도출된 주제의 다양성과 커버리지가 어떻게 되는가?
- RQ4추론된 주제들은 알려진 소프트웨어 도메인과 생태계와 어떻게 비교될 수 있는가?
- RQ5코드 이름 기반 주제 모델링이 오픈소스 프로젝트의 수작업 분류에 비해 얼마나 스케일러블하고 자동화된 대안이 될 수 있는가?
주요 결과
- 주제 모델링 파이프라인은 웹 프레임워크, 게임 엔진, 머신러닝, 시스템 라이브러리 등 주요 소프트웨어 도메인을 반영하는 256개의 고유하고 수작업 레이블이 부여된 주제를 성공적으로 식별했다.
- 모델은 120만 개의 저장소를 정확하거나 흐릿한 중복으로 탐지하여 주제 모델링 이전에 데이터 품질을 크게 향상시켰다.
- '머신러닝, 데이터 과학'(주제 #27)과 같은 주제는 'numpy', 'matplotlib', 'pandas', 'scipy'와 같은 고빈도어휘와 강하게 연관되어 있었다.
- React와 Vue.js와 같이 모두 자바스크립트 프레임워크이지만 별개의 주제로 식별된 점은 의미론적 민감도를 보여주었다.
- 이름의 반복 패tern을 드러낸 결과, '게임'과 '웹 게임'은 각각 'Unity', 'Minecraft', 'SDL'와 같은 특징 키워드를 가진 별개의 주제로 나타났다.
- 오픈 액세스 데이터셋과 도구는 재현 가능한 분석을 가능하게 하며 소프트웨어 생태계 채굴 및 트렌드 탐지 분야의 향후 연구를 지원한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.