Skip to main content
QUICK REVIEW

[论文解读] Topic modeling of public repositories at scale using names in source code

Vadim Markovtsev, Kant Eiso|arXiv (Cornell University)|Apr 1, 2017
Topic Modeling参考文献 31被引用 10
一句话总结

本文提出了一种可扩展的主题建模方法,用于公共软件仓库,通过分析1360万GitHub仓库中的程序员定义名称。采用加权MinHash进行去重,使用加性正则化主题模型(ARTM)进行主题推断,识别出256个手动标注的主题,涵盖多样化的软件领域,实现了大规模、自动化的开源项目分类,并开放获取数据与工具。

ABSTRACT

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仓库的源代码中提取标识符(变量、函数、类名),构建词袋模型。
  • 使用带局部敏感哈希(LSH)的加权MinHash检测并移除基于仓库级别的精确和模糊重复。
  • 在清洗后的数据集上训练加性正则化主题模型(ARTM),从基于名称的词汇中推断出256个手动标注的主题。
  • 使用自定义预处理管道对标识符进行归一化和过滤,聚焦于有意义的语义内容,同时去除噪声。
  • 利用Git仓库结构和元数据,确保表示的一致性,并减少主题建模中的偏差。
  • 开源完整数据集、预处理工具和训练模型,以支持可复现性与进一步研究。

实验结果

研究问题

  • RQ1程序员在源代码中定义的名称能否有效用于推断大规模软件仓库的高层次主题?
  • RQ2如何在不依赖官方分叉元数据的情况下,高效检测并移除大规模仓库中的重复和分叉仓库?
  • RQ3在1360万个开源项目名称的主题建模中,所出现的主题多样性与覆盖范围如何?
  • RQ4推断出的主题与已知的软件领域和生态系统相比如何?
  • RQ5基于代码名称的主题建模在多大程度上可作为开源项目手动分类的可扩展、自动化替代方案?

主要发现

  • 主题建模流程成功识别出256个独立且手动标注的主题,反映了主要的软件领域,包括Web框架、游戏引擎、机器学习和系统库。
  • 该模型检测到120万个仓库为重复(精确或模糊),显著提升了主题建模前的数据质量。
  • 如主题#27“机器学习、数据科学”与‘numpy’、‘matplotlib’、‘pandas’和‘scipy’等高频术语强相关。
  • 该模型捕捉到细微的语义差异,例如将‘React’和‘Vue.js’分别作为独立主题,尽管两者均为JavaScript框架,显示出对语义的敏感性。
  • 该方法揭示了命名中的重复模式,例如‘Games’和‘Web Games’作为独立主题出现,具有‘Unity’、‘Minecraft’和‘SDL’等特征关键词。
  • 开放获取的数据集与工具支持可复现分析,并推动未来在软件生态系统挖掘与趋势检测方面的研究。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。