发明内容
本发明要解决的技术问题是针对现有技术存在的问题和不足,提供一种新的社交媒体的用户动静兴趣挖掘方法,该方法可以更全面的挖掘用户的兴趣,更适合于社交媒体的用户兴趣分析。
发明人发现现有技术在社交媒体挖掘用户兴趣时,使用了统一的表示模型,不能体现社交媒体的动态特性,所以提出了社交媒体中基于背景的用户静态兴趣表示和和挖掘方法,以及基于内容的用户动态兴趣表示和挖掘方法,能更合理的描述社交媒体用户的兴趣特征,更适合社交媒体用户的兴趣特征的后续深入分析,比如用户相似度计算、用户推荐、社区推荐等等。
本发明所要解决的技术问题是通过以下的技术方案来实现的。本发明是一种社交网络用户动静兴趣挖掘方法,其特点是,其步骤如下:
A、从社交媒体采集获取用户user的背景信息profile和生成内容content;
B、从用户user的背景信息profile中提取静态兴趣SI={SI1,SI2,…,SIm},每个兴趣点SIi是一个二元组SIi=(kwi,wi),1≤i≤m,其中,kwi为关键词,wi为用户对kwi的喜好权重;
C、从用户user的生成内容content中提取动态兴趣DI={DI1,DI2,…,DIn},每个兴趣点为一个三元组DIi=(topici,wi,T),1≤i≤n,其中,topici是由多个关键词组成的,wi为用户对topici的喜好权重,T={t1,t2,…,ts},ti(1≤i≤s)为用户讨论topici的各个时间点,即在不同时间点的分布情况。
本发明所述的社交网络用户动静兴趣挖掘方法,进一步优选的技术方案是,步骤A中所述的从社交媒体采集获取用户user的背景信息profiile和生成内容content,其具体步骤如下:
A1、使用采集工具获取用户user的背景信息profile={tag,bi,job},其中tag为用户的标签,tag={tag1,tag2,…,tage},bi为用户的简介,bi={bi1,bi2,…,bif},job为用户的职位,job={job1,job2,…,jobg};
A2、使用采集工具获取用户user的在时间范围内容生成的内容content。
本发明所述的社交网络用户动静兴趣挖掘方法,进一步优选的技术方案是,步骤B中所述的从用户user的背景信息profile中提取静态兴趣SI={SI1,SI2,…,SIm},其具体步骤如下:
B1、把采集到的用户的标签形成一个库,在分词时,将其作为一个整体识别,用户user的标签记为tag={tag1,tag2,…,tagc};
B2、对用户的简介分词,因为内容较短,不进行词频统计,得到用户user的简介词集为bi={bi1,bi2,…,bif};
B3、对用户的职位分词,因为内容较短,不进行词频统计,得到用户user的职位词集为job={job1,job2,…,jobg}。
B4、统计tag、bi及job中各个词出现的次数,作为词的权重,权重参考最大值进行归一化,按照权重降序排列,根据需求选取m个词作为用户的静态兴趣,记为SI={(kw1,w1),(kw2,w2),…,(kwm,wm)}。
本发明所述的社交网络用户动静兴趣挖掘方法,进一步优选的技术方案是,上述步骤C中所述的从用户user的生成内容content中提取动态兴趣DI={DI1,DI2,…,DIn},其具体步骤如下:
C1、对用户user的生成内容content中的每一条信息ci(假设content有x条信息,1#i x)进行分词,从分词结果中选出频率大于一定阈值ζ1的词作为候选的动态兴趣集合CDI1;
C2、对CDI1中相邻的、且满足一定共现阈值ζ2的词进行合并,得到候选的动态兴趣集合CDI2;
C3、计算CDI2中每个候选兴趣的上下文邻接类别来衡量其语用多样性,选取满足一定的上下文邻接类别阈值ζ3的作为候选的动态兴趣集合CDI3;
C4、计算CDI3中每个兴趣点的重要度W(topiei),其中,T={t1,t2,…,ts},ti(1≤i≤s)为用户讨论topici的各个时间点,对兴趣点的权重参考最大值进行归一化,按照兴趣点权重降序排列,根据需求选取n个兴趣点作为用户的最终动态兴趣,记为DI={(topic1,w1,T1),(topic2,w2,T2),…,(topicm,wm,Tm)}。
与现有技术相比,本发明的社交媒体用户动静兴趣挖掘方法,能更合理的描述社交媒体用户的兴趣特征,更适合社交媒体用户的兴趣特征的后续深入分析。
具体实施方式
下面结合附图和具体实施方式对本发明的实施过程作进一步详细的描述。
参照图1,本发明的社交网络用户动静兴趣挖掘方法,步骤如下:
步骤102、从用户user的背景信息profile中提取静态兴趣SI={SI1,SI2,…,SIm},每个兴趣点SIi是一个二元组SIi=(kwi,wi),1≤i≤m,其中,kwi为关键词,wi为用户对kwi的喜好权重,参照图2,其具体步骤如下:
步骤201、用户在社会网络上定义自己的标签时,既可以在标签库中选取,也可以人工输入。标签可以理解为是有意义的字符串,把采集到的用户标签形成一个库,在分词时,将其作为一个整体识别,用户user的标签记为tag={tag1,tag2,…,tage};
步骤202、对用户的简介分词,因为内容较短,不进行词频统计,得到用户user的简介词集为bi={bi1,bi2,…,bif};
步骤203、对用户的职位分词,因为内容较短,不进行词频统计,得到用户user的职位词集为job={job1,job2,…,jobg}。
步骤204、统计tag、bi及job中各个词出现的次数,作为词的权重,权重参考最大值进行归一化,按照权重降序排列,根据需求选取m个词作为用户的静态兴趣,记为SI={(kw1,w1),(kw2,w2),…,(kwm,wm)}。
步骤103、从用户user的生成内容content中提取动态兴趣DI={DI1,DI2,…,DIn},参照图3,其具体步骤如下:
步骤301、对用户user的生成内容content中的每一条信息ci(假设content有x条信息,1#i x)进行分词,从分词结果中选出频率大于一定阈值ζ1的词作为候选的动态兴趣集合CDI1。为提取出现频率不高,但有实际意义的词,该阈值不宜过大;
步骤302、对CDI1中相邻的、且满足一定共现阈值ζ2的词进行合并,得到候选的动态兴趣集合CDI2。该过程需经过多次迭代统计,由原先的单个词,逐渐合并得到越来越长的候选动态兴趣,直到最终没有可合并的串为止;
步骤303、计算CDI2中每个候选兴趣的上下文邻接类别来衡量其语用多样性,选取满足一定的上下文邻接类别阈值ζ3的作为候选的动态兴趣集合CDI3。邻接类别越大,表明其使用越灵活,成为有意义串的概率就越大。
步骤304、计算CDI3中每个兴趣点的重要度W(topici),其中,T={t1,t2,…,ts},ti(1≤i≤s)为用户讨论topici的各个时间点,对兴趣点的权重参考最大值进行归一化,按照兴趣点权重降序排列,根据需求选取n个兴趣点作为用户的最终动态兴趣,记为DI={(topic1,w1,T1),(topic2,w2,T2),…,(topicm,wm,Tm)}。虽然社交网络包含了海量用户,其动态兴趣也涉及现实社会生活各个领域,但从统计学角度看,社交网络用户的动态兴趣符合幂律分布,即少量兴趣吸引了大量用户,而大量兴趣只被少数人关注。因此,可以提取用户的核心动态兴趣进行相似度计算,一方面可以解决社交网络特征稀疏的问题,另一方面还可以减少计算的工作量。
使用三种不同的社交网络用户兴趣挖掘方法用于相似用户的计算,比较用户动静兴趣挖掘方法的有效性。三种方法如下:
(1)方法1-SU-profile,基于用户背景挖掘用户的兴趣,使用用户背景中的简介、标签及职位等信息;
(2)方法2-SU-content,基于用户生成的内容挖掘用户的兴趣,不考虑用户兴趣的按时间的动态分布特性;
(3)方法3-SU-pc,本发明提出的方法,分别从用户背景中挖掘用户的静态兴趣,从用户生成的内容中挖掘用户的动态兴趣,考虑兴趣按时间的动态分布特性。
用户u1,u2的静态兴趣相似度计算使用Jaccard方式,如式(1)所示:
用户u1,u2的动态兴趣中的两个兴趣点Inti,Intj的相似度计算如式(6)所示:
式(2)既考虑了兴趣点内容的相似度(余弦距离计算方法),又考虑了兴趣点的时间周期。在计算时间持续度时,并没有限定兴趣点的时间一致性问题,这是因为即使对同一个兴趣点,不同用户获取信息的时间不同,不同用户的认知能力不同,都可能导致时间的偏差现象。
用户u1和u2的动态兴趣中的n个兴趣点的总相似度计算如式(3)所示:
对用户的静态兴趣相似度USISim(u1.SI,u2.SI)和动态兴趣相似度UDISim(u1.DI,u2.DI)进行整合,得到最终的用户兴趣相似度,如式(4)所示:
UISim(u1,u2)=α*USISim(u1.SI,u2.SI)+(1-α)*UDISim(u1.DI,u2.DI) (4)
式(8)中α是静态兴趣和动态兴趣权重的调节系数,0≤α≤1,当α=0时,只使用用户的微博内容计算兴趣相似度;当α=1时,只使用用户的背景计算兴趣相似度。本发明中经过实验确定α=0.6。
目前,还没有公开的用于社交网络用户兴趣挖掘、用户兴趣相似度计算的标准数据集。本发明以新浪微博为例,选取了时尚、企业管理、教育、军事、文化5个领域进行实验数据的采集、用户兴趣挖掘的分析。
在新浪微博搜索框中输入领域关键词进行检索,然后点击“找人”按钮,最多只能获取前50页用户,每页20个,共计1000个用户。5个领域使用的检索关键词及获取的用户数如表1所示。
表1 5个领域的关键词及获取用户数
对表1获取的6684个用户,进一步采集的信息包括:①对6684个用户进行1层关注、粉丝的扩展,新浪微博为防止他人获取用户的关注、粉丝进行恶意关注或广告骚扰,对非本人的关注、粉丝的访问量进行了限制,只能获取前5页内容,每页20个用户,关注和粉丝最多分别能获取100个用户,实际采集的用户总数为714472个;②采集714472个用户的背景(简介、标签及职位)、发表的微博(包括原创、转发或评论),由于有些用户发表的微博过多,限制每个用户微博的发表时间是2014年1月1日-2014年12月31日,共计采集微博4206751条。
数据集中用户u1的关注集记为u1.follower,作为标准答案,通过方法SU-profile计算用户间的兴趣相似度选取出的关注集记为u1.follower-SU-profile,令|u1.follower|=|u1.follower-SU-profile|,方法SU-profile选取的关注的准确率计算如式(5):
其他2种方法计算获取关注准确率的方式类似。
5个领域的8个检索关键词,每个随机选取100个用户,共计800个用户,7种方法得到的平均准确率RUA如表2所示。
表2 3种方法得到的平均RUA
由表2可见,3种方法得到的平均准确率都不高,主要原因是即使计算出的用户兴趣相似度较高,但该用户并不一定成为他的关注对象。方法SU-profile要好于方法SU-content的效果,说明从用户的背景挖掘用户的静态兴趣比从用户生成的内容中挖掘用户的动态兴趣更有效。主要原因是:一方面微博中用户产生的文本信息中常常包含大量的口语、省略语、符号,这些文本的语义信息很难挖掘;另一方面微博上有大量的非活跃用户,发表微博很少。方法SU-pc得到的效果最为理想,验证了将微博用户的兴趣分为静态兴趣和动态兴趣,采用不同的策略分别计算的优势所在。
本发明所述的方法并不限于具体实施方式中所述的实施例,本领域技术人员根据本发明的技术方案得出的其它的实施方式,同样属于本发明的技术创新范围。