广东工业大学学报  2020, Vol. 37Issue (4): 42-50.  DOI: 10.12052/gdutxb.190129.
0

引用本文 

张舒, 莫赞, 柳建华, 杨培琛, 刘洪伟. 基于NWD集成算法的多粒度微博用户兴趣画像构建[J]. 广东工业大学学报, 2020, 37(4): 42-50. DOI: 10.12052/gdutxb.190129.
Zhang Shu, Mo Zan, Liu Jian-hua, Yang Pei-chen, Liu Hong-wei. Multi-granularity Microblog User Interest Portrait Construction Based on NWD Integrated Algorithm[J]. JOURNAL OF GUANGDONG UNIVERSITY OF TECHNOLOGY, 2020, 37(4): 42-50. DOI: 10.12052/gdutxb.190129.

基金项目:

国家自然科学基金资助项目(71671048)

作者简介:

张舒(1993–),男,硕士研究生,主要研究方向为机器学习、数据挖掘等。

通信作者

莫赞(1962–),男,教授,博士生导师,主要研究方向为电子商务、数据挖掘等,E-mail:mozan@126.com

文章历史

收稿日期:2019-10-21
基于NWD集成算法的多粒度微博用户兴趣画像构建
张舒, 莫赞, 柳建华, 杨培琛, 刘洪伟    
广东工业大学 管理学院,广东 广州 510520
摘要: 微博文本特殊性的存在使得微博用户兴趣画像难以有效构建。为此, 提出了一种集成算法——新词发现−双向长短期记忆网络−梯度提升算法。首先针对微博文本的非正式性, 提出了一种基于支持度视角的新词发现(New Word Discovery, NWD)算法, 发掘其中大量存在的网络用语以实现更加准确的分词及语义把握; 其次, 引入Simhash算法使得微博文本中的“信息过载”现象得到改观; 再次, 为改善微博文本的简洁性而引起的特征稀疏问题, 采用双向长短期记忆网络(Bidirectional Long Short-term Memory,Bi-LSTM)模型提取博文语义特征; 最后, 通过融合微博用户静态特征训练梯度提升(extreme Gradient Boosting,XGBoost)模型, 从而有效构建多粒度微博用户兴趣画像。实验结果表明, 粗粒度(一级)兴趣标签模型NWD-Bi-LSTM和细粒度(二级)兴趣标签模型NWD-Bi-LSTM-XGBoost的宏平均F1值(Macro-average F1 score, mF1)和受试者工作特征曲线下面积(Area Under ROC Crave, AUC)分别高达83.6%, 79.7%和70.4%, 63.6%, 相对于基准模型, NWD算法的集成使得模型的mF1值和AUC值均能提升3%~5%, 其促进作用优于现有的新词发现方法。
关键词: 新词发现    双向长短期记忆网络    XGBoost梯度提升    多粒度    微博用户兴趣画像    
Multi-granularity Microblog User Interest Portrait Construction Based on NWD Integrated Algorithm
Zhang Shu, Mo Zan, Liu Jian-hua, Yang Pei-chen, Liu Hong-wei    
School of Management, Guangdong University of Technology, Guangzhou 510520, China
Abstract: The special features of microblog text cause difficulties in building microblog user interest portrait. To address the problem, an ensemble algorithm based on NWD-Bi-LSTM-XGBoost is proposed. Firstly, a new word discovery algorithm from the perspective of support is raised to deal with the informality of microblog text, exploring the ubiquitous internet phrases and achieving more accurate word segmentation and semantic understanding. Then, a Simhash algorithm is introduced to mitigate the information overload of microblog text. To improve the feature sparsity caused by microblog text’s conciseness, bidirectional long short-term memory networks are used to extract semantic features. Finally, the XGBoost model is trained by combining the static features of microblog users with the semantic features of the blog text for constructing the multi-granularity microblog user interest portrait efficiently. The experimental results show that the macro-average F1 score and AUC value of coarse-granularity (primary) interest tag model are up to 83.6% and 79.7% and that of fine-granularity (secondary) interest tag model are 70.4% and 63.6%, respectively. Compared with other benchmark models, the macro-average F1 score and AUC value of the models increase by 3%~5% due to ensemble of the NWD algorithm, which is superior to the existing new word discovery methods.
Key words: new word discovery    bidirectional long short-term memory    extreme Gradient Boosting    multi-granularity    microblog user interest portrait    

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

