本发明属于网络监控技术领域,尤其涉及一种基于pptl3的微信群在线监控方法及系统。
背景技术:
近几年互联网取得了巨大的发展,越来越多的人开始习惯使用互联网应用来联系好友,分享自己的动态,了解时事,发现感兴趣的东西。随着生活水平的不断提高,我国人民使用互联网的比例也在不断增加。社交网络也被叫作社交网络服务,目前比较热门的社交网络国外有twitter、facebook、instagram等,国内有微信、qq、微博等。其中,国内最受关注、活跃人数最多的社交网络是微信。微信在推出后受到了用户的广泛使用和外界的极大关注,但微信传播信息的同时,势必会带来一些隐私和舆情上的问题。如果微信在隐私性上出现重大问题,会给广大用户带来不小的损害。而在舆情传播上,由于微信的强用户粘度以及强互动性等特点,社会热点事件容易在微信上迅速扩散,造成舆情问题。热点话题可能会存在消极的内容,影响社会安定。同时,微信上还有一些用户散发大量违法的言论,包括但不限于色情、赌博、谣言、反动等信息。如果没有对微信信息进行有力的监控,不良的信息就会危害网络环境,影响青少年身心健康,并且不良信息在长期没有得到处理后会造成更大的公共事件。因此,监控微信系统的运行,并验证微信系统在隐私安全和舆情传播上的性质是很有必要的。传统验证软件系统性质的方法有三种:软件测试、定理证明、模型检测。测试的难点在于选择合适的测试用例,并只能通过测试用例证明程序中存在问题,而不能证明其不存在问题。定理证明技术需要用到数学推理相关的知识,并且各个推算步骤很繁琐。模型检测技术需要对目标系统进行建模,然后穷举系统的状态,复杂度比较高,容易遇到状态空间爆炸的问题。
运行时验证技术是一种轻量级的软件性质验证方法,运行时验证技术通过监控系统运行时的行为,来判断系统的行为是否违背某些性质,一旦系统的行为违背性质,监控器能立即给出警告。运行时验证技术不需要对系统进行建模,只关心系统运行时的执行轨迹,降低了验证时的复杂度。运行时验证技术在验证系统的性质时可以是实时的,通过监控系统的不断运行,判断系统是否满足性质。跟定理证明相比,运行时验证技术的自动化程度更高,验证速率更快。同测试相比,运行时验证并不依赖于人员的经验,也不需要选取适当的测试用例。运行时验证是形式化的一种方法,便于扩展,在描述性质上也比较方便。同时,若采用模型检测的方法,模型和实际社交网络系统是分离的,模型并不能反映社交网络的实际行为,即不具备实时性。
通过上述分析,现有技术存在的问题及缺陷为:采用传统的模型检测对微信群的性质进行验证分析,由于微信系统功能复杂,存在状态空间爆炸的问题,且不具备实时性。
解决以上问题及缺陷的难度为:传统验证微信群性质的方法是模型检测,但模型检测需要对整个微信系统进行建模,微信是大型的社交网络,建模困难,并且会存在状态空间爆炸的问题。
解决以上问题及缺陷的意义为:本发明提供了一种在线监控微信群的方法,利用运行时验证技术判断微信群特定性质是否成立。本发明不需要对微信进行建模,复杂度较低,具有一定的实用价值。
技术实现要素:
针对现有技术存在的问题,本发明提供了一种基于pptl3的微信群在线监控方法及系统。
本发明是这样实现的,一种基于pptl3的微信群在线监控方法,所述基于pptl3的微信群在线监控方法通过使用网络爬虫获取微信群的文本数据,用pptl3描述性质并生成相应的性质监控器,然后根据文本数据得出性质对应的原子命题的真假值,将原子命题组合为状态子公式输入到监控器中,通过监控器的运行判断特定的性质是否成立。
进一步,所述基于pptl3的微信群在线监控方法包括:
步骤一,使用网络爬虫动态获取微信群的文本数据,并构建需要验证的性质对应的监控器;
步骤二,使用文本分类和关键词过滤识别出性质相关的文本,并根据获取的文本信息给性质对应的原子命题赋值;
步骤三,将监控器转换为java格式,并把原子命题组合为状态子公式输入到监控器中,根据监控器运行结果判定性质是否成立。
进一步,所述步骤一需要确定微信群需要满足的性质,并采用pptl3公式描述性质,根据公式得到一个有限状态自动机,也就是性质对应的监控器。
进一步,所述步骤一中使用网络爬虫获取微信群文本数据的方法包括:准备一个微信账号,并且选定要获取数据的群组,为了完成运行时验证,选取的群组应当较为活跃;运行代码,扫二维码来模拟登录网页版微信,并获取登录状态;开启wireshark进行抓包,对数据包进行分析,并返回给服务器;代码获取到服务器上的数据,保存在文件中;该网络爬虫是一个python程序,具体为:
定义chat类表示基本聊天对象,该类拥有微信id、昵称等属性,拥有发送消息chat.send(),获取头像chat.get_avatar()等方法;
定义类user、friend、member和mp,均是chat子类,表示用户、好友、成员、公众号等对象;
定义类bot(),用于表示一个web微信客户端,通过初始类来模拟登录微信,并对微信进行监控,动态获取微信群的文本数据。
进一步,所述性质监控器是一个java应用程序,具体为:
定义类edge:用于描述性质监控模块中的边;
定义类solve:用于完成运行时验证的流程,方法为:
定义方法conjformula:用于将原子命题合取成表示系统状态路径的子公式;
定义方法verify:将子公式读入监控器中,运行监控器并判断运行状态转移后的节点;
定义方法matchedge:判断当前原子命题的组合是否满足对应的性质监控器边上的信息;
定义方法getprop:判断性质对应的原子命题的真假;
定义方法monitor:完成对微信群在线监控的流程,得出监控结果;
所述性质监控器对微信群监控的方法具体包括:对特定的性质的每个原子命题赋值,并将已经赋值的原子命题作为性质监控器的输入,根据这些原子命题得到性质监控器的下一个节点,通过到达的节点判定性质是否成立。
进一步,判定原子命题真假的方法包括:对微信群文本进行预处理,使用融合词特征、文本格式特征、文本语义特征的文本分类方法对微信群文本进行分类,并使用关键词过滤技术识别特定词语,将文本分类和关键词过滤结合起来识别文本中特定的信息,进而判定原子命题真假。
本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:通过使用网络爬虫获取微信群的文本数据,用pptl3描述性质并生成相应的性质监控器,然后根据文本数据得出性质对应的原子命题的真假值,将原子命题组合为状态子公式输入到监控器中,通过监控器的运行判断特定的性质是否成立。
本发明的另一目的在于提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:通过使用网络爬虫获取微信群的文本数据,用pptl3描述性质并生成相应的性质监控器,然后根据文本数据得出性质对应的原子命题的真假值,将原子命题组合为状态子公式输入到监控器中,通过监控器的运行判断特定的性质是否成立。
本发明的另一目的在于提供一种运行所述基于pptl3的微信群在线监控方法的基于pptl3的微信群在线监控系统,所述基于pptl3的微信群在线监控系统包括:
网络爬虫模块,用于动态获取微信群的文本数据;
文本识别模块,用于识别微信群文本中特定的信息;
运行判断模块,用于生成性质对应的java格式的监控器,并监控微信群的运行是否满足特定的性质。
本发明的另一目的在于提供一种终端,所示终端搭载所述的基于pptl3的微信群在线监控系统;所述终端包括:手机app端、电脑app端;所述app包括:微信。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明通过使用网络爬虫获取微信群的文本,然后使用pptl3来描述性质并生成对应的监控器,之后使用文本分类技术和关键词过滤获取性质相关的文本,进而判定性质对应的原子命题的真假,最后将原子命题成状态子公式输入到监控器中,如果到达true节点,表明性质成立;如果到达false节点,表明性质不成立;如果到达其他节点,说明当前获取到的信息无法判定性质是否成立,需要继续运行。本发明的获取数据的效果如图5所示。本发明使用pptl3描述性质并生成监控器的效果如图6所示。本发明验证特定性质是否成立的效果如图7所示。
本发明不需要对微信系统进行建模,从而避免传统模型检测方法的状态空间爆炸的问题,并且通过结合多种技术,完成了对微信群的在线监控。本发明提出的基于pptl3的微信群在线监控方法,其监控微信群的原理基础就是运行时验证,拥有实时、复杂度低等特点,是一种有效的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的基于pptl3的微信群在线监控方法流程图。
图2是本发明实施例提供的基于pptl3的微信群在线监控系统的结构示意图;
图中:1、网络爬虫模块;2、文本识别模块;3、运行判断模块。
图3是本发明实施例提供的基于pptl3的微信群在线监控方法的实现流程图。
图4是本发明实施例提供的融合词特征、文本格式特征、文本语义特征的微信群文本分类方法示意图。
图5是网络爬虫动态获取微信群文本数据的效果图。
图6是根据描述特定性质的pptl3公式构建对应监控器的示意图。
图7是本发明对特定性质进行验证的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种基于pptl3的微信群在线监控方法及系统,下面结合附图对本发明作详细的描述。
如图1所示,本发明提供的基于pptl3的微信群在线监控方法包括以下步骤:
s101:使用网络爬虫动态获取微信群的文本数据,并构建需要验证的性质对应的监控器,性质可以是微信官方定义的政策,也可以是用户传播信息时需要遵守的行为准则;
s102:使用文本分类技术和关键词过滤技术筛选出性质相关的文本,进而判定性质相关的原子命题的真假值;
s103:将运行时监控器转换为java格式,把得到的原子命题组合成表示系统状态路径的子公式输入到监控器中,根据监控器运行结果判定性质是否成立。
如图2所示,本发明提供的基于pptl3的微信群在线监控系统包括:
网络爬虫模块1,用于动态获取微信群的文本数据。
文本识别模块2,用于识别微信群文本中特定的信息。
运行判断模块3,用于生成性质对应的java格式的监控器,并监控微信群的运行是否满足特定的性质。
下面结合附图对本发明的技术方案作进一步的描述。
本发明通过使用网络爬虫获取微信群的文本数据,用pptl3来描述性质并生成相应的性质监控器,然后使用文本分类和关键词过滤判断性质相关的文本,从而得到性质对应的原子命题的真假值,然后将原子命题组合为状态子公式输入到性质监控器中,通过性质监控器自动的实时监控来判定微信群在传播消息时是否符合给定的性质。
根据图3所示,本发明实施例的基于pptl3的微信群在线监控方法具体包括:
(1)生成性质监控器的过程:首先确定需要监控的性质,然后采用pptl3公式p来描述性质:pptl3公式p的确定需要根据待验证的性质来定义命题,然后将命题按照逻辑关系组合成相应的pptl3公式。最后将pptl3公式输入pptl性质监控器生成器经转换得到有限状态自动机,也就是性质监控器,监控器的边和节点信息存在文本发明件中。
pptl3表示三值语义的pptl(propositionalprojectiontemporallogic),pptl3添加额外的值inconclusive,用公式表示即为:
pptl3语法定义与pptl相同,pptl公式p的语法定义如下:
其中p表示原子命题,并且p属于集合prop,prop代表原子命题组成的可数集合。p、p1、p2到pm都是pptl公式。○是时序操作符next,表示下一个状态,prj是投影操作符projection。pptl中的true,false,→,
pptl性质监控器生成器是一个java应用程序,用于将pptl3公式转换为有限状态自动机的表示形式,得到的有限状态自动机就是公式的性质监控器。pptl性质监控器生成器界面上方的编辑框用于输入待验证的性质,然后点击右侧的“生成监控器”按钮即可根据输入的性质自动生成对应的性质监控模块。界面左下方是状态转移图,图中有三种节点类型:标有true和false节点表示若根据系统的运行时的事件序列转移到该状态,则当前的验证结果是true或false,而标有数字的节点则表示当前状态下还不能准确的判断性质是否满足,而需要更多信息,此时验证结果为inconclusive。界面右下方显示的是性质监控模块中每条转移边上的信息,该信息保存于monitor_info.txt文件中。
(2)对微信群文本进行文本识别的具体方法为:使用文本分类技术和关键词过滤技术实现对特定类别的文本的识别。对微信群进行运行时验证时,将文本分类技术和关键词过滤技术相结合用来识别特定类别的文本,帮助判定性质的原子命题的真假。文本分类主要步骤有提取文本特征、计算特征权重、特征融合、训练分类器等,关键词过滤技术用于过滤文本分类技术难以识别的文本。
本发明对微信群文本进行了综合分析,提取出微信群文本的词特征、文本格式特征和文本语义特征。然后对特征权重进行赋值,并进行特征融合,之后使用svm分类器进行分类,完成对特定文本的识别。为了加强文本识别的能力,使用关键词过滤与文本分类相结合。
文本识别模块的代码使用java实现,具体为:
定义方法train:训练分类器,得到分类模型;
定义方法predict:预测分类结果;
定义方法pretreatment:文本预处理,去除停用词、特殊符号等与实验无关的信息;
定义方法countfeature:计算特征向量的值;
定义方法vectordata:输出量化数据文件;
定义方法checksensitive:调用文本识别模块提供的方法判断文本中是否有特定类别的信息;
(3)性质监控器是一个java应用程序,用于接收文本识别模块的输出并分析输出判定原子命题真假值,生成相应原子命题的组合,判断原子命题的组合是否满足(1)中得到的性质监控器,具体为:
定义类edge:用于描述性质监控模块中的边;
定义类solve:用于完成运行时验证的流程,其主要方法为:
定义方法conjformula:用于将原子命题合取成表示系统状态路径的子公式;
定义方法verify:将子公式读入监控器中,运行监控器并判断运行状态转移后的节点;
定义方法matchedge:判断当前原子命题的组合是否满足对应的性质监控器边上的信息;
定义方法getprop:判断性质对应的原子命题的真假;
定义方法monitor:完成对微信群在线监控的流程,得出监控结果。
构建好的性质监控器对微信群在线监控的方法具体包括:
运行判断模块通过调用方法establish完成运行时验证的流程。方法establish首先调用文本识别模块中与文本分类相关的方法,完成svm模型训练并保存结果。然后再使用runtime类提供的方法来调用python格式的网络爬虫程序,监控微信的运行,然后获取到爬虫的输出,根据输出不断更新程序中的变量。获取到聊天数据之后,便可以调用方法得出原子命题的值。判定原子命题的值需要调用issensitive()方法来识别文本是否含有违法信息。之后,调用方法将原子命题合取为表示系统路径的状态子公式,输入到监控器中,判定节点的变化,根据监控器运行结果判断系统的运行是否满足给定性质。具体包括:
a)如果性质监控模块到达true节点,则说明给定性质成立,返回true,即满足性质,停止对开源社交网络的监控;
b)如果性质监控模块到达false节点,则说明给定性质不成立,返回false,即违背性质,停止对开源社交网络的监控;
c)对于性质监控模块的其他节点,则说明当前还无法判断给定性质是否成立,如果还有剩余的文本数据未进行验证,则返回程序判断原子命题真假的步骤,否则返回inconclusive,并结束。
下面结合具体实施例对本发明的应用原理作进一步的描述。
1、网络爬虫的设计:本发明使用python3+wireshark+requests来实现特定的微信群的聊天数据的爬取。wireshark是常见的抓包工具,可以对网络协议进行分析,并可以通过一些配置来抓取微信网页端的数据包。requests是python的第三方库,提供方法帮助访问网络资源。
爬取微信群数据的流程如下:
a)准备一个微信账号,并且选定要获取数据的群组,为了完成运行时验证,选取的群组应当较为活跃;
b)运行代码,扫二维码来模拟登录网页版微信,并获取登录状态;
c)开启wireshark进行抓包,对数据包进行分析,并返回给服务器;
e)代码获取到服务器上的数据,保存在文件中。
2、性质监控器的生成:首先分析互联网相关的法律法规,得到微信群需要遵循的性质,然后使用pptl3进行描述。例如本发明针对公民不能在微信群发布违法信息这一行为约束,提出了微信群中应当成立的性质:特定的群员发布违法信息后,群主应当警告发布违法信息的群员,告诫其停止发布违法信息,并且提醒其他群成员不要转发违法的信息,将违法信息撤回删除。如果发布违法信息的群成员在群主警告后仍然我行我素,那么群主可以将其移出群组,并向有关机构或网络服务提供商举报该用户。为了简化处理,我们认为在群成员发布两条违法信息后,该成员不应该还在群内,群主应当在该成员发布第二条违法信息后30分钟内对违规群员进行处理,将其移出群组。可以定义以下的原子命题:
p:当前特定用户在群组发送了违法信息;
q:群主在30分钟内对特定用户进行移出群组的处理;
利用pptl3公式描述上述的性质,描述性质的公式为(p∧○p∧len(2))prj(skip∧○q);
p∧○p∧len(2)表示的含义是当前状态和下一个状态时命题p均成立,其中特定群成员每当发送一条违法算作一个状态。当特定群成员在群组中发送了两条违法信息时,代表其屡教不改,群主需要在30分钟内将其移出群组。如果在30分钟后特定群成员依然在群组中,说明性质不成立,因此可以认为这种情况下群主是失职的,没有尽到监管责任。公式中的prj是投影操作符,用于在不同的时间尺度上运行两个状态序列。对于群主来说,当特定群成员第一次发送违法信息时,记为一个状态,当随着时间的进行特定群成员再次发送违法信息时,不记为一个状态,群主的下一个状态对应的时间是用户b发送第二条违法信息之后30分钟内某一时间点。子公式skip∧○q表示群主的状态序列,在其第二个状态时需要判定原子命题q是否成立。对于原子命题p和q真假的判定,需要编写程序结合文本分类技术和基于关键词的信息过滤技术实现。
然后将公式输入到性质监控器生成器中,得到监控器的文本格式,文本中保存有监控器边和节点的信息。
3、通过2的分析可知,该性质需要判定用户言论中是否含有特定信息,因此,编写文本识别模块的代码用于识别文本。首先对文本进行预处理,并且提取文本的词特征、文本格式特征和文本语义特征,然后对特征权重进行赋值,并进行特征融合,之后使用svm分类器进行分类,完成对特定文本的识别。为了加强文本识别的能力,使用关键词过滤与文本分类相结合。
4、运行判断模块中用于完成读取监控器文本信息并保存数据的方法readgraph代码为:
在使用数据结构保存监控器信息之后,通过方法establish完成对微信群在线监控的整个流程,其具体代码为:
5、进一步,执行整个在线监控程序,对某一群组进行监控,判断第2步的性质是否成立。如果不成立,说明该群组的群主没有及时处理群成员发布的违法信息,是失职的,没有起到监管群组的责任。
使用本发明提供的技术对某一微信群进行在线监控首先在java程序中使用runtime类调用网络爬虫动态获取微信群的文本数据,然后使用运行时验证技术判断性质是否成立。爬虫爬取微信群数据如图5所示。对上文提出的性质示例的验证结果如图7所示。
运行时验证结果的头五行是监控器中各个节点及其转换的关系,接下来一行是运行时验证结果,stopmonitor是指在用户violetsky这里发现性质不成立,也就是currentnode是false,在监控到这里后监控程序停止监控,因为我们已经找到了不符合性质的用户。接下来的两行是该用户包含违法信息的聊天信息。该用户在发表了两条包含违法信息的言论后,群主没有在规定时间内对其进行移出群组的处理,因此我们可以认为该群组的群主是失职的,没有尽到群主的责任。
在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上;术语“上”、“下”、“左”、“右”、“内”、“外”、“前端”、“后端”、“头部”、“尾部”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性。
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、cd或dvd-rom的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。