关键类是开发者,尤其是新手,理解不熟悉软件系统的绝佳起点。尽管文献中提出了许多识别关键类的无监督学习方法——通常是将软件表示为类依赖网络(即软件网络)并利用各种网络指标(如 -指数, -指数,核心度 和PageRank 值)——但这些方法未能考虑软件制品(如用户手册)中可用的信息,以及软件网络中小网络子图(如模式)所捕获的高阶信息。在本文中,我们介绍了 BiMo,一种用于识别 Java 项目中关键类的新方法。首先,我们利用 c lass-level a ggregated n etwork () 来精确表示类及其类间耦合。其次,我们从用户手册和类源代码中提取二元词对(即共现词对),并提出一种 b iterm-based s e mantic similarity metric, BE,以量化用户手册与类之间的语义相似度。第三,我们检测 中所有的 3 节点和 4 节点模式,并利用它们构建一个 m otif-based c lass c oupling n etwork (MCCN);基于 MCCN,我们提出一种 m otif-based c oreness metric, MC,以表征 MCCN 中类的高阶信息。第四,基于 BE 和 MC 指标,我们开发了一种新的 PageRank 变体 BiCoRank,以衡量 中类的 PageRank 值 作为类的重要性。最后,我们按照重要性对类进行降序排列,并使用截断值来过滤非关键类:排名靠前的类即为推荐的关键类。在 18 个开源 Java 项目集合上进行的实证实验表明:i) BiMo 显著优于所有基线方法,且差异显著;ii) BiMo 对 中用于为不同关系类型分配权重的不同加权机制具有鲁棒性;iii) MC 和 BE 指标均显著增强了 BiMo 的有效性;iv) BiMo 表现出强大的可扩展性,非常适合应用于大型系统;以及 v) BiMo 在实际软件理解任务中显示出巨大的前景。