[0072] 下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
[0073] 如图1所示,基于情感倾向分析的社交用户生成方法,以微博文本为基础,采用聚类算法生成语料库,构建语义本体,将微博推文情感分析,添加情感标志位,利用分词工具建立微博内容的词袋模型,定位词语在语义本体的类别,对词进行消歧处理得到标签,利用图搜索算法生成用户。具体步骤是:
[0074] 步骤(1).以微博内容为基础,采用聚类算法构建语义本体;
[0075] 步骤(2).获取用户的微博内容并进行预处理,进行情感分类,得到带有情感倾向标记的微博信息;
[0076] 步骤(3).将微博信息进一步处理,得到词袋模型;
[0077] 步骤(4).提取词袋模型的词,利用语义本体获取类别信息;
[0078] 步骤(5).采用投票策略统计带有情感标记的类别信息,添加二级标签,得到最终标签;
[0079] 步骤(6).将人口统计信息映射到相应的标签中,构造网络图;
[0080] 步骤(7).根据网络图节点间的边权值大小半监督地生成用户。
[0081] 如图2所示,步骤(1)具体是:
[0082] (1.1).爬取用户微博T、用户关系R和用户信息U到数据库中;
[0083] (1.2).对用户微博T使用正则表达式过滤特殊字符和字段,以及活跃度低的用户,将英文统一为小写;
[0084] 特殊的字符和字段,包括:“@XXX”、“[表情符号]”、超链接;其中“@XXX”表示微博正文或评论中提到某一用户或对用户说的话,以引起该用户注意;“[表情符号]”是指微博中特有的表情,代表发帖人内心的想法,可以是开心,难受,惊恐等;超链接一般指http和https协议下的链接,通过点击链接可以转到第三方页面,如:https://weibo.com/;
[0085] 一些用户注册后很少使用微博,这些数据不具有代表性,不便于分析,将其剔除,这里使用活跃度指标来判断用户数据有效性。活跃度 NT表示用户最近一年内发布、转发和评论微博总数,NMonth表示一年中活跃的月份数,指用户在一年中最早、最晚发布、转发和评论微博的时间间隔;如活跃度Active小于等于设定的阈值σActive,则为活跃度低的用户,根据需要设定σActive=5~50;
[0086] (1.3).使用Word2Vec向量化微博T内容,得到以键值对形式表示的语料库文件;语料库文件中每一个词对应一个向量W=[w1,w2,...,wJ];其中,J是词向量的维数,wj表示第j维分量,j=1,2,...,J;
[0087] (1.4).遍历并提取语料库中的向量,得到I×J的关键词矩阵M,I表示关键词个数;
[0088] (1.5).利用K‑means聚类关键词矩阵M,分类数量按照微博的热门分类初步划定类中心个数列表,得到簇中心和类成员,类成员代表领域内的关键词;
[0089] (1.6).采用方差分析判断类中心之间差异显著性,差异较大的类中心个数为最佳,在此基础上分析各类成员的分布数量,分布均匀的类中心个数为最佳,从两方面确定类中心个数,用于构建语义本体;
[0090] (1.7).定义语义本体的存储结构,包括两层:第一层类别存储对应本体名称和语义本体列表,其中本体列表存储子类本体名称和对应的子类本体列表;第二层本体存储对应本体列表中存储自身的描述,采用关键词方式表示;
[0091] (1.8).筛选语义本体的子类中不符合或模糊界限的关键词,精炼语义本体。
[0092] 如图3所示,步骤(2)具体是:
[0093] (2.1).获取用户微博和关系数据,使用正则化匹配去除标点符号;
[0094] (2.2).构建N×P的用户数据矩阵DM,N为用户的数量,P为用户的属性个数,数据矩阵DM的行向量是un=(unb1,unb2,...,unbP),数据矩阵DM的列向量是bp=(u1bp,u2bp,...,unbP),unbp表示第n行第p个微博推文属性,n=1,2,...,N,p=1,2,...,P;
[0095] (2.3).将微博推文属性unbp利用情感分析工具进行情感分析,得到情感分数δ;
[0096] (2.4).在每条微博后加上情感标志位E,E=‑1,0,1,分别表示消极、无感和积极;δ<δ1时E=‑1,δ1≤δ<δ2时E=0,δ≥δ2时E=1;δ1和δ2为两个划分点,δ2>δ1。
[0097] 如图4所示,步骤(3)具体是:
[0098] (3.1).获取用户数据矩阵DM,包括具有情感标志位的推文属性;
[0099] (3.2).在(2.1)的基础上过滤掉特殊字符,对文本进行统一化大小写处理;
[0100] (3.3).使用中文文本分词工具对微博推文进行分词,得到词袋,词袋内包含若干关键词标注词性,标注词性;
[0101] (3.4).依照中英文停用词表过滤词袋中的停用词;
[0102] (3.5).按照词性过滤非动词和非名词,得到词袋模型BM(T)=[bm1,bm2,...,bmK];其中,K为词袋模型中词的个数,bmk表示词袋模型中第k个词,k=1,2,...,K。
[0103] 如图5所示,步骤(4)具体是:
[0104] (4.1).在语义本体中查找与bm等价的语义本体bo,bm∈BM(T);若查找到,则词bm即为词bo;
[0105] (4.2).如果在语义本体bo的语义本体描述中存在词bm,则将词bm替换为语义本体bo的名称;
[0106] (4.3).如果词bm多次出现,说明该词在不同语境下有不同含义,需要结合关键词矩阵M和上下文语境消除歧义性;word2vec工具生成的词向量与上下文相关,判断歧义性的1 2
标准利用向量空间的余弦相似度: ε表示目标词w和w的上下词
利用关键词矩阵M得到向量大小,最终求得的误差值,如果误差较小说明含义类似,否则替换为相应词bo;
[0107] 则是多义词,结合关键词矩阵M和上下文语境消除歧义性;
[0108] (4.4).将消歧后的词bm按照(4.2)进行替换;
[0109] (4.5).如果没有在语义本体bo中找到词bm,说明语义不明显,不能明确代表兴趣,需在词袋中删除;
[0110] (4.6).重复执行(4.1)~(4.5),遍历词袋模型,得到子类别集合O(T)=[bo1,bo2,...,boL],其中L是微博中语义本体bo的名称个数,bol表示第l个语义本体,l=1,2,...,L;
[0111] (4.7).将用户数据矩阵DM的微博推文属性unbp替换为子类别集合O(T)和情感标志位E,表示如下:unbp=[O1(T)E1,O2(T)E2,...,OR(T)ER],R为微博个数。
[0112] 如图6所示,步骤(5)具体是:
[0113] (5.1).对于语义本体bol,如果存在于其父类的语义列表中,将其父类语义名称以键的形式存入标签字典,初始化值为1;如果键已存在,值自增1;
[0114] (5.2).重复执行(5.1),遍历第r个微博子类别集合Or(T),r=1,2,...,R,得到微博标签字典Dictr[Tag];
[0115] (5.3).将微博标签字典的值排序,取排名靠前的标签集合sortTag={Tag1,Tag2,...,TagS};S为自定义标签个数,Tags表示第s个标签本体,s=1,2,...,S;
[0116] (5.4).将sortTag在微博标签字典Dictr[Tag]中的值与对应的情感标志位E相乘,与属于 相同 语义本 体的 值相 加,得 到某一 领域最 终的 情感倾 向权 值[0117] (5.5).将情感倾向权值作为二级标签,与sortTag结合得到用户的标签集合H(h1,h2,...,hS);其中,hs=TagsWeights,s=1,2,...,S;
[0118] (5.6).将数据矩阵DM的属性unbp替换为集合H。
[0119] 如图7所示,步骤(6)具体是:
[0120] (6.1).根据用户数据矩阵DM的行向量un,将用户的基本资料映射到标签信息上;
[0121] (6.2).对于每一个省、市和地区,构建情感网络图和标签网络图,以不同性别下年龄段和类别为情感网络图和标签网络图的图节点,图节点间的边代表该年龄段和性别属于该类别;年龄段根据先验知识可以分为八组青少儿,少年,青少年,青年,中青年,中年,中老年和老年;
[0122] (6.3).将该省、市和地区对应的人口统计信息映射到微博属性unbp的集合H中;
[0123] 如果情感网络图中对应的图节点间未有边相连,把该用户的标签情感权值Weightem作为边的权值,否则将权值Weightem与边的权值相加,更新为新的权值;
[0124] 如果标签网络图中对应的图节点间未有边相连,把图节点连接,初始化边的权值Weighttag=1,否则边的权值自增1,更新为新的权值;
[0125] (6.4).遍历用户数据矩阵DM,得到最终的基于城市的情感网络图 和标签网络图
[0126] 如图8所示,步骤(7)具体是:
[0127] (7.1).将标签网络图 利用深度优先遍历(DFS),找到权值最大的边以及相应的顶点对Node(node1,node2);
[0128] (7.2).在情感网络图 利用深度优先遍历(DFS)搜寻连结Node(node1,node2)的边权值,记为Emotion;
[0129] (7.3).将Node中的信息映射到姓名、性别和年龄字典,得到对应的姓名,当作用户名UName;
[0130] (7.4).将顶点对中的信息和用户名结合,顶点对的权值作为情感标志位,生成以地区为标准的虚拟用户:U(UName,Age,Area,Gender,Tag,Emotion);其中,Age表示年龄,Area表示地区,Gender表示性别,Tag表示标签,Emotion表示情感标志位。
[0131] 至此,得到带有情感标志位的用户,完成整个系统的用户生成。
[0132] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。