基于改进LDA模型的主题识别及演化研究——以软件开源领域为例
Research on Topic Recognition and Evolution Based on Improved LDA Model—Taking the Field of Software Open Source as an Example
摘要: 目的:针对基于LDA模型进行主题识别及演化分析方法在主题数量选择困难、时间窗口划分主观性强等方面的局限提出优化改进,从而推动主题识别及演化分析方法的进步。方法:结合TF-IDF算法和Word2Vec词向量技术计算主题向量,减少主题生成时常用词汇的影响,同时实现主题向量的语义表达。在主题演化过程中提出基于主题语义距离变化的方法划分时间窗口,跟踪目标领域主题强度和主题内容的演化趋势。最后以软件开源领域研究文献为例进行实证研究。结果:研究结果显示,本文提出的优化方法能够有效识别领域的研究主题及热点主题,跟踪主题随时间演化的路径,并可视化呈现。结论:软件开源研究存在六个关键主题,其中“开源治理”和“市场竞争”是该研究领域的热点主题。从主题内容的演变来看,软件开源的研究正从个人自发参与的自治动机转向企业与政府等组织层面的参与。
Abstract: Purpose: To address the limitations of topic identification and evolution analysis methods based on LDA models, such as difficulty in selecting the number of topics and strong subjectivity in time window partitioning, and to propose optimization improvements, in order to promote the progress of topic identification and evolution analysis methods. Method: Combining TF-IDF algorithm and Word2Vec word vector technology to calculate topic vectors, reducing the influence of commonly used vocabulary in topic generation, while achieving semantic expression of topic vectors. Propose a method for dividing time windows based on changes in topic semantic distance during the process of topic evolution, and track the evolution trend of topic intensity and content in the target domain. Finally, empirical research will be conducted using literature in the field of open source software as an example. Result: The research results show that the optimization method proposed in this paper can effectively identify research topics and hot topics in the field, track the path of topic evolution over time, and visualize it. Conclusion: There are six key themes in software open source research, among which “open source governance” and “market competition” are hot topics in this research field. From the evolution of the theme content, research on open source software has shifted from the autonomous motivation of individual participation to the participation of organizations such as enterprises and governments.
文章引用:高翔菲, 董平军. 基于改进LDA模型的主题识别及演化研究——以软件开源领域为例[J]. 数据挖掘, 2025, 15(1): 55-70. https://doi.org/10.12677/hjdm.2025.151005

1. 引言

在当今迅速发展的信息时代,信息超载已成为常态,如何快速准确地识别目标领域文献研究热点及演化趋势成为了当前亟需解决的问题。主题识别及演化分析是发现及跟踪文本数据中主题的一种常用文本信息挖掘方法,可以揭示主题的深层含义和发展趋势,在信息检索、知识管理等领域具有广泛的应用。

主题识别及演化分析的方法从技术角度主要分为基于文献计量学和基于自然语言处理(Natural Language Processing, NLP)两类方法。基于文献计量学的主题识别及演化方法主要通过分析文献中的关键词、作者、机构、引文等外部信息来揭示研究领域的主题及演化趋势,往往没有考虑到文档中的潜在的语义和语境信息。为了解决这种缺陷,一些学者开始运用基于自然语言处理的主题识别及演化方法对文档进行语义层面的主题挖掘和识别,从而发现和跟踪主题全局语义的变化。随着科学技术的快速发展,以自然语言处理技术为基础的主题识别及演化研究涌现出了众多优秀的理论与实践成果,LDA (Latent Dirichlet Allocation,隐含狄利克雷分布)模型就是其中最受欢迎的主题建模方法之一,具有广泛的适用性与高度的灵活性,它可以从海量的文档集合识别出文档及其词语的潜在语义信息和主题结构,在文本挖掘及自然语言处理等领域表现出了很好的应用效果。

2. 相关研究

主题识别及演化分析通过运用文献计量学或自然语言处理等方法,对一个领域中的主题进行识别和跟踪,并以可视化的方式对其发展趋势进行动态分析。主题识别及演化分析的实际应用遍及多个领域,如舆情监测[1]、社交媒体分析[2]、医疗健康[3]、商业智能[4]和政府决策[5]等,其演进历程包括了文献计量分析阶段、机器学习分析阶段、深度学习分析阶段等。

文献计量学方法是一种简单易用的主题识别方法,它通常基于词频、共现关系或共引分析识别文档中的主题[6],其中,社会网络分析在揭示主题之间的关系方面备受青睐,邢晓昭等[7]基于文本挖掘及社会网络分析的方法,提出了基于主题演化的颠覆性技术识别技术;Reza Vahidzadeh等[8]基于社会网络分析探究区域产业共生(RIS)研究领域中技术和非技术两个方面的主要主题和研究发展趋势。虽然基于文献计量学的主题识别方法忽视了文本数据中的潜在的语义信息,但这些基于文献计量学识别目标领域主题的研究为后续学者进一步优化主题识别及演化方法提供了重要的理论和技术支撑。

近年来,基于机器学习的主题模型方法进行主题识别和演化分析[9]-[11]得到了学者的广泛关注。其中,概率图模型是基于机器学习的主题识别及演化分析中广泛使用的一类主题模型,学术界常用的概率图模型有潜在语义分析(Latent Semantic Analysis, LSA) [12]、潜在狄利克雷分布(Latent Dirichlet Allocation, LDA) [13]和动态主题模型(Dynamic Topic Model, DTM) [14]等,这些模型通过对文档、主题以及词汇之间的关系联合建模来学习模型的概率分布参数,并以模型的输出结果为基础探究目标领域存在的主题及其演化趋势,在捕捉文本信息中的语义信息方面更有效[15]

