基于NWD集成算法的多粒度微博用户兴趣画像构建

2020-07-27 09:57柳建华杨培琛刘洪伟
广东工业大学学报 2020年4期
关键词:博文新词画像

张 舒,莫 赞,柳建华,杨培琛,刘洪伟

(广东工业大学 管理学院,广东 广州 510520)

作为重要的社交媒体平台,微博一直是业界和学界中众多研究人员关注的焦点。截至2018年6月,新浪微博月活跃用户超过4亿,日活跃用户超过1.65亿[1],伴随如此庞大的微博活跃用户规模,每天都会产生数以亿计的用户数据。用户画像(User Portrait)则是一种在海量数据基础上获取用户信息而构成的用户需求、个性化偏好以及用户兴趣的结构化表示方法[2]。由于在用户画像领域存在多种维度的画像描述,本文将以微博数据为基础,通过一级标签模型和二级标签模型分别构建粗粒度和细粒度的微博用户兴趣画像,由此更加全面地把握用户兴趣偏好,改善用户体验、实现更加精准的个性化推荐等[3]。

目前在该领域的研究中,仍存在着诸多亟待解决的问题。微博文本的特殊性则是首要之一,其主要体现在以下几个方面:首先,微博文本具有鲜明的非正式性,其主要表现在大量网络用语的使用,非结构化表情、错别字和省略等的充斥,例如:“倍感鸭力,但也要冲鸭 ······[笑cry][笑cry][笑cry]”,其中的“鸭力”和“冲鸭”分别是“压力”和“冲呀”的网络表达方式,而“[笑cry]”则是连续出现的3个表情。这就使得现有的分词系统无法对博文进行准确分词,造成语义曲解,因而在以文本特征为基础的用户兴趣画像研究中,添加新词词典从而获得准确的分词则变得十分必要。事实上在这一领域,研究人员从点互信息(Pointwise Mutual Information, PMI)和左右熵的角度已经取得大量研究成果,如雷一鸣等[4]和刘伟童等[5]分别在此基础上通过引入外部统计量和采取不切词的策略在微博语料上进行新词识别。Li等[6]则通过提出特定领域新词检测(Domain-Specific New Words Detection, DW)系统用于发掘语料中的未登陆词。这些研究为构建新词词典提供了有益参考,然而却普遍存在复杂度较高和扩展性较差的问题,本文针对上述局限,研究如何从支持度视角来提高NWD算法在新词发现上的效果及其对用户兴趣画像的促进作用。

其次,微博平台上的“信息过载”[7]现象严重,其主要指的是微博平台上存在着自动生成且海量投放的广告、转发推广等等。在小样本条件下,通常这一特性对微博用户的兴趣画像效果影响较小,所以研究者多关注模型本身,如林燕霞等[8]提出结合社会认同理论的文档主题生成模型(Latent Dirichlet Allocation, LDA)对微博用户进行了群体兴趣画像描述,Kuzma等[9]则利用融合了神经网络与心理学模型的方法对微博用户进行兴趣画像。而对于大样本数据集,严重的“信息过载”现象会对训练数据造成过多的噪声污染,所以仅关注模型本身不再适用于大样本下的微博用户兴趣画像,更准确的兴趣画像需要对数据进行降噪处理。

最后,简洁性作为微博文本的另一特性,其主要体现在大多数博文只有一个句子甚至一个短语,这一特性使得微博文本在构造特征时极易造成严重的数据稀疏问题[10]。从国内外研究现状来看,研究者大都利用微博文本的统计特征来对用户进行兴趣画像且多为无监督模型,其可控性和可移植性都存在较大局限[11]。如Tu等[12]通过集成词频−逆文档频率(Term Frequency-Inverse Document Frequency, TFIDF)因子与TextRank算法对微博用户进行了兴趣画像研究,文献[7, 13]都提出了不同的改进LDA文本主题模型对微博用户进行兴趣画像。不同于上述研究,本文聚焦于微博文本的语义特征,研究使用监督式模型Bi-LSTM[14]和XGBoost[15]对微博用户进行兴趣画像。

