一种结合评论关系网络图的微博垃圾评论识别方法与流程

文档序号:11216406阅读:1172来源:国知局
一种结合评论关系网络图的微博垃圾评论识别方法与流程
本发明属于知识发现与数据挖掘领域,更具体地,涉及一种结合评论关系网络图的微博垃圾评论识别方法和系统。
背景技术
:伴随着微博平台影响力的不断扩大,微博平台上出现了大量带有广告营销性质、恶意攻击言语的垃圾评论信息。这些垃圾评论信息在没有其他监管措施的情况下,会不断的充斥在正常用户发表的正常信息当中,对平台中正常用户的用户体验产生很不好的影响,甚至会威胁到微博网络平台发展的稳定与和谐。目前国内外针对微博垃圾评论识别的方法主要有两类:基于评论内容的垃圾评论识别和基于垃圾用户的垃圾评论识别。基于评论内容的垃圾评论识别主要是从评论本身的文本特征出发,挖掘其中潜在的垃圾评论特征,其中有从评论文本与原博文的文本相似角度判断,也有单纯的从评论文本本身包含的垃圾信息特征出发进行挖掘。该方法的不足为:在只有几个字符的短评论文本中文本特征相当不明显,并且从评论与对应博文的文本相似角度出发对于垃圾评论的判定会存在比较大的误差,因此垃圾识别准确度低。基于垃圾用户的垃圾评论识别主要是利用垃圾用户发表垃圾评论概率更大的性质对平台中的垃圾用户先进行识别,常用的社交蜜罐技术可以主动引导垃圾用户靠近,用户行为分析技术包括用户url使用率、非空转发比等。该方法的不足为:由于该方法并没有对评论本身做一定的分析,而是直接基于垃圾用户一定会发表垃圾评论这样的判定来进行识别,导致垃圾识别准确率低。技术实现要素:针对现有技术的以上缺陷或改进需求,本发明提供了一种结合评论关系网络图的微博垃圾评论识别方法和系统,其目的在于,解决现有微博平台垃圾评论识别方法中存在的垃圾评论整体识别率低、正常/垃圾评论误判率高的问题。为实现上述目的,按照本发明的一个方面,提供了一种结合评论关系网络图的微博垃圾评论识别方法,包括如下步骤:(1)从微博平台爬取训练集、测试集、以及博文语料库,根据与微博平台中的微博评论相关的主体以及主体之间的关系构建评论关系网络图模型,并根据爬取的训练集和测试集对构建的评论关系网络图进行处理,以生成基于neo4j开源软件的评论关系网络图;(2)使用开源的全文搜索引擎为爬取的博文语料集建立索引,使用建立的索引执行博文语料集的搜索,并根据搜索返回的结果计算文本词之间的相关度值;(3)对评论关系网络图中的评论文本节点与博文文本节点进行基于结构信息的数据预处理操作,提取数据预处理操作结果中评论文本节点的基本元数据,并使用该基本元数据为相应节点设置节点属性值;(4)针对评论关系网络图中的每个评论文本节点,计算其评论文本与对应博文之间的文本相关度,并根据该文本相关度值在评论关系网络图中为该评论文本节点的相关度属性设置对应的相关度属性值;(5)根据步骤(1)中爬取的训练集和步骤(4)得到的相关度属性值构建初始评论文本分类器;(6)根据步骤(5)构建的初始评论文本分类器对每个测试集中的评论文本进行类别判定,并将最终的判定结果增量反馈至初始评论文本分类器中继续学习。优选地,评论关系网络图中的节点包括用户节点、博文文本节点、评论文本节点、以及文本词节点;评论关系网络图中的节点关系包括关注关系、交互关系、发表关系、拥有关系以及相关关系。优选地,步骤(2)具体为,首先从微博平台收集博文语料集,然后为语料集中的每条博文文本创建一个独立的文件,并使用lucence全文搜索引擎为这些文件创建索引并提供全文搜索功能,以利用搜索返回的文件数目来计算文本词之间的相关度。优选地,计算文本词之间的相关度具体是采用以下公式:其中u和v均表示文本词,textnum(u,v)表示同时包含文本词u和v的博文数目,textnum(u)表示包含文本词u的博文数目,textnum(v)表示包含文本词v的博文数目。优选地,结构信息包括已经结构化的表情符号,评论文本节点的基本元数据包括评论文本的字重复率、url链接、特殊字符数目以及连续数字等。优选地,步骤(4)包括如下子步骤:(4.1)对评论关系网路图中的所有评论文本和博文文本进行中文分词,对中文分词得到的词集列表进行实词提取,并在评论关系网络图中对实词提取的结果进行文本词节点创建操作,以得到评论词集列表和博文词集列表;(4.2)根据评论词集列表和博文词集列表构建评论文本与对应博文之间的文本相关度矩阵mrv:该矩阵中任意一个元素ρij表示评论词集列表中第i个文本词与博文词集列表中第j个文本词之间的相关度,a表示评论词集列表的长度,b表示博文词集列表的长度,i为1到a之间的任意整数,j为1到b之间的任意整数;(4.3)从步骤(4.2)得到的文本相关度矩阵中的每个行向量(ρi1,ρi2,…,ρij,...,ρib)中选择最大值组成最大值集合(ρ1max,ρ2max,...,ρamax),并根据该最大值集合得到评论文本节点的相关度属性所对应的属性值rv(x,y)为:其中x表示评论词集列表,y表示博文词集列表,f表示文本词在文本中的词频。优选地,步骤(5)包括如下子步骤:(5.1)对训练集进行初始朴素贝叶斯的训练,以得到各个类别c的先验概率p(c)、以及特征词x在各个类别下的条件概率p(x∣c);(5.2)将训练集中正常训练集中评论文本节点的相关度属性所对应的属性值全部取出组成正常评论中心向量hamcentalvector,并将将训练集中垃圾训练集中评论文本节点的相关度属性所对应的属性值全部取出组成垃圾评论中心向量spamcentalvector;(5.3)根据训练集中的正常评论和垃圾评论,训练得到布尔向量因子包括评论文本字重复率的阙值δ、评论文本特殊字符数目的阙值ε,垃圾连续数字集spamserialset以及垃圾url集spamurlset。优选地,对训练集进行初始朴素贝叶斯的训练具体为:首先初始化阙值δ、ε为0,spamserialset集和spamurlset集为空,然后针对训练集中的每个评论文本,判断其是正常评论文本还是垃圾评论文本,如果是垃圾评论文本,则判断该垃圾评论文本中是否包含url链接和连续数字,若包含则向相应的spamurlset垃圾url集或spamserialset垃圾连续数字集添加新的url链接或连续数字,之后再提取该垃圾评论文本的基本元数据包括文本字重复率和特殊字符数目并分别置于临时集合中;如果是正常评论文本,则判断该评论文本的字重复率是否大于阙值δ,若大于则更新δ,并判断该评论文本的特殊字符数目是否大于阙值ε,若大于则更新ε;当训练集中的评论文本全部处理完毕,再将得到的字重复率和特殊字符数目两个临时集合中分别大于阙值δ、ε的数值集合抽取出来并分别取平均值,最后用这两个平均值分别重置δ、ε,得到最终的字重复率阙值δ以及特殊字符数目阙值ε。优选地,步骤(6)包括如下子步骤:(6.1)根据步骤(5.1)得到的各个类别的先验概率以及每个特征词在各个类别下的条件概率,使用以下公式对测试集中的评论文本经过步骤(3)的数据预处理及步骤(5)的初始朴素贝叶斯训练之后得到的特征词集列表xcomment={x1,x2,……,xa}进行处理,以得到评论文本分别为正常评论的概率和垃圾评论的概率;(6.2)获取测试集中每个评论文本由步骤(4.3)得到的文本相关度值rv,并计算该文本相关度值rv与由步骤(5.2)得到的正常/垃圾评论中心向量的平均欧式距离distanceham和distancespam,就是相关度值rv与向量中每个元素的欧式距离组成的列向量平均值;(6.3)构建测试评论文本布尔向量boolvectortest=(l,m,n,o,p,q),其中l表示评论文本是否被回复、m表示评论文本是否被点赞、n表示评论文本是否字重复率高于某一阙值δ、o表示评论文本中的特殊字符数目是否高于某一阙值ε、p表示评论文本中是否包含垃圾url、q表示评论文本中是否包含垃圾连续数字,l、m、n、o、p、q的取值为1或者0。(6.4)综合步骤(6.1)、(6.2)和(6.3)的结果判断测试集中的评论文本是否为垃圾评论,具体是采用以下公式计算得到结果值commclass,若该值大于0,则表示评论文本是垃圾评论文本,反之,则为正常评论文本:(6.5)将步骤(6.4)的判断结果增量反馈至初始评论文本分类器中继续学习,不断更新朴素贝叶斯训练阶段的先验概率和条件概率,以及垃圾连续数字集spamserialset和垃圾url集spamurlset,并不断修正布尔因子δ和ε。按照本发明的另一方面,提供了一种结合评论关系网络图的微博垃圾评论识别系统,包括:第一模块,用于从微博平台爬取训练集、测试集、以及博文语料库,根据与微博平台中的微博评论相关的主体以及主体之间的关系构建评论关系网络图模型,并根据爬取的训练集和测试集对构建的评论关系网络图进行处理,以生成基于neo4j开源软件的评论关系网络图;第二模块,用于使用开源的全文搜索引擎为爬取的博文语料集建立索引,使用建立的索引执行博文语料集的搜索,并根据搜索返回的结果计算文本词之间的相关度值;第三模块,用于对评论关系网络图中的评论文本节点与博文文本节点进行基于结构信息的数据预处理操作,提取数据预处理操作结果中评论文本节点的基本元数据,并使用该基本元数据为相应节点设置节点属性值;第四模块,用于针对评论关系网络图中的每个评论文本节点,计算其评论文本与对应博文之间的文本相关度,并根据该文本相关度值在评论关系网络图中为该评论文本节点的相关度属性设置对应的相关度属性值;第五模块,用于根据第一模块中爬取的训练集和第四模块得到的相关度属性值构建初始评论文本分类器;第六模块,用于根据第五模块构建的初始评论文本分类器对每个测试集中的评论文本进行类别判定,并将最终的判定结果增量反馈至初始评论文本分类器中继续学习。总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:(1)本发明由于采用了步骤(4)、步骤(5)和步骤(6),能够在传统朴素贝叶斯的基础上不仅从评论文本与原博文相关角度,对单纯基于文本概率统计模型的垃圾评论识别方法进行改进优化,同时引进了由垃圾评论特征包括是否包含垃圾连续数字、是否字重复率高于一定阙值等构成的评论布尔向量,因此综合性的提高了垃圾评论整体的识别率。(2)本发明中采用文本相关度计算模型代替传统严苛的文本相似度计算模型得到评论文本与原博文文本的文本相关度,能够有效降低正常相关评论的误判率。(3)本发明选择基于模型的图数据库neo4j来存储和管理评论关系网络图,能够提升垃圾评论识别算法的性能。(4)本发明每次测试集的识别结果还会增量反馈至评论文本分类器中继续学习,这样的增量学习机制进一步提高了垃圾评论整体的识别率并降低了误判率。附图说明图1是本发明结合评论关系网络图的微博垃圾评论识别方法的流程图。图2是本发明构建的评论关系网络图的示意图。图3是本发明评论文本布尔向量因子确定方法的流程图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。本发明的基本思路如下,首先将与评论相关的主体以及主体之间的关系抽取出来,建立评论关系网络图模型;其次使用lucence全文搜索引擎为爬取到的博文语料库集创建索引并提供全文搜索功能;然后采用文本相关度模型代替传统的文本相似度计算模型得到评论与原博文的相关度,能够在传统朴素贝叶斯的基础上不仅从评论文本与原博文相关角度,对单纯基于文本概率统计模型的垃圾评论识别方法进行改进优化,同时引进了由垃圾评论特征包括是否包含垃圾连续数字、是否字重复率高于一定阙值等构成的评论布尔向量,因此综合性地提高了垃圾评论整体的识别率;最后根据训练集进行评论文本分类器的构建,并对测试集中的测试评论进行识别,识别后的结果会反馈到分类器中继续学习。如图1所示,本发明结合评论关系网络图的微博垃圾评论识别方法包括如下步骤:(1)从微博平台爬取训练集、测试集、以及博文语料库,根据与微博平台中的微博评论相关的主体以及主体之间的关系构建评论关系网络图模型,并根据爬取的训练集和测试集对构建的评论关系网络图进行处理,以生成基于neo4j开源软件的评论关系网络图,其中该评论关系网络图中的其中一些节点或节点关系具有对应的属性。评论关系网络图中的节点包括用户(user)节点、博文文本(microblog)节点、评论文本(comment)节点、以及文本词(word)节点。评论关系网络图中节点关系主要包括关注关系、交互关系、发表关系、拥有关系以及相关关系,其中,交互关系和相关关系是重要的、存在关系属性的节点关系,本发明中将用户之间的各种交互行为包括评论、转发、@、点赞、删除等汇总为一个交互关系,以键值对(key-value)的形式作为属性存放在用户之间的交互关系中。具体而言,如图2所示,生成的评论关系网络图中每种类型的节点及其节点属性的对应关系如下表1所示:表1评论关系网络图中的节点关系主要包括关注关系、交互关系、发表关系、拥有关系以及相关关系,其中,交互关系是一个重要的存在关系属性的节点关系,本发明中将用户之间的各种交互行为包括评论、转发、@、点赞、删除等汇总会一个交互关系,以key-value的形式作为属性存放在用户之间的交互关系中。(2)使用开源的全文搜索引擎为爬取的博文语料集建立索引,使用建立的索引执行博文语料集的搜索,并根据搜索返回的结果计算文本词之间的相关度值;在本实施方式中,使用的开源的全文搜索引擎是lucence全文搜索引擎,目的在于提供基于博文语料库的全文搜索功能。举例而言,本步骤首先会从新浪微博平台收集博文语料集,主要抓取了包含娱乐、社会、经济、it互联网等热门类目下的百万条博文内容作为本发明的语料集。接着会为语料集中的每条博文文本创建一个独立的文件,并使用lucence全文搜索引擎为这些文件创建索引并提供全文搜索功能,这样就可以利用搜索返回的文件数目来计算文本词之间的相关度。计算文本词之间的相关度具体是采用以下公式:其中u和v均表示文本词,textnum(u,v)表示同时包含文本词u和v的博文数目,textnum(u)表示包含文本词u的博文数目,textnum(v)表示包含文本词v的博文数目。在全文搜索库的基础之上,搜索返回仅包含文本词u的博文数据textnum(u),仅包含文本词v的博文数据textnum(v)以及同时包含文本词u、文本词v的博文数目textnum(u,v),那么文本词u和文本词v之间基于微博语料全文搜索库的词语相关度计算如上公式所示。(3)对评论关系网络图中的评论文本节点与博文文本节点进行基于结构信息(参见下表2所示)的数据预处理操作,提取数据预处理操作结果中评论文本节点的基本元数据,并使用该基本元数据为相应节点设置节点属性值;表2结构信息操作正则表达式“[]”表情符号过滤[[\u4e00-\u9fa5_a-za-z0-9]+]“//@”转发保留//@[^@|^//@|^#|.]+“@”其他用户过滤@[\u4e00-\u9fa5a-za-z0-9_-]{2,30}“#”话题保留#[^#]+#具体而言,结构信息主要包括已经结构化的表情符号,如“[微笑]”、“[爱心]”、两个“#”字符之间的话题、以及“//@”转发标记等,本发明中采用正则表达式对这些结构信息采取过滤或保留操作,评论文本节点的基本元数据主要包括评论文本的字重复率、url链接、特殊字符数目以及连续数字。(4)针对评论关系网络图中的每个评论文本节点,计算其评论文本与对应博文之间的文本相关度,并根据该文本相关度值在评论关系网络图中为该评论文本节点的相关度属性设置对应的相关度属性值;具体而言,本步骤包括如下子步骤:(4.1)对评论关系网路图中的所有评论文本和博文文本进行中文分词,对中文分词得到的词集列表进行实词提取,并在评论关系网络图中对实词提取的结果进行文本词节点创建操作,以得到评论词集列表和博文词集列表;鉴于步骤(3)中博文文本和评论文本一般都是短文本的特性,因此需要将转发文本和话题文本等相关内容保留,在文本分词前需要作一定的文本合并操作,然后在经中文分词后得到的词集列表中进行实词提取、以及评论关系网络图中的文本词节点创建操作。(4.2)根据评论词集列表和博文词集列表构建评论文本与对应博文之间的文本相关度矩阵mrv:该矩阵中任意一个元素ρij表示评论词集列表中第i个文本词与博文词集列表中第j个文本词之间的相关度,a表示评论词集列表的长度,b表示博文词集列表的长度,i为1到a之间的任意整数,j为1到b之间的任意整数;本步骤中计算文本词之间相关度的方法和上述步骤(2)完全相同,在此不再赘述。(4.3)从步骤(4.2)得到的文本相关度矩阵中的每个行向量(ρi1,ρi2,…,ρij,...,ρib)中选择最大值组成最大值集合(ρ1max,ρ2max,...,ρamax),并根据该最大值集合得到评论文本节点的相关度属性所对应的属性值rv(x,y)为:其中x表示评论词集列表,y表示博文词集列表,f表示文本词在文本中的词频。(5)根据步骤(1)中爬取的训练集和步骤(4)得到的相关度属性值构建初始评论文本分类器;本步骤中的构建过程主要包括初始朴素贝叶斯的训练、正常/垃圾评论中心向量的构建以及布尔向量因子的确定,其中正常/垃圾评论中心向量由步骤(4)得到的评论文本与对应博文文本之间的文本相关度值rv组成。具体的,本步骤包括如下子步骤:(5.1)对训练集进行初始朴素贝叶斯的训练,以得到各个类别(其包括正常评论类和垃圾评论类两种)c的先验概率p(c)、以及特征词x在各个类别下的条件概率p(x∣c);(5.2)将训练集中正常训练集中评论文本节点的相关度属性所对应的属性值全部取出组成正常评论中心向量hamcentalvector,并将将训练集中垃圾训练集中评论文本节点的相关度属性所对应的属性值全部取出组成垃圾评论中心向量spamcentalvector;(5.3)根据训练集中的正常评论和垃圾评论,训练得到布尔向量因子包括评论文本字重复率的阙值δ、评论文本特殊字符数目的阙值ε,垃圾连续数字集spamserialset以及垃圾url集spamurlset。具体的训练流程如图3所示,首先初始化阙值δ、ε为0,spamserialset集和spamurlset集为空,然后针对训练集中的每个评论文本,判断其是正常评论文本还是垃圾评论文本。如果是垃圾评论文本,那么需要判断该垃圾评论文本中是否包含url链接和连续数字,若包含则向相应的spamurlset垃圾url集或spamserialset垃圾连续数字集添加新的url链接或连续数字,之后再提取该垃圾评论文本的基本元数据包括文本字重复率和特殊字符数目并分别置于临时集合中。如果是正常评论文本,判断该评论文本的字重复率是否大于阙值δ,若大于则更新δ,并判断该评论文本的特殊字符数目是否大于阙值ε,若大于则更新ε。当训练集中的评论文本全部处理完毕,再将得到的字重复率和特殊字符数目两个临时集合中分别大于阙值δ、ε的数值集合抽取出来并分别取平均值,最后用这两个平均值分别重置δ、ε,得到最终的字重复率阙值δ以及特殊字符数目阙值ε。(6)根据步骤(5)构建的初始评论文本分类器对每个测试集中的评论文本进行类别判定,并将最终的判定结果增量反馈至初始评论文本分类器中继续学习。具体地,本步骤包括如下子步骤:(6.1)根据步骤(5.1)得到的各个类别的先验概率以及每个特征词在各个类别下的条件概率,使用以下公式对测试集中的评论文本经过步骤(3)的数据预处理及步骤(5)的初始朴素贝叶斯训练之后得到的特征词集列表xcomment={x1,x2,……,xa}进行处理,以得到评论文本分别为正常评论的概率和垃圾评论的概率;(6.2)获取测试集中每个评论文本由步骤(4.3)得到的文本相关度值rv,并计算该文本相关度值rv与由步骤(5.2)得到的正常/垃圾评论中心向量的平均欧式距离distanceham和distancespam,就是相关度值rv与向量中每个元素的欧式距离组成的列向量平均值;(6.3)构建测试评论文本布尔向量boolvectortest=(l,m,n,o,p,q),其中l表示评论文本是否被回复、m表示评论文本是否被点赞、n表示评论文本是否字重复率高于某一阙值δ、o表示评论文本中的特殊字符数目是否高于某一阙值ε、p表示评论文本中是否包含垃圾url、q表示评论文本中是否包含垃圾连续数字,l、m、n、o、p、q的取值为1或者0。评论文本是否被回复或点赞可以从评论关系网络图中该节点的相应属性中直接获取,因此可以直接根据节点中的是否被回复属性值和是否被点赞属性值设置布尔因子l和m的值。再根据步骤(5.3)得到的布尔因子δ、ε以及垃圾连续数字集spamserialset和垃圾url集spamurlset,判断评论文本的字重复率是否大于δ,若大于则将n赋值为1,否则就赋值为0、判断评论文本的中的特殊字符数目是否大于ε,若大于则将o赋值为1,否则就赋值为0、判断评论文本中是否包含垃圾url集spamurlset中的某个垃圾·,若包含则将p赋值为1,不包含则赋值为0、判断评论文本中是否包含垃圾连续数字集spamserialset中的某个垃圾连续数字,若包含则将q赋值为1,不包含则赋值为0。根据正常评论与垃圾评论在上述几个布尔向量因子取值的相反性性质,构建正常评论布尔向量boolvectorham=(1,1,0,0,0,0),垃圾评论布尔向量boolvectorspam=(0,0,1,1,1,1),再分别计算boolvectortest与正常评论布尔向量boolvectorham和垃圾评论布尔向量boolvectorspam之间的余弦距离得到boolsimham和boolsimspam;(6.4)综合步骤(6.1)、(6.2)和(6.3)的结果判断测试集中的评论文本是否为垃圾评论,具体是采用以下公式计算得到结果值commclass,若该值大于0,则表示评论文本是垃圾评论文本,反之,则为正常评论文本:(6.5)将步骤(6.4)的判断结果增量反馈至初始评论文本分类器中继续学习,不断更新朴素贝叶斯训练阶段的先验概率和条件概率,以及垃圾连续数字集spamserialset和垃圾url集spamurlset,并不断修正几个布尔因子δ和ε。本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1