1988年,Susan等人[12]提出了LSA模型,LSA模型是一种基于奇异值分解(SVD)来获取文档潜在语义及主题结构的模型,它不能提供概率解释,且对新文档的处理不够理想,学者们开始尝试将概率图模型引入到主题模型中,提出了PLSA模型。PLSA [16]的模型假设是每个文档都是以一定的概率包含混合主题,每个主题又以一定的概率包含语料库中的某些单词,这种基于概率图的模型提供了更好的主题解释,但是容易出现过拟合的风险。为此,Blei等在前面学者研究的基础上[13]提出了LDA模型,他们从文档–主题分布和主题–词分布两个方面联合建模来识别目标领域文本中的潜在主题,并且还在估计文档的主题分布以及主题的词语分布时引入了狄利克雷先验,这些改进使得LDA模型可以更好地处理新的文本数据,满足了学者对于主题模型泛化能力的更高需求。2015年Cao等[17]提出的基于前馈神经网络的主题模型(Neural Topic Model, NTM)进一步推动了主题识别及演化分析中技术和方法的创新。

综上所述,目前学术界关于主题识别及演化分析的相关研究主要是利用基于文献计量学的词频分析、基于机器学习的主题模型等方法,尽管这些方法相对简单直观,但往往会忽略文本中深层次的语义信息。例如,传统LDA模型的文档特征提取往往依赖于关键词提取和词频统计,通过词频统计将单词表示为运算复杂的高维稀疏向量,这会导致模型无法提取出文档中隐含的语义信息。Word2Vec模型是一种基于神经网络模型的词向量学习方法,它可以将文本训练成向量空间中低维稠密的向量来捕捉文本中的深层语义联系,在一定程度上可以弥补传统LDA模型在文本特征提取方面的不足。因此,本文将在已有研究的基础上,结合TF-IDF算法、Word2Vec模型优化基于LDA主题模型进行主题识别分析中存在的不足,并提出基于主题语义变化的方法划分时间窗口,以减少主题演化过程中时间窗口划分的主观性。

3. 基于改进LDA模型的主题识别及演化优化模型

3.1. 主题识别

本文选择LDA模型对从WOS核心数据库收集到的目标领域文献进行主题识别与演化分析,旨在通过主题建模有效提取并归纳文献集中的关键主题,进而跟踪这些主题随时间的演变规律,为目标领域的研究者和管理者提供有价值的信息。LDA主题建模通常包括文本特征提取、模型参数确定、模型训练三个步骤。

3.1.1. 文本特征提取

传统的LDA模型将文档表示为基于词频统计的向量,忽略了常见词汇对主题建模结果的影响。为了改进传统LDA模型在文本特征提取方面的不足,本文使用TF-IDF算法计算每个文档中的各个单词的权重,并将加权后的词汇作为LDA模型的输入。这种方法可以使模型在识别主题时更关注于高权重的词,减少常见词汇的干扰,更好地捕捉到文档的主题结构。

TF-IDF算法即TF*IDF,其中TF (Term Frequency,词频)表单词在文档中出现的频率,用公式表示

为: TF i,j = n i,j k n k,j n i,j 表示第j篇文档中单词i出现的次数。IDF (Inverse Document Frequency,逆向文件频率)表示单词的特殊性,用总文档数目除以包含该单词的文档数目计算: IDF i =lg | D | | { j: t i d j } | ,|D|表示语料库中的文档总数。

3.1.2. LDA模型

LDA是一个三层贝叶斯模型,如图1所示,它用主题上的概率分布表示每个文档,其中每个主题都表示为单词上的概率分布。LDA模型假设一篇文档中的每个词是通过以一定概率选择某个主题,并从该主题中以一定概率选择某个词语的过程得到的,其中文档的主题分布和主题的单词分布分别取决于由αβ参数决定的Dirichlet先验分布。

Figure 1. LDA three layer Bayesian structure diagram

1. LDA三层贝叶斯结构图

LDA模型现在已被广泛用于发现文档集合中的潜在主题,其原理如图2所示。LDA模型假设在M篇文档中,每篇文档中由K个主题组成,每个主题下的N个词语wmn构成这篇文档;每篇文档在主题上服从多项式分布,每个主题在单词上服从多项式分布;每篇文档主题多项式分布的先验分布是参数为α的狄利克雷分布,每个主题词汇多项式分布的先验分布是参数为β的狄利克雷分布。

Figure 2. LDA model diagram

2. LDA模型图

3.1.3. LDA模型参数设置

本文利用Python的Gensim库训练LDA模型。首先需要确定3个超参数αβk,超参数αβ分别代表文档–主题分布和主题–词分布的狄利克雷分布先验参数,控制每个文档中主题的多样性程度以及每个主题中词语的多样性程度。αβ一般选取Gensim包中LDA模型的默认值[18]。对于最优主题数k的确定,常用的方法有四种:根据困惑度确定[19];根据一致性分数确定[20];根据文本聚类方法确定[21];根据主题分布可视化及人工评估确定[22]

困惑度表示文档d从属的主题的不确定性[23],用于评估语言模型的性能。当困惑度达到最小或处于转折点处时,主题模型的泛化能力强,但当主题个数过多时,模型的困惑度会急剧降低,出现模型过拟合的现象。困惑度计算公式如式(1)所示。

Perplexity( D )=exp{ d=1 M logp( w d ) d=1 M N d } (1)

其中,M是软件开源领域的文档总数, p( w d ) 为文档d的生成概率, N d 为文档d包含的单词总数。 p( w d ) 的计算方式为其文档中每个词汇生成概率之积,如式(2)所示。

p( w d )= i=1 N d z p( w d,i |z )p( z|d ) (2)

困惑度指标衡量的是模型生成未知数据的似然性,即使困惑度较低,主题之间也可能缺乏清晰的界限。结合主题相似度可以生成更具清晰界限的主题,识别出更为泛化的主题结构。主题相似度通常通过计算主题向量间的余弦相似度来度量,余弦相似度的计算公式如下:

cos( θ )= i=1 n ( x i y i ) i=1 n ( x i ) 2 i=1 n ( y i ) 2 (3)

主题之间的平均相似度较低,意味着主题之间的区分度较高,每个主题都具有较为独特的特征[24]

本文采用困惑度指标结合主题之间的平均相似度来确定主题数目的大小,将主题数量限制在2~20之间,依次计算各个主题数量的困惑度和主题平均相似度,绘制困惑度以及主题平均相似度随主题数量变化的折线图。当困惑度和主题平均相似度达到最小或转折点时,可以得到最优主题数量。

综上,将文本特征提取得到的文档特征向量输入到LDA主题模型中,确定好模型的超参数,即可得到目标领域文献的主题–词汇分布以及文档–主题分布。选择每个主题下概率排名前十的词汇作为该主题下的关键词,结合目标领域的相关知识及专家意见,通过分析整理最终得到目标领域的主题。

3.2. 主题演化

本文结合LDA主题模型和Word2Vec模型的优点共同学习单词、主题和文档向量,从而更准确地实现主题演化研究。具体步骤包括词向量训练、时间窗口划分、主题强度演化和主题内容演化。

3.2.1. 词向量训练

Tomas Mikolov等提出的Word2Vec模型[25]是用于生成词向量的高效模型,它可以从大量文本中捕捉单词间的语义关系,该模型的两种主要实现方式为连续词袋模型(CBOW)和Skip-gram模型,如图3所示,前者根据上下文来预测目标词,常用于在小规模数据集中学习频繁的词汇;后者根据目标单词来预测上下文,用于学习罕见词汇,能够很好地处理低频率的单词,常用于大规模数据集[26]

本文综合考虑了上下文窗口大小、词向量维度,利用CBOW模型训练得到单词的词向量,通过迭代训练的方式获取更好地参数设置,捕捉词汇的语义关系,并利用LDA模型得到的主题–词分布,将主题向量表示为主题词向量的概率加权和,用于计算主题相似度,计算公式如式(4)所示。

V k = i=1 n P( w i |k ) V w i (4)

其中, V k 表示第K个主题的主题向量, P( w i |k ) 表示该主题下第i个单词的概率, V w i 表示该主题下第i个单词的词向量。

Figure 3. CBOW model and Skip-gram model

3. CBOW模型和Skip-gram模型

3.2.2. 基于主题语义变化划分时间窗口

目前主题演化研究文献中对于时间窗口的划分往往采用固定时间窗口或生命周期理论的方法,容易受到研究者自身经验和主观因素的影响。本文提出一种基于主题语义距离变化的客观方法划分时间窗口,具体实现步骤包括:初步划分时间窗口、计算相邻时间窗口主题间的相似度矩阵、计算相邻矩阵之间的弗罗贝尼乌斯距离、确定时间窗口分界点。

本文阶段滑动时间窗口初步划分时间窗口,绘制各个时间窗口的困惑度曲线,找到平均最优主题数目n,将各时间窗口的主题数量统一确定为n并训练LDA主题模型,使得所有相邻时间窗口的主题相似度矩阵大小相同,便于计算矩阵距离。根据LDA模型的输出结果计算各个时间窗口的主题向量,命名为Topic1~Topicn,主题名称及主题向量的对应关系用字典Dt = {Topic1:Vt1, Topic2:Vt2, ..., Topicn:Vtn}表示,此时的原始主题列表表示为L = [D1, D2, D3, ..., Dt]。

为了确保相邻相似度矩阵之间的弗罗贝尼乌斯距离能够衡量相近主题的语义变化,需要以第一个时间窗口的主题向量字典为基准,迭代调整后续时间窗口主题向量字典的键值对对应关系,使得相邻时间窗口具有相同键的主题向量余弦相似度尽可能高。调整后的主题名称及主题向量的对应关系用字典Nt = { Topic 1 : V t1 , Topic 2 : V t2 , ..., Topic n : V tn }表示,主题列表表示为Lnew = [N1,],其中,D1 = N1

定义计算相邻时间窗口两两主题之间余弦相似度的函数为compute_similarity_matrix,保持第一个时间窗口的主题向量字典不变,计算主题向量N1与主题向量D2的余弦相似度矩阵R1作为代价矩阵,利用匈牙利算法调整第二个时间窗口主题向量字典D2的键值对对应关系,将调整后的主题向量字典N2追加到列表Lnew中。然后计算N2与D3的余弦相似度矩阵R2作为代价矩阵,将调整后时间窗口3的主题向量字典N3追加到列表Lnew中,依次迭代计算,最终得到调整后的主题向量列表Lnew = [N1, N2, N3, ..., Nt]。

Figure 4. Cosine similarity matrix of adjacent time window topic vectors

4. 相邻时间窗口主题向量余弦相似度矩阵

计算Lnew中相邻时间窗口主题向量的余弦相似度矩阵Mt,Mt的形式如图4所示,进而计算相邻余弦相似度矩阵Mt,Mt+1的弗罗贝尼乌斯距离St,以量化相邻时间窗口主题的语义含义变化程度。弗罗贝尼乌斯距离值越大,说明主题语义含义变化越大。公式(5)展示了弗罗贝尼乌斯距离的计算公式:

F A,B = i=1 m j=1 n ( a ij b ij ) 2 (5)

其中 a ij b ij 分别表示矩阵AB中的元素。

综合考虑每个时间窗口的发文数量[27]与弗罗贝尼乌斯距离,本文选择弗罗贝尼乌斯距离最大的两个时间点将文献划分为三个时间窗口,探究主题演化路径。

3.2.3. 主题强度演化

本文利用LDA主题建模后得到的文档–主题矩阵计算每一年各个主题的主题强度,主题强度计算公式为:

S k t = d=1 M θ d,k M (6)

其中 S k t 表示t年份第K个主题的主题强度,M表示t年份所有文档总数。 θ d,k 表示第d篇文档上第k个主题的概率值。

