자동 라벨링으로 객체지향 코드 이해하기
초록
본 논문은 객체지향 소스코드의 식별자를 활용해 자동으로 키워드(소프트웨어 라벨)를 생성하는 Lotus 접근법을 제안한다. ArgoUML과 Drawing Shapes 사례에 적용해 모든 라벨을 정확히 식별했으며, 코드의 어휘적 전반을 빠르게 파악할 수 있는 방법을 제공한다.
상세 분석
Lotus 접근법은 객체지향 프로그램의 식별자(클래스명, 메서드명, 변수명, 패키지명 등)를 정규화하고, 형태소 분석과 어휘 사전을 결합해 의미 있는 라벨 집합을 자동 추출한다. 먼저 파싱 단계에서 AST(Abstract Syntax Tree)를 구축해 식별자 위치와 스코프 정보를 확보한다. 이후 식별자를 카멜케이스·스네이크케이스 등 다양한 명명 규칙에 따라 토큰화하고, 각 토큰을 소문자화·불용어 제거 과정을 거쳐 후보 어휘 리스트를 만든다. 후보 어휘는 두 차원에서 평가된다. 첫째, 내부 빈도 기반 가중치로 코드 내 등장 빈도를 반영하고, 둘째, 외부 소프트웨어 도메인 어휘 사전(예: WordNet‑Software, 기술 용어 사전)과 매칭해 의미 적합성을 점수화한다. 최종 라벨은 가중합 점수가 임계값을 초과한 토큰 집합으로 정의되며, 동일 클래스·패키지 내에서 중복 라벨을 통합해 라벨 계층을 형성한다.
평가에서는 두 개의 실험 대상(ArgoUML, Drawing Shapes) 소스코드에 대해 수동 라벨링 결과와 비교했으며, 정밀도·재현율 모두 100%에 근접한 결과를 얻었다. 이는 식별자 기반 라벨링이 객체지향 설계의 의도를 그대로 반영한다는 점을 시사한다. 그러나 접근법은 식별자에 의미가 충분히 내포된 경우에만 효과적이며, 의미가 모호하거나 축약된 이름(예: “tmp”, “util”)에 대해서는 라벨 품질이 저하될 수 있다. 또한, 다국어 프로젝트나 비표준 명명 규칙을 사용하는 코드베이스에서는 사전 매핑 단계가 추가적인 로컬라이제이션 작업을 요구한다.
기술적 강점으로는(1) 전처리 단계에서 AST 기반 정확한 스코프 파악으로 라벨 충돌 최소화, (2) 도메인 어휘 사전과의 연계로 일반적인 프로그래밍 용어와 도메인 특화 용어를 동시에 포착, (3) 라벨 계층 구조를 통해 코드 탐색 및 문서화 도구와 연동이 용이하다는 점을 들 수 있다. 한계점은 라벨 자동 생성 후 인간 검증이 필요할 수 있다는 점과, 라벨이 지나치게 세분화될 경우 가독성이 떨어질 위험이 있다는 것이다. 향후 연구에서는 의미론적 클러스터링을 도입해 라벨 수를 최적화하고, 동적 실행 정보(런타임 호출 그래프)와 결합해 정적 라벨링의 정확성을 보완하는 방향을 제시한다.
댓글 및 학술 토론
Loading comments...
의견 남기기