目前在该领域的研究中,仍存在着诸多亟待解决的问题。微博文本的特殊性则是首要之一,其主要体现在以下几个方面:首先,微博文本具有鲜明的非正式性,其主要表现在大量网络用语的使用,非结构化表情、错别字和省略等的充斥,例如:“倍感鸭力,但也要冲鸭 $\cdots\cdots$ [笑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, TF-IDF)因子与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 \leqslant i \leqslant f)$ ${{V}}$ 的第 $i$ 位加上该特征词的权重,否则减去。最后遍历 ${{V}}$ ,若 ${{V}}$ 的第 $i$ 位值大于0,则将第 $i$ 位置为1,否则置为0。最终生成的签名就是该文档对应的Simhash签名。

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

在本研究中,由于数据集中的“信息过载”现象十分严重,因此,本文引入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模型结构示意图 Figure 1 Bi-LSTM model structure diagram

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

${y_t} = g({{{W}}_y}[\mathop {{{{a}}_t}}\limits^ \to ,\mathop {{{{a}}_t}}\limits^ \leftarrow ] + {{{b}}_y})$ (1)

其中, $g$ 为输出层的激活函数, $\mathop {{{{a}}_t}}\limits^ \to$ ${{\mathop {{a}}\limits^ \leftarrow} _t}$ 分别为前向LSTM和后向LSTM在 $t$ 时刻的激活状态向量,该向量由前一时刻的激活状态向量和当前时刻的输入向量 ${{{x}}_t}$ 共同决定, ${{{W}}_y}$ 为输出层的权重矩阵, ${{{b}}_y}$ 为偏置项。

1.3 梯度提升算法XGBoost

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

${\cal{D}} = \{ ({{{X}}_i},{y_i})|{{{X}}_i} \in {{\mathbb{R}}^m},{y_i} \in {\mathbb{R}},|{\cal{D}}| = n\} $

所有弱学习器的集合记为: ${\cal{F}} = \{ f({{X}}) = {{{w}}_{q( X)}}\}$ $(q:{{\mathbb{R}}^m} \to T,{{w}} \in {{\mathbb{R}}^T})$ ,其中, $q$ 为样本 ${{X}}$ 映射到相应叶子节点的决策规则, $T$ 表示当前CART树的叶子节点数量, ${{w}}$ 表示叶子节点的权重, $f$ 表示CART树,包括树结构 $q$ 和叶子节点权重 ${{w}}$ 。基于XGBoost算法对样本 ${{{X}}_i}$ 的预测输出为

${\hat y_i} = \phi ({{{X}}_i}) = \sum\limits_{k = 1}^K {{f_k}} ({{{X}}_i})$ (2)

其中, ${f_k} \in {\cal{F}}$ $K$ 表示CART树的数量。XGBoost算法在每次训练基学习器时保持前面 $t - 1$ 轮的预测不变,加入本轮次的基学习器 ${f_t}$ ,得到样本 ${{{X}}_i}$ 在第 $t$ 次模型训练时的预测输出 $\hat y_i^{(t)} = \hat y_i^{(t - 1)} + {f_t}({{{X}}_i})$ ,因此定义第 $t$ 轮的目标函数为

$\begin{array}{l} {{\cal{L}}^{(t)}} =\displaystyle \sum\limits_{i = 1}^n l ({y_i},\hat y_i^{(t - 1)} + {f_t}({{{X}}_i})) + \Omega ({f_t}), \\ \;\;\;\;\;\;\;\;\;\; {\rm{ }}\Omega ({f_t}) = \gamma T + \frac{1}{2}\lambda ||{{w}}|{|^2} \\ \end{array} $ (3)

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

${{\cal{L}}_{{\rm{split}}}} \!=\! \frac{1}{2}\left[ {\frac{{{{\left(\displaystyle\sum\nolimits_{i \in {I_L}} {{g_i}} \right)}^2}}}{{\displaystyle\sum\nolimits_{i \in {I_L}} {{h_i}} + \lambda }} + \frac{{{{\left(\displaystyle\sum\nolimits_{i \in {I_R}} {{g_i}} \right)}^2}}}{{\displaystyle\sum\nolimits_{i \in {I_R}} {{h_i}} + \lambda }} - \frac{{{{\left(\displaystyle\sum\nolimits_{i \in I} {{g_i}} \right)}^2}}}{{\displaystyle\sum\nolimits_{i \in I} {{h_i}} + \lambda }}} \right] \!-\! \gamma $ (4)

