一句话:Sosed 通过子词嵌入聚类比较项目代码分布,在大规模 GitHub 库中发现语义相似的软件项目。
本文提出 Sosed,一个用于发现相似软件项目的工具。作者用 fastText 将子词映射到稠密向量空间,对 200 种语言、12 万个 GitHub 项目计算嵌入,再对嵌入聚类,得到反映源码主题的语义相似子词簇;同时以 900 万个 GitHub 项目作为检索库。给定任意输入项目后,Sosed 抽取其 16 种最流行编程语言的子词,计算簇分布,并在检索库中找出分布最接近的项目。为让输出可解释,作者还为子词簇标注了简短描述,使检索结果带有可读的主题说明。
In this paper, we present Sosed, a tool for discovering similar software projects. We use fastText to compute the embeddings of subtokens into a dense space for 120,000 GitHub projects in 200 languages. Then, we cluster embeddings to identify groups of semantically similar subtokens that reflect topics in source code. We use a dataset of 9 million GitHub projects as a reference search base. To identify similar projects, we compare the distributions of clusters among their subtokens. The tool receives an arbitrary project as input, extracts subtokens in 16 most popular programming languages, computes cluster distribution, and finds projects with the closest distribution in the search base. We labeled subtoken clusters with short descriptions to enable Sosed to produce interpretable output.
DOI 原文 ·
@inproceedings{paperbot5870,
title = {Sosed},
author = {Egor Bogomolov and Yaroslav Golubev and Artyom Lobanov and Vladimir Kovalenko and Timofey Bryksin},
booktitle = {ASE},
year = {2020},
doi = {10.1145/3324884.3415291}
}