综上所述,本文提出一种综合考虑微博文本特殊性的集成算法NWD-Bi-LSTM-XGBoost,用以有效构建多粒度微博用户兴趣画像。首先,不同于PMI和左右熵,提出一种基于支持度视角的新词发现算法,在分词过程中准确识别出新出现的网络用语,从而在训练词向量(Word Embedding)时能更加有效地捕捉博文语义特征。其次,引入Simhash算法[16]对数据集进行去重操作,将大量存在的广告、转发推广等重复内容去除,由此在最大程度上降低由于“信息过载”现象而导致的负面作用。在此基础上,采用Bi-LSTM[14]提取博文语义特征[17],从而避开由于微博文本的简洁性而造成的特征稀疏问题,并同时构建粗粒度用户兴趣画像。最后,将博文语义特征与用户静态特征融合作为XGBoost算法[15]的输入,由此构建细粒度用户兴趣画像。实验结果表明,本文方法能有效构建多粒度微博用户兴趣画像,同时也验证了NWD算法相对于传统新词发现方法的优越性和其对构建多粒度微博用户兴趣画像时所起到的积极作用。

1 理论基础

1.1 Simhash算法

Simhash算法[16]是一种改进的hash算法,因其能解决表面相似度较高的文本数据去重问题而被广泛应用于自然语言处理的各项任务中。其主要包含以下2个步骤:

(1) 计算hash值。首先初始化一篇文档为一个f 维0向量作为其签名S ,同时初始化一个 f维0向量V。然后对文档进行分词并过滤掉一些语气词、助词、干扰符号后将其转换成一组特征词,每个特征词都有一个相应的权重,该权重可以是特征词在文档中出现的总次数。再将所有的特征词都使用相同的hash函数映射成一个 f位的二进制哈希值h, 遍历h 的每一位,如果第i 位为1 (0 ⩽i ⩽f),V 的第i位加上该特征词的权重,否则减去。最后遍历 V ,若 V 的第i位值大于0,则将第 i位置为1,否则置为0。最终生成的签名就是该文档对应的Simhash签名。

(2) 给定阈值ϵ,计算不同文档之间Simhash值的海明距离d ,若d <ϵ,则判定为相似,否则判定为不相似。

在本研究中,由于数据集中的“信息过载”现象十分严重,因此,本文引入Simhash算法对数据集进行降噪处理,从而为微博用户兴趣画像模型的构建提供良好的数据基础。

1.2 双向长短期记忆网络Bi-LSTM

双向长短期记忆网络Bi-LSTM[14]是长短期记忆网络(Long Short-term Memory, LSTM)[18]的改进版,均属于监督式循环神经网络模型。Bi-LSTM主要解决了LSTM在处理序列化文本数据时只能考虑上文信息而无法同时兼顾下文信息的问题,因而其具备更加优良的文本分类和语义特征提取能力。Bi-LSTM由一个前向LSTM模型和一个后向LSTM模型组成,如图1所示。

图 1 Bi-LSTM模型结构示意图Fig.1 Bi-LSTM model structure diagram

前向LSTM模型用于捕获当前时刻的上文特征信息,而后向LSTM则用于捕获当前时刻的下文特征信息,二者共同决定当前时刻的预测输出。例如,图1中t 时刻的预测输出yt为

1.3 梯度提升算法XGBoost

梯度提升算法XGBoost[15]由梯度提升决策树(Gradient Boosting Decision Tree, GBDT)[19]改进而来,属于监督式树模型。设有特征数量为m , 容量为n 的数据集D 为

所有弱学习器的集合记为:F={f(X)=wq(X)}(q:Rm→T,w ∈RT) ,其中,q 为样本 X映射到相应叶子节点的决策规则, T表示当前CART树的叶子节点数量, w表示叶子节点的权重, f表示CART树,包括树结构 q和叶子节点权重w 。基于XGBoost算法对样本 Xi的预测输出为