其中,定义 ${I_j} = \{ i|q({{{X}}_i}) = j\} $ 为节点 $j$ 对应的样本集, ${I_L}$ ${I_R}$ 分别为分裂特征左边和右边的样本集, $I = {I_L} \cup {I_R}$ ${g_i} = {\partial _{{{\hat y}^{(t - 1)}}}}l({y_i},{\hat y^{(t - 1)}})$ ${h_i} = \partial _{{{\hat y}^{(t - 1)}}}^2l({y_i},{\hat y^{(t - 1)}})$ 分别为损失函数的一阶和二阶梯度统计量, $\frac{{{{\left(\displaystyle\sum\nolimits_{i \in {I_L}} {{g_i}} \right)}^2}}}{{\displaystyle\sum\nolimits_{i \in {I_L}} {{h_i}} + \lambda }}$ $\frac{{{{\left(\displaystyle\sum\nolimits_{i \in {I_R}} {{g_i}} \right)}^2}}}{{\displaystyle\sum\nolimits_{i \in {I_R}} {{h_i}} + \lambda }}$ $\frac{{{{\left(\displaystyle\sum\nolimits_{i \in I} {{g_i}} \right)}^2}}}{{\displaystyle\sum\nolimits_{i \in I} {{h_i}} + \lambda }}$ 分别表示左子树分数,右子树分数和不分裂时的分数, $\gamma $ 为新加入的叶子节点所带来的复杂度代价。若 ${{\cal{L}}_{{\rm{split}}}} < 0$ ,则不再分裂。由于XGBoost对目标函数进行了二阶泰勒展开且加入了正则项,因而模型的优化速度更快并能有效防止过拟合。另外,XGBoost在工程实现上也做了大量优化,除了在特征分裂时支持并行计算外,其在处理稀疏、缺失数据时也更加鲁棒。

2 集成NWD算法的多粒度微博用户兴趣画像模型NWD-Bi-LSTM-XGBoost 2.1 新词发现(NWD)算法

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

首先对语料库中的每一条微博按长度 $k$ 从左至右逐字滑动,得到 ${C_k} = \{ C_k^1,C_k^2, \cdots ,C_k^m\} $ ,即长度为 $k$ 的字符串集合,称为候选频繁 $k$ 项集,使用 ${\rm{TF}}(C_k^i)$ 表示 ${C_k}$ 中的第 $i$ 个字符串在语料库中出现的总次数, ${\rm{SUP}}{\rm{ - }}{\rm{LC}}_k^i$ ${\rm{SUP}}{\rm{ - }}{\rm{RC}}_k^i$ 分别表示 ${C_k}$ 的左支持度和右支持度,得到其定义为

${\rm{SUP}}{\rm{ - }}{\rm{LC}}_k^i = \frac{{{\rm{TF}}(C_{k + 1}^{i - 1})}}{{{\rm{TF}}(C_k^i)}}$ (5)
${\rm{SUP}}{\rm{ - }}{\rm{RC}}_k^i = \frac{{{\rm{TF}}(C_{k + 1}^i)}}{{{\rm{TF}}(C_k^i)}}$ (6)

显然,若 ${\rm{TF}}(C_k^i) = u$ ,则 $0 < {\rm{TF}}(C_{k + 1}^{i - 1})$ ${\rm{TF}}(C_{k + 1}^i) \leqslant u$ 恒成立,因此, ${\rm{SUP}}{\rm{ - }}{\rm{LC}}_k^i$ ${\rm{SUP}}{\rm{ - }}{\rm{RC}}_k^i$ 的取值区间恒为 $(0,1]$ 。左支持度和右支持度即为判断 $C_k^i$ 能否独立成词的指标,值越接近0, $C_k^i$ 独立成词的能力越强,反之则越弱,因此在给定阈值 $\xi $ 时,可由候选频繁 $k$ 项集 ${C_k}$ 得到长度为 $k$ 的频繁 $k$ 项集 ${L_k} = \left\{ {L_k^1,L_k^2, \cdots ,L_k^n} \right\}$ $L_k^i$ 表示Lk中的第i个字符串,通常情况下, $\;n < m$

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