根据式(6)计算可得到每年各个主题的主题强度,绘制每个主题的主题强度与年份的散点图,直观地展示不同年份下各主题的强度分布,并采用线性回归模型拟合各个主题的主题强度时间序列,将线性回归得到的趋势线与散点图绘制在同一个图上,以便观察和预测主题强度的变化趋势。

3.2.4. 主题内容演化

基于3.2.2提出的方法将数据预处理后的文档划分到不同的时间窗口,训练个时间窗口文档集的LDA模型,得到相应的主题–词汇分布矩阵,由此对各时间窗口的主题进行归纳,绘制出各个主题名称及其排名前十的主题词的表格,以便直观地比较不同主题之间的差异和联系,主题演化的技术路线如图5所示。

Figure 5. Theme evolution technology roadmap

5. 主题演化技术路线图

基于第3.2.1小节提出的主题向量计算方式,利用式(4)计算得到各时间窗口下主题的向量表示。按照式(3)中的余弦相似度算法对相邻时间窗口目标领域的主题进行相似度计算,可以得到不同主题之间的相似度,若相邻时间窗口两主题之间的相似度大于规定的阈值,则可判定两主题之间存在演化关系。

4. 实例分析

4.1. 软件开源领域数据收集与预处理

本文选择Web of Science数据库(以下简称WOS)作为数据的来源,检索时间为2024年2月1日,时间范围为2001年至2024年1月1日,文献类型分别选择“Article”,以排除会议、报纸等文献。以TS = ("open source software" OR "free software" OR "libre software")作为主题词进行检索,初步筛选得到论文2460篇,通过逐一阅读论文标题和摘要部分排除研究方向开源软件应用与技术问题等与本论文研究无关的文献,最终得到867篇文献的题录信息,题录信息包括题目、关键词、关键词扩展、摘要、期刊来源、出版年份、作者等信息。调用NLTK工具包在进行数据预处理,主要工作如下:

1) 调用string库中的punctuation模块,剔除标点符号等特殊符号以及无关紧要的数字;

2) 阅读软件开源领域相关资料,同时咨询软件开源领域专家学者,构建软件开源领域缩写词表、停用词表、同义词表以及专有名词词典,并在训练模型过程中持续扩充停用词表、同义词表和专有名词词典,不断优化分词结果;

3) 根据软件开源领域缩写词表将缩写还原成完整形式,合并同一概念的不同形式;

4) 调用NLTK库corpus模块的英文停用词表,并以构建的软件开源领域停用词表作为补充,完成软件开源领域数据集的停用词去除;

5) 根据软件开源领域同义词表和专有名词词典,合并同义词并保留软件开源领域专用短语搭配;

6) 调用NLTK库中的WordNetLemmatizer方法将单词进行词形还原;

7) 调用NLTK库中的pos_tag方法标记词性,去除形容词、副词等没有意义的单词;

8) 将软件开源领域词汇转换为小写形式,删除词频小于5的单词。

4.2. 软件开源领域文献主题识别分析

以主题数量为横坐标,困惑度或主题相似度为纵坐标,分别绘制二者随主题数量变化的折线图。从图6中可以看出,当主题数量为6时困惑度最小,此时主题平均相似度达到最低点,因此本文选定开源软件研究领域的主题数量为6。

Figure 6. Change of number of topics-perplexity/similarity

6. 主题数量–困惑度/相似度变化情况

基于3.1提出的方法训练LDA模型,根据得出的“主题–词”分布对主题进行标识,参考排名前十的高频词汇判断主题内容,结合权威期刊综述文献以及专家意见,最终主题标识的结果如表1所示。

Table 1. LDA theme modeling results

1. LDA主题建模结果

Topic1 (开发协作)

Topic2 (开源治理)

Topic3 (商业模式)

developer

0.006984049

motivation

0.014077323

smell

0.012937002

project

0.006919028

innovation

0.010305673

business model

0.012003655

development

0.006712013

government

0.009400791

student

0.009728886

code

0.006646663

participation

0.008959397

network

0.00878664

system

0.006535601

community

0.008803301

venture

0.008573762

license

0.006229119

effect

0.008549321

evaluation

0.008011401

process

0.00619903

adoption

0.008475851

transfer

0.006892957

collaboration

0.005345278

project

0.008291724

value creation

0.006802354

quality

0.005281016

success

0.008287458

criterion

0.006710543

government

0.005242566

knowledge

0.007649915

commercialization

0.006567908

Topic4 (市场竞争)

Topic5 (代码维护)

Topic6 (开源生态)

clone

0.052502617

bug

0.047046203

review

0.010549062

competition

0.045073349

prediction

0.036192253

ecosystem

0.009173433

firm

0.041295994

metric

0.026539762

comment

0.009135757

spillover

0.031901479

report

0.026448287

peer

0.008386368

market

0.031578086

defect

0.025672438

woman

0.008381981

externality

0.020602046

fix

0.024300259

programmer

0.008075175

maintainability

0.019209955

usability

0.023992464

detection

0.008074087

debt

0.018591242

maintenance

0.023209471

request

0.008043036

patent

0.01833836

machine

0.023031447

sponsor

0.007953731

effect

0.017813744

predict

0.018434579

ideology

0.007678234

依据表1每个主题下的高概率单词,总结归纳最符合当前主题下高概率单词的主题名称。主题1的词汇反映了软件开源领域中开发流程和合作方面的内容,标注为“开发协作”。协作模式较早受到研究者的关注,Raymond的《大教堂与集市》系统性地解释了开源软件开发者的协作模式,提出与大多数商业软件采用大教堂的开发模式相比,以Linux为代表的开源软件使用集市的开发模式[28],开发人员彼此协作互动形成不断演化的开发者社交网络[29]

