基于社交网络的主题社团发现方法
技术领域
本发明涉及数据挖掘领域,尤其涉及基于社交网络的主题社团发现方法。
背景技术
随着社交网络服务(简称SNS)的迅速发展,社交网络已经成为人们获取实时信息的重要来源和进行网络社交的重要平台。近几年里我国社交网络的用户数量在高速增长,这就说明了社交网络在高速发展。同时,社交网络存在大量数据信息,而且数据类型有多种形式,如人际网络,文本,图片,视频和音频等。如何利用这些数据为社交网络用户提供更好的服务已经成为了社交网络分析(Socialnetworkanalysis)的重要研究方向。社团发现问题是社交网络分析的核心问题之一。由原来的无向图社团发现到现在的核心社团发现,社团发现问题得到了许多扩展,并且新的问题又被提出来。社团发现研究既有丰富的科学理论,又有巨大的商业意义,比如社团发现算法可以对社交网络的人及其人际结构进行分析,并可以向其推荐好友、商品等。
在社交网络分析时,通常是采集社交网络的文本集,再对文本集进行主题分析,主题分析是通过对文本内容分析并提取出文本中的主题的过程。传统的LDA算法就是对文本集进行主题分析,其中,LDA主题模型涉及到贝叶斯理论、Dirichlet分布、多项分布、图模型、变分推断、EM算法、Gibbs抽样等知识。LDA是一种非监督机器学习技术,可以用来识别大规模文档集(documentcollection)或语料库(corpus)中潜藏的主题信息。它采用了词袋(bagofwords)的方法,这种方法将每一篇文档视为一个词频向量,从而将文本信息转化为了易于建模的数字信息。但是词袋方法没有考虑词与词之间的顺序,这简化了问题的复杂性,同时也为模型的改进提供了契机。每一篇文档代表了一些主题所构成的一个概率分布,而每一个主题又代表了很多单词所构成的一个概率分布。
LDA算法以文档集合作为输入(会有切词,去停用词,取词干等常见的预处理,略去不表),希望训练出两个结果向量,即每个文档文档在主题上的概率,和每个主题在词上的概率。以下就是基于gibbs抽样的LDA算法的伪代码:
其中,k~Multinomial(1/K)为:p(zm,n=k)=1/K,
其中,V为所有文档的总词数,K为主题个数。
主题在词表上的概率矩阵和文档在主题上的概率矩阵θ的元素值分别为:
主题k在词v的概率
文档m在主题k的概率
经分析,LDA算法时间复杂度为O(N*M*Z*K),其中N为迭代次数,N为文档的个数,Z为点的文本的词的平均个数,K为主题数,并且LDA算法可以对文本很好地进行主题划分。
但是LDA仍然有不足:当前社交网络用户文本更新的速度是非常频繁的,如果当有一篇新文档加入的时候,为了确定这篇文档的主题,LDA算法需要对旧文档和新文档一起进行主题分析,这就重复了对旧文档的主题分析的工作。针对社交网络这一特点,本发明对LDA算法进行改造,使它可以对新文档进行主题分析而不用重复地对旧文档进行主题分析。
Normalized-cuts和Modularity等是传统的社团发现算法,只是利用了链接关系而忽略了网络节点所拥有的文本信息,这就导致了划分结果不能反映社团之间的主题(兴趣)关系。在社交网络中是真实蕴含这些主题(兴趣)关系的,比如人际关系中不同的人有不同的兴趣,即使关系密切的人之间的兴趣也会是不同的。这就导致了在推荐好友中,传统的社团发现算法只能帮助用户找到与其关系密切的好友,并不能找到与其兴趣相近的好友。
经过上述的分析,可以知道传统的社团发现算法是仅能对社团进行链接划分,而不能对社团进行主题划分。本发明将结合基于链接的社团发现算法和主题模型算法设计一种主题社团发现算法。
发明内容
本发明的目的是针对当前社团发现算法仅能对社团进行链接划分而不能对社团进行主题划分的不足,结合基于链接的社团发现算法和主题模型算法提供一种能够有效和高效地对社团进行主题和链接划分的主题社团发现算法。
为解决以上技术问题,本发明公开了一种基于社交网络的主题社团发现方法,包括步骤:
S1、对社交网络的文档集进行主题分析,从而得到主题向量集;
S2、对所述主题向量集使用k-means算法进行聚类,从而得到主题簇;
S3、对每个所述主题簇进行链接划分,得到每个主题簇的主题社团集。
进一步的,所述步骤S1具体包括步骤:
S11、对所述社交网络的文档集分词,得到文档集中词的总数,并对所述分词后的文档集采用LDA算法进行主题分析,得到每个主题出现在每个文档的概率矩阵以及每个文档的主题总数、每个词出现在每个主题上的次数和每个主题所包含的词的总数;其中,所述概率矩阵中的每一行即为对应的文档在主题上的主题向量,全部的主题向量集合即为所述主题向量集。
进一步的,所述步骤S11之后还包括步骤:
S12、当社交网络的文档集更新从而产生新的文档集时,根据所述步骤S11得到的每个文档的主题总数、每个词出现在每个主题上的次数和每个主题所包含的词的总数,对所述新的文档集中每一个新文档分词后进行主题分析,从而得到更新后的每个主题出现在每个文档的概率矩阵。
进一步的,步骤S12中对所述新的文档集中每一个文档执行以下步骤:
S121、对当前新文档进行分词,得到词序列;
S122、所述词序列中的每个词所属的主题服从概率分布Multinomial(1/K),对所述每个词所属的主题进行抽样,并统计每个主题被抽到的次数,将所述每个主题被抽到的次数标记为当前主题的出现次数;
其中,概率分布Multinomial(1/K)具体为p(zn=k)=1/K,zn表示词n所属的主题,K表示当前新文档的主题总数,k表示主题变量;
S123、对于所述词序列中的每个词,执行以下步骤:取出当前词所属的主题,并将步骤S122统计的被取出的主题的出现次数减1,则此时当前词所属的主题服从概率分布P(zn|m,α,β),接着对当前词所属的主题进行抽样,并将抽到的主题的出现次数加1;
其中,m表示当前新文档,nm表示当前新文档中词的总数,K表示当前新文档的主题总数,V表示步骤S11中所述文档集中词的总数,表示此时在当前新文档中主题k的出现次数,表示词v出现在主题k的次数,nk表示主题k所包含的词的总数,α和β为参数;
S124、重复执行步骤S123,直至达到预设的迭代次数,得到迭代完毕时的每个主题的出现次数;
S125、根据步骤S124中得到的所述每个主题的出现次数求出每个主题出现在当前新文档中的概率;具体计算公式为:
表示主题k出现在文档m中的概率,m表示当前新文档,表示步骤S124中得到的在文档m中主题k的出现次数。
其中,所述参数β=0.1,所述参数α=50/文档数。
进一步的,所述步骤S3对于每个主题簇进行如下步骤:
S31、将主题簇看作一个无向图,对图中的每个点进行编号;
S32、计算任意两个点的社团链接相似度,找出使一个节点的社团链接相似度最大的另一个节点,若此两个节点的ΔQ>0,则将此两个节点合并为一个节点;
其中,节点i和节点j的社团链接相似度CLS为:
Q表示社团内部的边数与在假设没有社团结构时的度数的差值的期望的平方,ΔQ是指合并两个社团前的Q值减去合并两个社团后的Q值,Ci表示节点i对应的社团,N(Ci)表示社团Ci的邻居节点集;
S33、重复执行步骤S32,直至没有点需要合并为止,合并后的每个点代表一个社团,全部的点即为当前主题簇的主题社团集。
与现有技术相比,本发明的有益效果是:
1、对LDA算法进行改造,使它可以对更新后产生的新文档进行主题分析而不用重复地对旧文档进行主题分析;
2、本发明针对当前社团发现算法仅能对社团进行链接划分而不能对社团进行主题划分的不足,结合基于链接的社团发现算法和主题模型算法提供了一种能够有效和高效地对社团进行主题和链接划分的主题社团发现算法。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的基于社交网络的主题社团发现方法的流程示意图;
图2是图1中步骤S1的具体流程图;
图3是图2中步骤S12的具体流程图;
图4是图1中步骤S3的具体流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种基于社交网络的主题社团发现方法,如图1所示,包括步骤:
S1、对社交网络的文档集进行主题分析,从而得到主题向量集;
S2、对所述主题向量集使用k-means算法进行聚类,从而得到主题簇;
S3、对每个所述主题簇进行链接划分,得到每个主题簇的主题社团集。
进一步的,如图2所示,所述步骤S1具体包括步骤:
S11、对所述社交网络的文档集分词,得到文档集中词的总数,并对所述分词后的文档集采用LDA算法进行主题分析,得到每个主题出现在每个文档的概率矩阵以及每个文档的主题总数、每个词出现在每个主题上的次数和每个主题所包含的词的总数;其中,所述概率矩阵中的每一行即为对应的文档在主题上的主题向量,全部的主题向量集合即为所述主题向量集。
进一步的,所述步骤S11之后还包括步骤:
S12、当社交网络的文档集更新从而产生新的文档集时,根据所述步骤S11得到的每个文档的主题总数、每个词出现在每个主题上的次数和每个主题所包含的词的总数,对所述新的文档集中每一个新文档分词后进行主题分析,从而得到更新后的每个主题出现在每个文档的概率矩阵。
进一步的,如图3所示,步骤S12中对所述新的文档集中每一个文档执行以下步骤:
S121、对当前新文档进行分词,得到词序列;
S122、所述词序列中的每个词所属的主题服从概率分布Multinomial(1/K),对所述每个词所属的主题进行抽样,并统计每个主题被抽到的次数,将所述每个主题被抽到的次数标记为当前主题的出现次数;
其中,概率分布Multinomial(1/K)具体为p(zn=k)=1/K,zn表示词n所属的主题,K表示当前新文档的主题总数,k表示主题变量;
S123、对于所述词序列中的每个词,执行以下步骤:取出当前词所属的主题,并将步骤S122统计的被取出的主题的出现次数减1,则此时当前词所属的主题服从概率分布P(zn|m,α,β),接着对当前词所属的主题进行抽样,并将抽到的主题的出现次数加1;
其中,m表示当前新文档,nm表示当前新文档中词的总数,K表示当前新文档的主题总数,V表示步骤S11中所述文档集中词的总数,表示此时在当前新文档中主题k的出现次数,表示词v出现在主题k的次数,nk表示主题k所包含的词的总数,α和β为参数;
S124、重复执行步骤S123,直至达到预设的迭代次数,得到迭代完毕时的每个主题的出现次数;
S125、根据步骤S124中得到的所述每个主题的出现次数求出每个主题出现在当前新文档中的概率;具体计算公式为:
表示主题k出现在文档m中的概率,m表示当前新文档,表示步骤S124中得到的在文档m中主题k的出现次数。
其中,所述参数β=0.1,所述参数α=50/文档数。
进一步的,如图4所示,所述步骤S3对于每个主题簇进行如下步骤:
S31、将主题簇看作一个无向图,对图中的每个点进行编号;
S32、计算任意两个点的社团链接相似度,找出使一个节点的社团链接相似度最大的另一个节点,若此两个节点的ΔQ>0,则将此两个节点合并为一个节点;
其中,节点i和节点j的社团链接相似度CLS为:
Q表示社团内部的边数与在假设没有社团结构时的度数的差值的期望的平方,ΔQ是指合并两个社团前的Q值减去合并两个社团后的Q值,Ci表示节点i对应的社团,N(Ci)表示社团Ci的邻居节点集;
S33、重复执行步骤S32,直至没有点需要合并为止,合并后的每个点代表一个社团,全部的点即为当前主题簇的主题社团集。
其中,S12步骤中的算法是对LDA算法所作的改进,定义为OLDA算法,其伪代码为:
其中,k~Multinomial(1/K)的具体公式为:p(zn=k)=1/K,K为主题总数,其中,V为旧文档的总词数,文档在主题上的概率矩阵θ的元素值为:文档m在主题k的概率
其中,步骤S3是对CLS算法和modularity算法所作的改进,定义为OptimizeModularity算法,其伪代码为:
与现有技术相比,本发明实施例的有益效果是:
1、对LDA算法进行改造,使它可以对更新后产生的新文档进行主题分析而不用重复地对旧文档进行主题分析;
2、本发明针对当前社团发现算法仅能对社团进行链接划分而不能对社团进行主题划分的不足,结合基于链接的社团发现算法和主题模型算法提供了一种能够有效和高效地对社团进行主题和链接划分的主题社团发现算法。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。