其中,l (·,·)是误差项,描述真实值和预测值之间差异的损失, Ω(·) 是模型复杂度的罚项,γ 是模型复杂度参数, λ是一个固定系数,对于每一棵CART树的生成,计算每个分裂特征的增益分数,增益分数最大的特征为该节点的最优分裂特征,其计算方式为

2 集成NWD算法的多粒度微博用户兴趣画像模型NWD-Bi-LSTMXGBoost

2.1 新词发现(NWD)算法

在常见的新词发现算法中,大多都基于PMI和左右熵的角度来考虑改进,而受启发于Apriori算法[20],本文所提出的NWD算法从支持度视角重新思考了这一问题,下述即为该算法的具体阐述。

根据已构建的频繁 k 项集 Lk,对常用词进行过滤。定义 Lk中第i 个字符串在t时 期与¬ t (非t)时期的词频支持度为

AVGT() 即为衡量在前T 个时期中L是否为常用词的指标,因此在给定阈值区间 [ξ1,ξ2]的条件下,则能过滤掉前 T个时期中长度为k 的常用词,得到新词集Nk={,,···,}, 通常情况下,z

综上所述,得到下述完整NWD算法:

输入:带有时间标记的微博语料,最长字符串长度 K ,阈值ξ ,总时期数T ,阈值区间[ξ1,ξ2]

(1) For k =2 to K

(2) For k =K−1 to 2

得到频繁 k 项集:Lk={,,···,},k=2,3,···,K−1,即Ck→Lk.(3) For t =1 to T

基于频繁 k 项集 Lk,扫描t时期的微博语料,得到t时期的频繁k 项集 Lk,t及T F(),i=1,2,···,n,记录t时期的微博总数λt.

(4) For k =2 to K−1

说明:不考虑长度为1的词,候选频繁 K项集仅作为计算频繁K−1项集的辅助项集,因此结果集中对长度为 K的词也不予保留。

2.2 多粒度微博用户兴趣画像模型NWD-Bi-LSTM-XGBoost

NWD-Bi-LSTM-XGBoost算法的整体流程框架如图2所示,该算法主要由3部分构成:NWD新词发现算法、双向长短期记忆网络Bi-LSTM和梯度提升算法XGBoost,其中,NWD算法用于发掘微博语料中的新词及网络用语,从而获得更加精确的分词和语义把握,Bi-LSTM用于提取博文语义特征和训练一级标签模型,XGBoost则用于训练二级标签模型。

图 2 NWD-Bi-LSTM-XGBoost算法框架流程图Fig.2 NWD-Bi-LSTM-XGBoost algorithm framework flow charts

其算法步骤如下:

(3) 加入新词集,使用pkuseg[21]对所有语料进行分词,并以此结果训练Word-Embedding,得到每个单词的 f 维向量表示( x1,x2,···,xf)T。

(5) 融合微博语义特征和用户静态特征得到特征数量为m , 容量为n 的数据集D 为

3 实验

3.1 实验数据