主题2的高频词汇表明该主题关注软件开源领域中的创新动力、政府支持以及社区参与的重要性,标注为“开源治理”。开源社区等虚拟社区的组织治理方式与传统组织不同,开源项目所有者必须求助于其他治理机制,而不是那些向开发人员付费的公司所提供的治理机制[30]。早期开发者动机研究是开源治理研究的重要组成部分,很多学者针对Lerner和Tirole提出的问题“为什么成千上万的顶尖软件开发人员会免费为创建公共产品做出贡献?”展开研究。Hars A等揭示了参与动机的内在因素和外在因素两个方面[31]。Shaul Oreg和Oded Nov根据工具性的高、中、低三个等级将内在动机和外在动机进一步分成三类[32]。von Krogh等扩展了对个人动机的假设,将短期奖励之外的长期、有价值的追求纳入其中[33]。Moqri M等则证实了开发人员参与开源项目相关的货币激励[34]

主题3涉及到社交网络在开源软件领域中的影响以及商业化进程,标注为“商业模式”。开发者可以在社交网络上讨论技术问题,分享代码,从而提高项目的知名度和影响力,更好地帮助企业创造价值,实现商业化。研究者关于商业模式的研究包括选择不同商业模式的因素[35]、如何设计商业模式[36]以及系统地对商业模式的种类进行总结等[37],商业模式的选择和设计影响着开源项目的成功。

主题4的词汇反映了在市场竞争和专利在开源软件领域中的重要性,标注为“市场竞争”。开源软件吸引了许多企业参与到开源项目的竞争中。企业参与开源软件领域的活动能够获得最新的技术发展动态[38],与其他开发者共享经验和知识,推动技术创新;可以减少开发成本,提升其品牌知名度和声誉。企业可以提供相关的技术支持和培训服务,培养一个由同行生产者组成的开源社区,并通过鼓励员工向开源项目贡献代码、组织和赞助相关的活动等来为开源项目的发展做出贡献[39]

主题5关注缺陷预测、提高可用性和降低维护成本在开源软件领域中的重要性,因此被标注为“代码维护”。研究者通过分析历史数据或采用机器学习等技术来预测软件中可能存在的缺陷[40],优化代码结构,可以提高软件的可靠性和可维护性,从而促进开源项目的健康发展[41]

主题6涉及代码审查、生态系统等方面,同时也关注女性开发者的参与,反映了代码审查和生态系统在开源软件领域中的重要性,因此被标注为“开源生态”。代码审查指的是通过同行开发者的审查来提高代码质量和项目的可靠性[42],有效的代码审查及开发者注释可以加速代码的迭代改进,提高开源项目的整体健康度[43]。女性和程序员等词汇反映了开源生态中对于多样性和包容性的关注,研究,尽管女性能够胜任贡献代码的工作,但她们仍然受到偏见的影响[44]。鼓励不同背景的人参与项目可以带来更具创新性的想法及丰富的视角[45],也有利于构建健康的开源生态系统。

4.3. 软件开源领域文献主题演化分析

4.3.1. 软件开源领域文献主题强度演化分析

根据式(6)计算得到每年各个主题的主题强度,使用线性回归模型拟合各个主题的主题强度时间序列,进行主题强度的演化分析,依照先前学者将主题强度的演化分为上升型、下降型和稳定型[46]图7展示了六个主题的演化趋势。

根据图7可以观察到主题2 (开源治理)、主题5 (代码维护)和主题6 (开源生态)呈现出上升的趋势,是上升型主题。随着软件开源生产模式在商业和社会中的重要性日益增强,如何有效地管理和发展开源项目、保证代码质量的可靠性已成为关键的研究主题。同时,多样性和包容性作为当前社会发展的重要议题,在软件开源领域也受到了重视。因此,构建一个多元及协作的生态环境在全球开源社区迅速壮大的背景下愈发重要。主题3 (商业模式)是稳定型主题,研究者对于主题3的研究处于相对稳定的状态。开源软件的商业化是一个长期趋势,涉及价值创造、商业模式创新、市场策略等方面。由于开源软件已经在许多行业和领域中得到广泛应用,学术界对于如何在开源软件项目中创造商业价值、构建可持续的商业模式方面的研究持续保持在一个相对稳定的水平。主题1 (开发协作)和主题4 (市场竞争)是下降型主题,研究热度逐渐减少。随着开源软件社区的不断发展和成熟,越来越多的研究开始涉及开源软件的商业化、治理问题、安全性等更加深入的话题,对于开发协作的研究有所减少。市场竞争主题的减少反映了市场环境和软件开源商业模式的稳定。开源软件在全球范围内的普及使其在市场中的地位已经较为明确,企业之间的竞争策略、市场的溢出效应以及专利等问题有了较成熟的理解和应对策略。

Figure 7. Trend chart of theme intensity evolution

7. 主题强度演化趋势图

4.3.2. 软件开源领域文献主题内容演化分析

基于软件开源领域文献预处理后的分词结果,将词向量维度设置为100,即每个词汇被映射到100维的向量空间中。采用CBOW模型及负采样优化方法训练模型,最终得到软件开源领域数据集1617个词汇的向量表示,为主题向量计算提供基础。

依据3.3.2提出方法,首先以五年为滑动时间窗口初步划分时间窗口,训练各时间窗口主题数量为10的LDA模型,得到相邻相似度矩阵之间的弗罗贝尼乌斯距离计算结果为:[0.8526722, 0.6492604, 0.7588058, 0.6921405, 0.7447708, 0.8579018, 0.696387, 0.9401726, 1.1266683, 1.4238896, 1.2708953, 0.9411309, 1.1315013, 1.2446064, 0.8223505, 0.9021653, 1.379747]。由结果可以看出第10个相似度矩阵与第11个相似度矩阵之间的弗罗贝尼乌斯距离最大,即2010~2014时间窗口与2011~2015时间窗口的相似度矩阵和2011~2015时间窗口与2012~2016时间窗口的相似度矩阵具有最大的弗罗贝尼乌斯距离,主题含义在2011年后出现了较大变化,因此将2011年作为第一个分界点,同理将2018年作为第二个分界点。最终本文划分为三个时间窗口:2001年~2011年;2012年~2018年;2019年~2023年。根据3.2.2中LDA模型主题数量选择的方法,分别设置三个时间窗口的主题数量为5,5,6。

