세상에는 영어(Python), 스페인어(Java)처럼 널리 쓰이는 언어들이 있습니다. 그런데 최근 **'OpenHarmony'**라는 새로운 생태계가 생기면서, 그 안에서만 쓰는 **'ArkTS'**라는 특별한 언어가 등장했습니다.
문제는 이 언어가 너무 신생 언어라, 기존의 인공지능(AI)들은 이 언어를 잘 모른다는 거예요. 마치 **"한국어는 잘하지만, 제주도 방언은 하나도 못 알아듣는 외국인 AI"**와 같은 상황이죠. 개발자들이 "이 기능 하는 코드 좀 찾아줘!"라고 말해도 AI가 엉뚱한 답을 내놓는 겁니다.
2. 연구의 핵심: "제주도 방언 사전과 학습 교재 만들기" 📚
연구팀은 이 문제를 해결하기 위해 두 가지 큰 일을 했습니다.
첫째, 거대한 'ArkTS 사전' 만들기 (Dataset): GitHub이나 Gitee 같은 코드 저장소에서 ArkTS로 작성된 수만 개의 코드 조각들을 긁어모았습니다. 단순히 코드만 모은 게 아니라, **"이 코드는 이런 일을 해"라고 적힌 설명(주석)**을 짝지어서 모았습니다. 마치 '단어-뜻'이 적힌 거대한 단어장을 만든 것이죠.
둘째, AI에게 '집중 과외' 시키기 (Fine-tuning): 기존의 똑똑한 AI 모델들에게 이 단어장을 주고 공부를 시켰습니다. 특히 연구팀은 아주 똑똑한 전략을 썼는데, ArkTS가 TypeScript라는 언어와 형제 관계라는 점을 이용해 **"먼저 형(TypeScript)부터 공부시키고, 그다음에 동생(ArkTS)을 가르치는 2단계 과외법"**을 사용했습니다.
3. 결과: "공부하더니 진짜 알아듣네!" 🎓
연구 결과는 놀라웠습니다.
공부의 힘: 아무것도 모르는 상태(Zero-shot)의 AI보다, 이 데이터셋으로 집중 과외를 받은 AI가 훨씬 더 정확하게 코드를 찾아냈습니다.
덩치보다 실력: 무조건 덩치 큰(파라미터가 많은) AI가 최고인 줄 알았는데, 적당한 크기의 AI라도 이 전용 교재로 제대로 공부시키면 덩치 큰 AI보다 더 똑똑하게 코드를 찾아낼 수 있음을 증명했습니다.
언어의 특성: ArkTS 설명에는 중국어가 많았는데, 중국어를 잘하는 AI 모델들이 이 작업에서 특히 더 뛰어난 성적을 거두었습니다.
4. 요약하자면? 💡
이 논문은 **"ArkTS라는 신생 언어를 위한 'AI용 학습 교재'를 세상에 처음으로 공개하고, 어떻게 공부시켜야 AI가 코드를 가장 잘 찾는지 알려주는 가이드북"**이라고 할 수 있습니다.
이제 개발자들은 이 교재와 모델을 활용해, 마치 구글 검색처럼 "자연어로 말하면 딱 맞는 코드를 찾아주는" 아주 편리한 도구를 만들 수 있게 되었습니다!
[기술 요약] ArkTS-CodeSearch: 코드 검색을 위한 오픈소스 ArkTS 데이터셋
1. 문제 정의 (Problem Statement)
배경: ArkTS는 OpenHarmony 생태계의 핵심 프로그래밍 언어이며, HarmonyOS NEXT의 확산에 따라 코드 이해 도구(코드 검색, 추천, 번역 등)에 대한 수요가 급증하고 있습니다.
문제점: ArkTS는 TypeScript 기반임에도 불구하고, 고유한 문법(선언적 UI 어노테이션, 분산 애플리케이션 프리미티브 등)을 가지고 있습니다. 그러나 현재 ArkTS를 위한 공개 데이터셋과 표준화된 평가 벤치마크가 전무하여, ArkTS 전용 코드 지능(Code Intelligence) 연구가 정체되어 있는 상황입니다.
2. 연구 방법론 (Methodology)
본 논문은 데이터셋 구축부터 모델 학습 및 평가까지의 전체 워크플로우를 제안합니다.
A. 데이터 수집 및 구축 (Data Collection)
소스: GitHub와 Gitee에서 OpenHarmony 관련 저장소를 크롤링하여 1,577개의 고유 저장소를 확보했습니다.
추출 방식:tree-sitter-arkts 파서를 사용하여 ArkTS 소스 코드를 추상 구문 트리(AST)로 변환했습니다. 이를 통해 함수/클래스 단위의 코드와 그에 대응하는 자연어 독스트링(Docstring) 쌍을 정확하게 추출했습니다.
데이터 규모: 총 24,452개의 ArkTS 함수 쌍을 구축하였으며, Gitee(12,792개)와 GitHub(11,660개)에서 균형 있게 수집되었습니다.
B. 검색 태스크 및 모델링 (Retrieval Methods)
태스크: 자연어 독스트링을 쿼리로 사용하여 해당 ArkTS 함수를 찾아내는 'Single-search' 태스크를 정의했습니다.
비교 대상:
Lexical Retrieval: BM25 (중국어 처리를 위해 jieba 토크나이저 사용).
Semantic Retrieval: 사전 학습된 코드 임베딩 모델(CodeBERT, BGE, Gemma 등)을 활용한 밀집 벡터(Dense Vector) 검색.
평가 지표: MRR(Mean Reciprocal Rank), NDCG@k, Recall@k를 사용하여 검색 성능을 측정했습니다.
C. 미세 조정 전략 (Fine-Tuning Strategy)
ArkTS의 특수성을 반영하기 위해 세 가지 학습 구성을 실험했습니다:
ARKTS-TRAINING: ArkTS 데이터로만 학습.
TS-TRAINING: 유사 언어인 TypeScript 데이터로만 학습.
TS → ARKTS-TRAINING (2단계 전략): TypeScript로 먼저 적응(Adaptation)시킨 후, ArkTS로 추가 미세 조정을 수행하는 단계적 학습.
3. 주요 기여 (Key Contributions)
최초의 대규모 ArkTS 데이터셋 공개: GitHub와 Gitee를 망라하는 고품질의 ArkTS 함수-독스트링 쌍 데이터셋을 구축하여 HuggingFace에 공개했습니다.
표준 벤치마크 수립: ArkTS 코드 검색을 위한 표준화된 평가 프로토콜과 지표를 제시했습니다.
최적화된 모델 제공: ArkTS 검색 성능이 극대화된 미세 조정 모델을 공개하여 후속 연구를 지원합니다.
4. 연구 결과 (Results)
사전 학습 모델 성능: 별도의 학습 없이 사용했을 때는 Qwen3-Embedding-0.6B가 가장 우수했습니다. 특히 중국어 기반 독스트링이 많아, 중국어 친화적인 모델(bge-base-zh)이 영어 모델보다 높은 성능을 보였습니다.
미세 조정의 효과: 모든 모델에서 미세 조정 후 성능이 비약적으로 향상되었습니다. 특히 **2단계 전략(TS → ARKTS)**이 대규모 모델에서 가장 뛰어난 성능을 보였습니다.
모델 크기 vs 성능: 단순히 모델이 크다고 좋은 것이 아니라, **도메인 적응(Domain Adaptation)**이 더 중요함을 입증했습니다. 중간 규모의 모델(embeddinggemma-300m)이 적절한 미세 조정을 거치면 훨씬 큰 모델보다 더 높은 성능을 기록했습니다.
BM25의 한계: 단순 키워드 매칭인 BM25는 의미론적 관계를 포착하지 못해 임베딩 기반 모델에 비해 현저히 낮은 성능을 보였습니다.
5. 의의 및 결론 (Significance & Conclusion)
본 연구는 ArkTS라는 신흥 언어에 대한 AI 지원 개발 환경을 구축하기 위한 필수적인 인프라를 제공합니다.
언어적 특성 반영: ArkTS의 다국어(특히 중국어) 특성과 TypeScript와의 유사성을 활용한 학습 전략의 유효성을 증명했습니다.
연구 확장성: 향후 커밋 메시지, 코드 변경 사항(Diff) 등을 포함한 확장된 데이터셋과 AST/그래프 기반의 구조 인식 모델 연구로 이어질 수 있는 토대를 마련했습니다.