${\rm{FREC}}{\rm{ - }}{\rm{L}}_{k,t,\neg t}^i = \frac{{{\rm{TF}}(L_{k,t}^i)/{\lambda _t}}}{{({\rm{TF}}(L_{k,\neg t}^i) + 1)/{\lambda _{\neg t}}}}$ (7)

其中, ${\rm{TF}}(L_{k,t}^i)$ ${\rm{TF}}(L_{k,\neg t}^i)$ 分别表示频繁 $k$ 项集中第 $i$ 个字符串在 $t$ 时期和 $\neg t$ 时期出现的总次数,分母中加1是为了避免除数为0, ${\lambda _t}$ ${\lambda _{\neg t}}$ 则表示 $t$ 时期和 $\neg t$ 时期的微博语料总数,由于不同时期微博语料数量可能会出现不均衡的情况,因此除以 $\lambda $ 来将这种不均衡平滑掉, ${\rm{FREC}}{\rm{ - }}{\rm{L}}_{k,t,\neg t}^i$ 的取值区间为 $[0, + \infty )$ 。当 $t$ $t + 1$ 时期, $\neg t$ $t$ 时期时, ${\rm{FREC}}{\rm{ - }}{\rm{L}}_{k,t + 1,t}^i$ 的值越接近1,表示 $L_k^i$ 是常用词的概率越大,越右偏于1,表示 $L_k^i$ 是增长型新词的概率越大,而越接近0,则表示 $L_k^i$ 是衰减型新词的概率越大。在常用词过滤的过程中, $t$ $\neg t$ 通常取两个连续时期,即 $t + 1$ 时期与 $t$ 时期。定义前 $T$ 个时期中 $L_k^i$ 的词频支持度均数为

${\rm{AVG}}{_T}(L_k^i) = \frac{1}{{T - 1}}\sum\limits_{t = 1}^{T - 1} {\rm{FREC}}{\rm{ - }}{\rm{L}}_{k,t + 1,t}^i $ (8)

${\rm{AVG}}{_T}(L_k^i)$ 即为衡量在前 $T$ 个时期中 $L_k^i$ 是否为常用词的指标,因此在给定阈值区间 $[{\xi _1},{\xi _2}]$ 的条件下,则能过滤掉前 $T$ 个时期中长度为 $k$ 的常用词,得到新词集 ${N_k} = \{ N_k^1,N_k^2, \cdots ,N_k^z\} $ ,通常情况下, $z < n$

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

输入:带有时间标记的微博语料,最长字符串长度 $K$ ,阈值 $\xi $ ,总时期数 $T$ ,阈值区间 $[{\xi _1},{\xi _2}]$

(1) For k=2 to K

从左至右逐字滑动,得到候选频繁 $k$ 项集 ${C_k} =$ $\{ C_k^1,C_k^2, \cdots ,C_k^m\}$ ${\rm{TF}}(C_k^i),i = 1,2, \cdots ,m.$

(2) For k=K−1 to 2

IF ${\rm{SUP}}{\rm{ - }}{\rm{LC}}_k^i \leqslant \xi $ and ${\rm{SUP}}{\rm{ - }}{\rm{RC}}_k^i \leqslant \xi $

  keep $ C_k^i$

ELSE:

  delete $ C_k^i$

得到频繁 $k$ 项集: ${L_k} = \{ L_k^1,L_k^2, \cdots ,L_k^n\} ,k = 2,3, \cdots ,$ K−1,即 ${C_k} \to {L_k}.$

(3) For t=1 to T

  For k =2 to K−1

  基于频繁 $k$ 项集 ${L_k}$ ,扫描 $t$ 时期的微博语料,得到 $t$ 时期的频繁 $k$ 项集 ${L_{k,t}}$ ${\rm{TF}}(L_{k,t}^i),i = 1,2, \cdots ,n$ ,记录 $t$ 时期的微博总数 ${\lambda _t}.$