结合三个时间窗口的文献–主题分布和主题–词分布,绘制出各个主题名称及其排名前十的主题词的表格,如表2所示。

Table 2. Summary of themes for each time window

2. 各时间窗口主题归纳

时间窗

主题名称

主题词

2001~2011

开源协议

license, sector, attract, preference, infrastructure, seek, program, industry, ideology, sustainability

贡献动机

license, motivation, altruism, commitment, contributor, identity, reward, assumption, package, personality

产品竞争

product, competition, platform, factor, network, framework, standard, market, externality, consumer

自由软件

libre, learn, gift, mechanism, value, adopter, indicate, mozilla, knowledge creation, establish

社区治理

project, firm, government, development, developer, innovation, community, system, process, knowledge

2012~2018

商业竞争

license, clone, cost, growth, business model, follow, competition, policy, release, customer

生态演变

venture, evolution, identity, infrastructure, spillover, problem, cause, ecosystem, health, enterprise

社区贡献

project, government, developer, motivation, network, community, knowledge, development, contribution, contributor

代码贡献

change, student, fork, popularity, month, committer, triaging, automate, allocation, text

企业创新

firm, acceptance, innovation, intention, sponsor, capture, capital, capacity, value, ownership

2019~2023

社区协作

project, community, developer, government, ecosystem, development, network, system, collaboration, code

代码风险

smell, risk, resilience, image, code review, mentor, hardware, life, competence, tool

许可竞争

license, competition, vendor, copyright, capital, application, decision, speed, compliance, investment

贡献互动

contributor, platform, newcomer, innovation, package, contribution, interaction, discussion, firm, resource

性别差异

usability, woman, gender, barrier, adoption, technique, volunteer, process, criterion, space

漏洞维护

report, bug, vulnerability, fix, prediction, security, file, maintenance, student, machine

根据式(4)计算各主题的向量表示,并对相邻时间窗口软件开源领域的主题进行相似度计算,可以得到主题之间的相似度,如图8所示。

(a) (b)

Figure 8. Topic similarity heat map

8. 主题相似度热度图

本文将相似度阈值设为相邻时间窗口主题相似度的平均值,过滤掉相似度较低的主题对,以便通过桑基图清晰地呈现主题路径演化。

Figure 9. Topic evolution Sankey diagram

9. 主题演化桑基图

结合图8图9可以归纳出三条重要的演化路径。第一条演化路径历经主题 Topic 1 T 1 (开源协议)、 Topic 1 T 2 (商业竞争)、 Topic 3 T 3 (许可竞争)。开源协议定义了用户使用、修改和分发软件的权利,并推动了商业竞争的研究,企业可以通过对开源协议设置特定的条款来维护自身利益。随着商业竞争变得更加激烈,企业开始寻求更加灵活或者限制性更强的许可证来保护自己的利益,进一步促进许可竞争的研究。

第二条演化路径历经主题 Topic 4 T 1 (自由软件)、 Topic 2 T 2 (生态演变)、 Topic 1 T 3 (社区协作)。自由软件理念的推广和接受度的增加使得开源生态系统的快速扩张,促进了开源生态系统的研究。随着开源生态系统的发展,开源社区变得更加复杂和多元化,社区协作工具和实践也在不断进步。这些工具和实践的支持使得分布式团队能够跨越地理和文化的界限,更有效地合作。

第三条演化路径历经主题 Topic 5 T 1 (社区治理)、 Topic 3 T 2 (社区贡献)、 Topic 4 T 3 (贡献互动)。有效的社区治理机制能够为开源项目的贡献者提供一个清晰、公平和透明的环境,激励了贡献者持续参与项目,为开源社区做出贡献,使得研究者对贡献行为的研究增加。随着开源文化的普及,越来越多的新成员加入开源项目,为开源社区带来新的观点和能力,并需要社区的支持和指导,促进了关于社区内的互动和讨论的研究。

5. 结语

本文采用包括TF-IDF算法、Word2Vec模型在内的多种技术手段改进传统基于LDA模型进行主题识别与演化分析中存在的不足。在特征提取阶段,借助TF-IDF算法优化LDA模型的语料输入,克服传统LDA模型在构建语料库时忽略领域常见词汇影响的缺陷,以削弱常用词汇对主题生成过程的干扰,提升主题模型的准确度。在主题识别与演化分析阶段,将经过预处理的文献数据按照基于语义变化划分时间窗口的方法分配到不同的时间窗口中,独立训练各个时段的LDA主题模型,利用Word2Vec模型训练的词向量来计算主题向量,赋予主题语义层面的表述,并进行主题演化分析。最后以软件开源领域为例进行实证研究,研究结果表明,本文提出的基于LDA模型进行主题识别和演化优化方法能够挖掘出软件开源领域文献的主要研究主题及主题演化路径,实证分析结果如下。

1) 从主题识别结果来看,软件开源领域的研究主要覆盖了开发协作、开源治理、商业模式、市场竞争、代码维护、开源生态六个方面的主题。

2) 从主题强度演化趋势上看,研究者对开源治理、代码维护、开源生态三个主题的研究呈现上升趋势,对商业模式主题的研究强度相对稳定,而对开发协作和市场竞争的研究热度下降。

