中文

以少蕴多:构建 Python 库的轻量级嵌入表示

软件工程 2022-09-09 v1

摘要

在软件工程中,不同的方法和机器学习模型利用不同类型的数据:源代码、文本信息、历史数据。任何项目的一个重要部分是其依赖项。依赖项列表相对较小,但承载着大量语义信息,可用于比较项目或对其做出判断。本文关注 Python 项目及其以 requirements.txt 文件形式存在的 PyPi 依赖项。我们编译了一个包含 7,132 个 Python 项目及其依赖项的数据集,并使用 Git 从往年拉取它们的版本。利用这些数据,我们通过对项目和库的共现矩阵应用奇异值分解,构建了库的 32 维嵌入表示。随后我们对嵌入进行聚类并研究其语义关系。为展示此类轻量级库嵌入的实用性,我们引入了一个为给定项目推荐相关库的原型工具。该工具计算项目嵌入,并利用具有相似嵌入项目的依赖项来形成推荐。为比较不同的库推荐器,我们基于开源项目中依赖集合的演化创建了一个基准。基于所构建嵌入的方法显著优于展示给定年份中最流行库这一基线。我们还进行了一项用户研究,表明推荐质量在不同项目领域间存在差异,且即便相关的推荐也可能并非特别有用。最后,为促成潜在更有用的推荐,我们为该推荐系统扩展了推荐较罕见库的选项。

关键词

引用

@article{arxiv.2209.03507,
  title  = {So Much in So Little: Creating Lightweight Embeddings of Python Libraries},
  author = {Yaroslav Golubev and Egor Bogomolov and Egor Bulychev and Timofey Bryksin},
  journal= {arXiv preprint arXiv:2209.03507},
  year   = {2022}
}

备注

The work was carried out at the end of 2020. 11 pages, 4 figures