(4) For k=2 to K−1

  For i=1 to n

  IF $ {\rm{AVG}}{_T}(L_k^i) < {\xi _1}$

     $L_k^i$ 为衰减型新词,keep $L_k^i$

  ELSE IF $ {\rm{AVG}}{_T}(L_k^i) > {\xi _2}$

     $L_k^i$ 为增长型新词,keep $L_k^i$

  ELSE:

    delete $ L_k^i$

  得到长度为 $k$ 的新词集 ${N_k} = \{ N_k^1,N_k^2, \cdots , $ $N_k^z\}$ ,即 ${L_k} \to {N_k}.$

输出: $T$ 个时期中的新词集合 $\bigcup\limits_{k = 2}^{K {\rm{ - }} 1} {{N_k}} ,{N_k} =$ $\{ N_k^1,N_k^2, \cdots ,N_k^z\}$

说明:不考虑长度为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算法框架流程图 Figure 2 NWD-Bi-LSTM-XGBoost algorithm framework flow charts

其算法步骤如下:

输入:带有时间标记的微博语料,最长字符串长度 $K$

(1) 使用hashtag提取一级标签集 $Y = \bigcup\limits_{j = 1}^J {{Y_j}} $ 和二级标签集 ${Y_j} = \bigcup\limits_{i = 1}^I {{y_i}} $ ,使用Simhash算法对每个二级标签下的数据样本进行去重操作,构建训练样本集。

(2) 基于全部语料使用NWD算法,得到新词集 $\bigcup\limits_{k = 2}^{K - 1} {{N_k}} ,{N_k} = \{ N_k^1,N_k^2, \cdots ,N_k^z\} $

(3) 加入新词集 $\bigcup\limits_{k = 2}^{K - 1} {{N_k}} $ ,使用pkuseg[21]对所有语料进行分词,并以此结果训练Word-Embedding,得到每个单词的 $f$ 维向量表示 ${({{{x}}_1},{{{x}}_2}, \cdots ,{{{x}}_f})^{\rm{T}}}$

(4) 训练Bi-LSTM,得到一级标签模型: ${\hat Y_{ij}} = {\rm{softmax}}({{W}}[\mathop {{{{A}}_i}}\limits^ \to ,\mathop {{{{A}}_i}}\limits^ \leftarrow ] + {{b}})$ ${\hat Y_{ij}}$ 为第 $i$ 个样本的一级标签预测输出, $\mathop {{{{A}}_i}}\limits^ \to$ $\mathop {{{{A}}_i}}\limits^ \leftarrow$ 分别为第 $i$ 个样本的前向和后向LSTM激活状态向量, ${{W}}$ ${{b}}$ 分别为权重矩阵和偏执项。同时提取 ${{v}}$ 维博文语义特征 $({{{x}}_1},{{{x}}_2}, \cdots ,{{{x}}_v})$

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

${\cal{D}} = \{ ({{{X}}_i},{y_i})|{{{X}}_i} \in {{\mathbb{R}}^m},{y_i} \in {\mathbb{R}},|{\cal{D}}| = n\} $

其中 ${{{X}}_i} = ({{{x}}_{1,i}},{{{x}}_{2,i}}, \cdots ,{{{x}}_{v,i}},{{{x}}_{v + 1,i}}, \cdots ,{{{x}}_{m,i}})$ ,训练XGBoost。

输出:一级标签模型: ${\hat Y_{ij}} = {\rm{softmax}}({{W}}[\mathop {{{{A}}_i}}\limits^ \to ,\mathop {{{{A}}_i}}\limits^ \leftarrow ] + {{b}})$ ;二级标签模型: ${\hat y_i} = \phi ({{{X}}_i}) = \displaystyle\sum\limits_{u = 1}^U {{f_u}} ({{{X}}_i})$ $U$ 为CART树的数量。

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个二级兴趣标签。

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

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

3.2 超参数与机器配置