3) 从主题内容演化趋势上看,存在三条重要的演化路径: Topic 1 T 1 (开源协议)→ Topic 1 T 2 (商业竞争)→ Topic 3 T 3 (许可竞争); Topic 4 T 1 (自由软件)→ Topic 2 T 2 (生态演变)→ Topic 1 T 3 (社区协作); Topic 5 T 1 (社区治理)→ Topic 3 T 2 (社区贡献)→ Topic 4 T 3 (贡献互动)。三条路径揭示了软件开源领域内不同元素之间的相互作用和影响,以及这些相互作用如何共同塑造了软件开源领域的发展轨迹。软件开源研究领域主题的演化与开源生态的演化具有一致性,即呈现从最初简单的个人维度关注开源动机的自发性和自治性,逐渐向复杂组织维度的企业参与和政府宏观治理演变的发展规律。

本文研究尚有一些不足之处:一是数据收集只选择WOS核心数据库中的文献作为数据来源,未广泛结合其他数据源综合分析。二是在LDA模型最优主题数量选择上仍然需要继续探索自动化确定主题个数的方法,减少主题数量选择的主观性。未来研究将融合其他自然语言处理技术进一步优化基于LDA模型的主题识别及演化模型,并拓展实证研究的数据源,提高模型的泛化能力。

参考文献