目前,由于还没有针对微博用户兴趣画像的专用公开数据集,因此,本文在研究时使用Python编写聚焦爬虫,抓取新浪微博(https://s.weibo.com/)数据共2 000余万条,包含约11.6万个用户,包括用户ID、用户昵称、性别、年龄、微博内容、发表时间、点赞数、评论数、转发数、发博工具、位置坐标、关注数和粉丝数共计13个特征字段,时间跨度为2018-02-17至2018-07-06。此外,与文献[13, 22]中所述方法相似,本文也采用微博本身的hashtag作为博文的兴趣标签,具有相似hashtag的微博视为同一类兴趣博文,并由此得到粗粒度一级兴趣标签和细粒度二级兴趣标签,按照一级兴趣标签所包含的博文数量进行排序,选取top n个一级兴趣标签下的微博文本形成本文实验数据集。如表1所示,本文通过hashtag抽取了14个一级兴趣标签和61个二级兴趣标签。

由于每个一级标签下的数据样本存在类别不平衡的问题(Simhash过后,不平衡程度已经得到大幅降低),因此本文对每个一级标签下的数据样本进行了过采样或欠采样处理,使得每个一级标签的样本容量保持在8 000左右,并随机选取其中的80%作为训练集,10%作为开发集,10%作为测试集。

3.2 超参数与机器配置

在实验中,NWD算法采用Map/Reduce分布式集群处理技术进行实现,考虑到新词的生命周期大都超过1个月,同时新词字符串长度一般小于6,因此在实验中 T 恒定为5, K 恒定为7。而ξ 和[ ξ1,ξ2]由实验搜索得到,其调优范围分别为:0.50~0.75,0.50~0.75,1.25~1.75。本文采用skip-gram算法训练词向量,输出维度为200。对于Bi-LSTM,其模型结构由2层128单元Bi-LSTM、1层64单元Bi-LSTM和1层14单元全连接层构成,使用Adam更新参数,初始学习率设置为0.005,并根据开发集上的性能来选择最优参数。本文将第3层Bi-LSTM的64维激活向量作为博文语义特征。而对于XGBoost,其超参数采用随机搜索(Random Search)[23]的方式来确定,具体操作方式为给定搜索范围,基于前一轮次的运行结果来优化下一轮次的超参组合,迭代得到最优超参组合。本文超参搜索范围分别为:学习率0.01~0.1,树的最大深度3~10,样本采样比0.5~1,样本属性采样比0.5~1,L2正则化权重1~5,迭代轮数100~1 500。

表 1 微博用户兴趣标签体系Table 1 Interest tag system for microblog users

本文运行NWD算法的集群环境由8台机器组成,其中单台机器配置为CPU:Intel Xeon E5504 2.00 GHz,RAM:4G,Ubuntu 16.04,Hadoop 2.7.3,jdk 1.7。后续训练均由本地机器完成,机器配置为CPU:Intel i5 8500,RAM:16G,NVIDIA GTX 1050,Ubuntu 16.04,Python 2.7.15。

3.3 评价标准

在新词发现的相关研究中,由于文本数据量极大,很难人工标注出所有的真实新词,因此通常使用P@N[24](信息检索领域常用的前N个结果的准确率)来衡量方法的有效性。具体为对各个方法返回的前N个结果进行人工判别,取“是新词”的比率作为前N个结果的准确率。N一般取值100,200,300等,分别表示为P@100,P@200,P@300,在实际应用中,对于给定的N,通常会从结果集中随机选择N个来计算新词的P@N值,重复做10次取平均作为该方法的准确率。

在微博用户兴趣画像的相关研究中,宏平均F1值(Macro-average F1 score, mF1)和受试者工作特征曲线下面积(Area Under ROC Crave, AUC)是公认的较为全面的评价标准[25]。mF1值定义为

3.4 实验结果与分析

3.4.1 NWD算法结果与分析

基于本文数据集,图3给出了在不同参数条件下NWD算法的准确率变化趋势。从图3(a)和图3(b)中可见,当ξ 取0.65,[ ξ1,ξ2]取[0.65,1.55]时,NWD算法的准确率,即P@100,P@200,P@300均达到最高,分别为0.46,0.39,0.35。由此得到最优超参组合 ξ=0.65,[ξ1,ξ2]=[0.65,1.55]。

在最优超参组合下,NWD算法共发掘新词5 589个,其中衰减型新词2 920个,增长型新词2 669个,其部分运行结果如表2所示。

随着字符串长度k 的增加,其独立成词的能力不断减弱,即用于发掘新词的基数 Lk会不断减少,因此表2中的新词数量呈现一种递减的趋势。对于所发掘的衰减型新词,大部分2017年甚至2016年出现的网络流行语都能被准确发现,如“尬聊”、“蓝瘦”、“一脸懵逼”、“打call”等。而受语料规模和时间跨度的限制,其中也有少数新晋网络流行语被识别为衰减型新词,如“扛精”、“北鼻”等。随着春节档和冬奥会的到来,“红包”、“春晚”、“喜迎新春”等春节相关的词,“唐仁”、“捉妖记2”、“一路繁花相送”等影视剧相关的词以及“北京八分钟”等冬奥会相关的词,陡增又骤降且都出现在第一个时期,因此其中大部分也被识别为衰减型新词。对于所发掘的增长型新词,“佛系”、“皮一下”、“C位出道”、“肥宅快乐水”等大多数新出现的网络热词都能被有效发现;与衰减型新词类似,由于相关综艺及影视剧的播出,NBA季后赛及世界杯的来临,“菊外人”、“创造101”、“镇魂女孩”“詹姆斯”、“姆巴佩”等也在增长型新词集中大量出现。

图 3 不同参数条件下NWD算法的准确率Fig.3 Accuracy of NWD algorithm under different parameters

表 2 NWD算法部分运行结果展示Table 2 Part of the NWD algorithm running results show

为了进一步验证NWD算法的性能,本文分别选取了基于词语互信息和外部统计量的新词发现方法以及基于互信息和邻接熵的新词发现方法[4-5]与NWD算法在相同环境下进行对比实验,结果如表3所示。

表 3 不同方法的准确率对比Table 3 Comparison of accuracy of different methods

从表3中可见,NWD算法的准确率P@100,P@200,P@300均高于文献[4]和文献[5]所提方法,其主要原因是由于文献[4]所提方法直接使用现有分词工具进行切词处理,本身就会使得大量新词切分错误,从而导致新词识别的准确率较低,而文献[5]所提方法虽未使用分词系统,但由于方法中词频阈值的设定,使得在一些低频新词的发现上收效甚微。而NWD算法未进行分词,也不需要设定词频阈值,从实验结果上来看,新词被错误拆分的情况鲜有发生,而且在“芯愿”(37次)、“智熄”(28次)等这样的低频新词发掘上也效果显著。但是,在未建立全时段常用词典的情况下,NWD算法受时段和语料特征的影响较大,无法将所有常用词都准确剔除,而且当同一句式大量出现时,会出现诸如“我pick了”类似的截断型新词,从而对算法的准确率造成一定影响。

3.4.2 微博用户兴趣画像结果与分析

经实验发现,一级标签模型迭代次数为200时效果最优,此时的超参数分别为学习率0.005,优化器Adam,小批量样本数64。而二级标签模型在实验过程中通过随机搜索的方式得到以下一组最优超参组合,分别为学习率0.05,树的最大深度6,样本采样比0.75,样本属性采样比0.8,L2正则化权重1,迭代轮数1 200。

在以上超参条件下,一级标签模型(NWD-Bi-L S T M)和二级标签模型(N W D-B i-L S T MXGBoost)的mF1值和AUC值变化趋势如图4和图5所示。为了验证算法的优越性,本文分别引入了Bi-LSTM,文献[4]-Bi-LSTM,文献[5]-Bi-LSTM和Bi-LSTM-XGBoost,文献[4]-Bi-LSTM-XGBoost,文献[5]-Bi-LSTM-XGBoost共6个基准模型。其中文献[4]和文献[5]分别表示文献[4]和文献[5]所提出的新词发现方法。由图4和图5可见,一级标签模型和二级标签模型的mF1值和AUC值均能收敛到较高水平,而且相对于基准模型,在集成新词发现算法后,相应模型的mF1值和AUC值均有所提高。

图 4 不同模型的mF1值和AUC值在测试集中的变化趋势(一级标签模型)Fig.4 The trend of mF1 value and AUC value for different models in the test set(the primary tag model)

图 5 不同模型的mF1值和AUC值在测试集中的变化趋势(二级标签模型)Fig.5 The trend of mF1 value and AUC value of different models in the test set(the secondary tag model)

为了更加直观和定量地反映NWD-Bi-LSTMXGBoost算法在多粒度微博用户兴趣画像构建上的效果,一级标签模型、二级标签模型及相关基准模型在测试集中的最终mF1值和AUC值如表4和表5所示。

表 4 不同模型的mF1值和AUC值(一级标签模型)Table 4 The mF1 and AUC for different models(the primary tag model)

表 5 不同模型的mF1值和AUC值(二级标签模型)Table 5 The mF1 and AUC for different models (the secondary tag model)

从表4和表5中可见,NWD-Bi-LSTM模型在测试集上的mF1值和AUC值分别为0.836和0.797,NWDBi-LSTM-XGBoost模型在测试集上的mF1值和AUC值分别为0.704和0.636,这说明两个模型能有效对微博用户进行多粒度兴趣标签识别。而相对于基准模型Bi-LSTM和Bi-LSTM-XGBoost,在加入NWD算法后,模型的mF1值和AUC值分别提高了0.032,0.041和0.033,0.047,表明NWD算法的集成使得模型在构建多粒度微博用户兴趣画像时效果更优。相对于文献[4]-Bi-LSTM、文献[5]-Bi-LSTM和文献[4]-Bi-LSTM-XGBoost、文献[5]-Bi-LSTMXGBoost这4个基准模型,集成NWD算法的一级标签模型和二级标签模型的mF1值和AUC值分别高出其0.018,0.021,0.019,0.014和0.023,0.016,0.028,0.022,进一步说明了NWD算法相对于传统新词发现算法的优越性能。

3.5 样例可视化展示

本文在实验数据集外随机抽取了一个微博用户的相关数据,通过一级标签模型NWD-Bi-LSTM和二级标签模型NWD-Bi-LSTM-XGBoost构建该用户的多粒度兴趣画像,其可视化展示如图6,用户的原博文如下(ID为脱敏处理后的ID):5510793657:“美图T9颜值就和我的小王子[爱你]{爱你}一样高,用它拍照片,我也能拥有小王子一样的美貌”。“爬出钻石的坑王者还会远吗@王者荣耀”。“『姆巴佩美图』2018世界杯,下场对阵丹麦继续进球帮助球队全胜[色][色][色]法国队姆巴佩俄罗斯世界杯”。“携手同心,求酒吞,有阎魔11,青行灯5,荒川10[传记未解],还有几片茨木,人换吗[允悲]”。

图 6 样例可视化展示Fig.6 Visualization of a sample

4 结语

本文首先提出了一种基于支持度视角的NWD算法,在此基础上,进一步提出集成算法NWD-Bi-LSTM-XGBoost用于构建多粒度微博用户兴趣画像。该算法首先通过NWD-Bi-LSTM模型对微博用户进行粗粒度兴趣标签识别并提取博文语义特征,将其与用户静态特征融合通过XGBoost算法对微博用户进行细粒度兴趣标签识别。实验结果表明,NWD-Bi-LSTM-XGBoost算法能有效对微博用户进行多粒度兴趣画像构建。同时,本文所提出的NWD算法也能对网络中出现的新词进行准确发掘并在对微博用户进行多粒度兴趣画像构建时起到积极的促进作用,也丰富了新词发现领域的相关理论。

未来的研究工作中,我们将聚焦于以下两个方面:(1) 建立全时段常用词典并探索更加有效的新词发现算法来提高新词发现的准确性,从而实现更加精确的分词和语义把握;(2) 建立更加丰富和完善的微博用户兴趣动态标签知识库,以期能实现对微博用户的多角度全时段兴趣画像。

猜你喜欢
博文新词画像
威猛的画像
声音·数字·新词 等
第一次挣钱
“00后”画像
画像
《微群新词》选刊之十四
谁和谁好
学诗偶感
Review on Tang Wenzhi’s The Gist of Chinese Writing Gamut
潜行与画像