在实验中,NWD算法采用Map/Reduce分布式集群处理技术进行实现,考虑到新词的生命周期大都超过1个月,同时新词字符串长度一般小于6,因此在实验中 $T$ 恒定为5, $K$ 恒定为7。而 $\xi $ $[{\xi _1},{\xi _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。

本文运行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值定义为

${\rm{mF}}1 = \frac{1}{k}\sum\limits_{c = 1}^k {\rm{F}} 1(c)$ (9)

其中, $k$ 表示兴趣类别总数, $c$ 表示某一兴趣类别, ${\rm{F}}1(c) = \displaystyle\frac{{2{P_c}{R_c}}}{{{P_c} + {R_c}}}$ ${P_c}$ ${R_c}$ 分别表示类别 $c$ 的查准率和查全率。AUC值则是以真正类率(True Positive Rate, TPR)为纵轴,假正类率(False Positive Rate, FPR)为横轴而得到的受试者工作特征曲线下面积,其中 ${\rm{TPR}} = \displaystyle\frac{{{\rm{TP}}}}{{{\rm{TP}} + {\rm{FN}}}}$ ${\rm{FPR}} = \displaystyle\frac{{{\rm{FP}}}}{{{\rm{TN}} + {\rm{FP}}}}$ ,TP表示将正类预测为正类的数量,FN表示将正类预测为负类的数量,FP表示将负类预测为正类的数量,TN表示将负类预测为负类的数量。mF1值和AUC值越大,说明模型的画像效果越好。

3.4 实验结果与分析 3.4.1 NWD算法结果与分析

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

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

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

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

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

为了进一步验证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-LSTM)和二级标签模型(NWD-Bi-LSTM-XGBoost)的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值在测试集中的变化趋势(一级标签模型) Figure 4 The trend of mF1 value and AUC value for different models in the test set(the primary tag model)
图 5 不同模型的mF1值和AUC值在测试集中的变化趋势(二级标签模型) Figure 5 The trend of mF1 value and AUC value of different models in the test set(the secondary tag model)

为了更加直观和定量地反映NWD-Bi-LSTM-XGBoost算法在多粒度微博用户兴趣画像构建上的效果,一级标签模型、二级标签模型及相关基准模型在测试集中的最终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,NWD-Bi-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-LSTM-XGBoost这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 样例可视化展示 Figure 6 Visualization of a sample
4 结语

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

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

参考文献
[1]
新浪数据中心. 2018新浪媒体白皮书[EB/OL]. (2018-12-03)[2019-10-03]. http://data.weibo.com/report/reportDetail?id=423.
[2]
QUINTANA R M, HALEY S R, LEVICK A, et al. The persona party: using personas to design for learning at scale[C]// The 2017 CHI Conference Extended Abstracts. Denver, Colorado: ACM Press, 2017: 933-941.
[3]
林穗, 郑志豪. 基于关联规则的客户行为建模与商品推荐研究[J]. 广东工业大学学报, 2018, 35(3): 90-94.
LIN S, ZHENG Z H. A research of a recommender system based on customer behavior modeling by mining association rules[J]. Journal of Guangdong University of Technology, 2018, 35(3): 90-94. DOI: 10.12052/gdutxb.180015.
[4]
雷一鸣, 刘勇, 霍华. 面向网络语言基于微博语料的新词发现方法[J]. 计算机工程与设计, 2017, 38(3): 789-794.
LEI Y M, LIU Y, HUO H. New word discovery based on microblog corpus for network language[J]. Computer Engineering and Design, 2017, 38(3): 789-794.
[5]
刘伟童, 刘培玉, 刘文锋, 等. 基于互信息和邻接熵的新词发现算法[J]. 计算机应用研究, 2019, 36(5): 1-7.
LIU W T, LIU P Y, LIU W F, et al. New word discovery algorithm based on mutual information and branch entropy[J]. Application Research of Computers, 2019, 36(5): 1-7.
[6]
LI W, GUO K, SHI Y, et al. DWWP: domain-specific new words detection and word propagation system for sentiment analysis in the tourism domain[J]. Knowledge-Based Systems, 2018, 146(18): 203-214.
[7]
秦永彬, 孙玉洁, 魏笑. 基于文本聚类与兴趣衰减的微博用户兴趣挖掘方法[J]. 计算机应用研究, 2019, 36(5): 28-35.
QIN Y B, SUN Y J, WEI X. Microblog user interest mining based on text clustering and interest decay[J]. Application Research of Computers, 2019, 36(5): 28-35.
[8]
林燕霞, 谢湘生. 基于社会认同理论的微博群体用户画像[J]. 情报理论与实践, 2018, 41(3): 142-148.
LIN Y X, XIE X S. User portrait of diversified groups in micro-blog based on social identity theory[J]. Information Studies: Theory & Application, 2018, 41(3): 142-148.
[9]
KUZMA M, GABRIELA A. Predicting user’s preferences using neural networks and psychology models[J]. Applied Intelligence, 2016, 44(3): 526-538. DOI: 10.1007/s10489-015-0717-3.
[10]
DI NG, L H, SUN B, S HI, P. Chinese microblog topic detection through POS-based semantic expansion[J]. Information, 2018, 9(8): 2078-2489.
[11]
蒋盛益, 王连喜. 聚类分析研究的挑战性问题[J]. 广东工业大学学报, 2014, 31(3): 32-38.
JANG S Y, WANG L X. Some challenges in clustering analysis[J]. Journal of Guangdong University of Technology, 2014, 31(3): 32-38. DOI: 10.3969/j.issn.1007-7162.2014.03.006.
[12]
T U, HUANG. Mining microblog user interests based on TextRank with TF-IDF factor[J]. The Journal of China Universities of Posts and Telecommunications, 2016, 23(5): 40-46. DOI: 10.1016/S1005-8885(16)60056-0.
[13]
熊才伟, 曹亚男. 基于发文内容的微博用户兴趣挖掘方法研究[J]. 计算机应用研究, 2018, 35(6): 1619-1623.
XIONG C W, CAO Y N. Research of microblog user interest mining based on microblog posts[J]. Application Research of Computers, 2018, 35(6): 1619-1623. DOI: 10.3969/j.issn.1001-3695.2018.06.004.
[14]
MIKE S, KUIDIP K P. Bidirectional recurrent neural networks[J]. IEEE Transactions on Signal Processing, 1997, 45(11): 2673-2681. DOI: 10.1109/78.650093.
[15]
CHEN T Q, GUESTRIN C. XGBoost: a scalable tree boosting system[C]// Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. New York: ACM Press, 2016: 785-794.
[16]
MANKUS, JAIN A, SARMA D, et al. Detecting near-duplicates for web crawling[C]// Proceedings of the 16th internationalconference on world wide web. Canada: ACM Press, 2007: 141-150.
[17]
赵勤鲁, 蔡晓东, 李波, 等. 基于LSTM-Attention神经网络的文本特征提取方法[J]. 现代电子技术, 2018, 41(8): 167-170.
ZHAO Q L, CAI X D, LI B, et al. Text feature extraction method based on LSTM-Attention neural network[J]. Modern Electronics Technique, 2018, 41(8): 167-170.
[18]
HOCHREITER S, SCHMIDHUBER J. Long short-term memory[J]. Neural Computation, 1997, 9(8): 1735-1780. DOI: 10.1162/neco.1997.9.8.1735.
[19]
FRIEDMAN J H. Greedy function approximation: a gradient boosting machine[J]. The Annals of Statistics, 2001, 29(5): 1189-1232.
[20]
AGRAWAL R, SRIKANT R. Fast algorithms for mining association rules[M]. Readings in database systems (3rd ed). San Francisco: Morgan Kaufmann Publishers Inc, 1996: 580-592.
[21]
SUN X, WANG H F, LI W J. Fast online training with frequency-adaptive learning rates for chinese word segmentation and new word detection[C]// Annual Meeting of the Association for Computational Linguistics. Jeju Island, Korea: ACL, 2012: 253-262.
[22]
付鹏, 林政, 袁凤程, 等. 基于卷积神经网络和用户信息的微博话题追踪模型[J]. 模式识别与人工智能, 2017, 30(1): 73-80.
FU P, LIN Z, YUAN F C. Convolutional neural network and user information based model for microblog topic tracking[J]. Pattern Recognition and Artificial Intelligence, 2017, 30(1): 73-80.
[23]
JAMES B, YOSHUA B. Random search for hyper-parameter optimization[J]. Journal of Machine Learning Research, 2012, 13(1): 281-305.
[24]
孙立远, 周亚东, 管晓宏. 利用信息传播特性的中文网络新词发现方法[J]. 西安交通大学学报, 2015, 49(12): 59-64.
SUN L Y, ZHOU Y D, GUAN X H. A method of discovering new Chinese words from internet based on information propagation[J]. Journal of XI’AN Jiaotong University, 2015, 49(12): 59-64.
[25]
DZIKOVSKA M, NIELSEN D, LEACORK C. The joint student response analysis and recognizing textual entailment challenge: making sense of student responses in educational applications[J]. Language Resources and Evaluation, 2016, 50(1): 67-93. DOI: 10.1007/s10579-015-9313-8.