[1] 卢国强, 黄微, 孙悦, 等. 基于舆情客体与本体剥离的重大突发事件网络舆情本体演化强度研究[J]. 图书情报工作, 2023, 67(5): 119-129.
[2] 马晓悦, 薛鹏珍, 陈忆金, 等. 社交媒体危机主题演化模型构建与趋势分析[J]. 图书情报工作, 2021, 65(13): 77-86.
[3] Huangfu, L., Mo, Y., Zhang, P., Zeng, D.D. and He, S. (2022) COVID-19 Vaccine Tweets after Vaccine Rollout: Sentiment-Based Topic Modeling. Journal of Medical Internet Research, 24, e31726.
https://doi.org/10.2196/31726
[4] Qian, Y., Liu, Y. and Sheng, Q.Z. (2020) Understanding Hierarchical Structural Evolution in a Scientific Discipline: A Case Study of Artificial Intelligence. Journal of Informetrics, 14, Article ID: 101047.
https://doi.org/10.1016/j.joi.2020.101047
[5] 张玲, 恽诚涛, 尹思力, 等. 我国科研诚信政策与文献主题演化对比分析[J]. 现代情报, 2023, 43(6): 108-120.
[6] 李秀霞, 程结晶, 韩霞. 发文趋势与引文趋势融合的学科研究主题优先级排序——以我国情报学学科主题为例[J]. 图书情报工作, 2019, 63(11): 88-95.
[7] 单晓红, 韩晟熙, 刘晓燕. 基于技术主题演化的颠覆性技术识别研究[J]. 情报理论与实践, 2023, 46(8): 113-123.
[8] Vahidzadeh, R., Bertanza, G., Sbaffoni, S. and Vaccari, M. (2021) Regional Industrial Symbiosis: A Review Based on Social Network Analysis. Journal of Cleaner Production, 280, Article ID: 124054.
https://doi.org/10.1016/j.jclepro.2020.124054
[9] 曾子明, 陈思语. 基于LDA与BERT-BiLSTM-Attention模型的突发公共卫生事件网络舆情演化分析[J]. 情报理论与实践, 2023, 46(9): 158-166.
[10] 周健, 张杰, 屈冉, 等. 基于LDA的国内外区块链主题挖掘与演化分析[J]. 情报杂志, 2021, 40(9): 161-169.
[11] Liu, J., Nie, H., Li, S., Chen, X., Cao, H., Ren, J., et al. (2021) Tracing the Pace of COVID-19 Research: Topic Modeling and Evolution. Big Data Research, 25, Article ID: 100236.
https://doi.org/10.1016/j.bdr.2021.100236
[12] Dumais, S.T., Furnas, G.W., Landauer, T.K., Deerwester, S. and Harshman, R. (1988) Using Latent Semantic Analysis to Improve Access to Textual Information. Proceedings of the SIGCHI Conference on Human Factors in Computing SystemsCHI’88, Washington DC, 15-19 May 1988, 281-285.
https://doi.org/10.1145/57167.57214
[13] Blei, D., Ng, A. and Jordan, M. (2003) Latent Dirichlet Allocation. Journal of Machine Learning Research, 3, 993-1022.
[14] Blei, D.M. and Lafferty, J.D. (2006) Dynamic Topic Models. Proceedings of the 23rd International Conference on Machine LearningICML’06, Pittsburgh, 25-29 June 2006, 113-120.
https://doi.org/10.1145/1143844.1143859
[15] 张柳, 王慧, 相甍甍. 基于LDA的突发事件应急管理主题热度与演化分析[J]. 情报科学, 2023, 41(6): 182-191.
[16] Hofmann, T. (1999) Probabilistic Latent Semantic Analysis. Morgan Kaufmann Publishers Inc.
[17] Cao, Z., Li, S., Liu, Y., et al. (2015) A Novel Neural Topic Model and Its Supervised Extension. In: Proceedings of the 29th AAAI Conference on Artificial Intelligence, AAAI Press, 2210-2216.
[18] Wei, X. and Croft, W.B. (2006). LDA-Based Document Models for Ad-Hoc Retrieval. Proceedings of the 29th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval, Seattle, 6-11 August 2006, 178-185.
https://doi.org/10.1145/1148170.1148204
[19] 夏萌萌, 汝绪伟, 张红军. 基于LDA模型的产业创新生态系统研究主题演化分析[J]. 中国高校科技, 2022(9): 41-46.
[20] 陈琦, 张君冬, 郑婉婷, 等. 基于LDA模型的中医药人工智能领域主题演化分析[J]. 世界科学技术-中医药现代化, 2022, 24(9): 3315-3324.
[21] 贺亮, 李芳. 基于话题模型的科技文献话题发现和趋势分析[J]. 中文信息学报, 2012, 26(2): 109-115.
[22] 冉从敬, 李旺. 基于LDA的企业竞争对手识别模型构建——以蔚来汽车有限公司为例[J]. 情报理论与实践, 2023, 46(8): 88-95.
[23] 谭春辉, 熊梦媛. 基于LDA模型的国内外数据挖掘研究热点主题演化对比分析[J]. 情报科学, 2021, 39(4): 174-185.
[24] Jeong, B., Yoon, J. and Lee, J. (2019) Social Media Mining for Product Planning: A Product Opportunity Mining Approach Based on Topic Modeling and Sentiment Analysis. International Journal of Information Management, 48, 280-290.
https://doi.org/10.1016/j.ijinfomgt.2017.09.009
[25] Tomas, M., Kai, C., Greg, C., et al. (2013) Efficient Estimation of Word Representations in Vector Space. Computation and Language.
[26] 靳嘉林, 王曰芬, 巴志超, 等. 基金项目研究的主题挖掘与动态演化分析——以美国NSF数据中AI领域为例[J]. 情报学报, 2022, 41(9): 967-979.
[27] 陶文倩, 潘云涛, 王海燕. 基于主题演化动态情境的高被引论文影响力形成模式探索[J]. 现代情报, 2024, 44(4): 114-126+153.
[28] Raymond, E.S. (1999) The Cathedral & the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary. O’Reilly.
[29] Hong, Q., Kim, S., Cheung, S.C. and Bird, C. (2011) Understanding a Developer Social Network and Its Evolution. 2011 27th IEEE International Conference on Software Maintenance (ICSM), Williamsburg, 25-30 September 2011, 323-332.
https://doi.org/10.1109/icsm.2011.6080799
[30] von Krogh, G. and von Hippel, E. (2006) The Promise of Research on Open Source Software. Management Science, 52, 975-983.
https://doi.org/10.1287/mnsc.1060.0560
[31] Hars, A. and Ou, S. (2002) Working for Free? Motivations of Participating in Open Source Projects. International Journal of Electronic Commerce, 6, 25-39.
[32] Oreg, S. and Nov, O. (2008) Exploring Motivations for Contributing to Open Source Initiatives: The Roles of Contribution Context and Personal Values. Computers in Human Behavior, 24, 2055-2073.
https://doi.org/10.1016/j.chb.2007.09.007
[33] von Krogh, G., et al. (2012) Carrots and Rainbows: Motivation and Social Practice in Open Source Software Development. MIS Quarterly, 36, 649-676.
https://doi.org/10.2307/41703471
[34] Moqri, M., Mei, X., Qiu, L. and Bandyopadhyay, S. (2018) Effect of “Following” on Contributions to Open Source Communities. Journal of Management Information Systems, 35, 1188-1217.
https://doi.org/10.1080/07421222.2018.1523605
[35] Perr, J., Appleyard, M.M. and Sullivan, P. (2010) Open for Business: Emerging Business Models in Open Source Software. International Journal of Technology Management, 52, 432-456.
https://doi.org/10.1504/ijtm.2010.035984
[36] Belenzon, S. and Schankerman, M. (2014) Motivation and Sorting of Human Capital in Open Innovation. Strategic Management Journal, 36, 795-820.
https://doi.org/10.1002/smj.2284
[37] Shahrivar, S., Elahi, S., Hassanzadeh, A. and Montazer, G. (2018) A Business Model for Commercial Open Source Software: A Systematic Literature Review. Information and Software Technology, 103, 202-214.
https://doi.org/10.1016/j.infsof.2018.06.018
[38] Rolandsson, B., Bergquist, M. and Ljungberg, J. (2011) Open Source in the Firm: Opening up Professional Practices of Software Development. Research Policy, 40, 576-587.
https://doi.org/10.1016/j.respol.2010.11.003
[39] Eghbal, N. (2020) Working in Public: The Making and Maintenance of Open Source Software. Stripe Press.
[40] Gomes, L.A.F., da Silva Torres, R. and Côrtes, M.L. (2021) On the Prediction of Long-Lived Bugs: An Analysis and Comparative Study Using FLOSS Projects. Information and Software Technology, 132, Article ID: 106508.
https://doi.org/10.1016/j.infsof.2020.106508
[41] Francalanci, C. and Merlo, F. (2008) Empirical Analysis of the Bug Fixing Process in Open Source Projects. In: Russo, B., Damiani, E., Hissam, S., et al., Eds., Open Source Development, Communities and Quality, Springer US, 187-196.
https://doi.org/10.1007/978-0-387-09684-1_15
[42] Yang, X., Yoshida, N., Gaikovina Kula, R. and Iida, H. (2016) Peer Review Social Network (Person) in Open Source Projects. IEICE Transactions on Information and Systems, 99, 661-670.
https://doi.org/10.1587/transinf.2015edp7261
[43] Kuang, L., Zhou, C. and Yang, X. (2022) Code Comment Generation Based on Graph Neural Network Enhanced Transformer Model for Code Understanding in Open-Source Software Ecosystems. Automated Software Engineering, 29, Article No. 43.
https://doi.org/10.1007/s10515-022-00341-1
[44] Terrell, J., Kofink, A., Middleton, J., Rainear, C., Murphy-Hill, E., Parnin, C., et al. (2017) Gender Differences and Bias in Open Source: Pull Request Acceptance of Women versus Men. PeerJ Computer Science, 3, e111.
https://doi.org/10.7717/peerj-cs.111
[45] Sultana, S., Turzo, A.K. and Bosu, A. (2023) Code Reviews in Open Source Projects: How Do Gender Biases Affect Participation and Outcomes? Empirical Software Engineering, 28, Article No. 92.
https://doi.org/10.1007/s10664-023-10324-9
[46] 林丽丽, 马秀峰. 基于LDA模型的国内图书情报学研究主题发现及演化分析[J]. 情报科学, 2019, 37(12): 87-92.