基于SnownLp和FP-Tree 的操作票考核系统任务筛选研究
2018-09-05白国梁王小坡姚民康
白国梁,董 泽,王小坡,姚民康
(河北省发电过程仿真与优化控制工程技术研究中心(华北电力大学),河北 保定 071003)
0 引言
我国国民经济的发展离不开充足电力的支撑,就我国目前各种电力生产方式来说,火力发电仍占主导地位。火电厂安全运行,不但关系着生活电力的使用,更是直接影响国家的经济发展。近年来经常会有火电厂生产事故的发生,其主要原因是少数工作人员安全意识不强,现场操作技术疏忽,对规定的操作不熟悉,出现错误操作。所以火电厂特别注重对员工操作进行规范。对相应的操作设置操作票进行考核和使用,现场实行“两票三制”,强化员工规范操作。在这种背景下,“两票”作为一种有效的工作制度,是我国在火电生产过程中多年坚持的工作制度,并被写入了《电力安全工作规程》。工作票是电厂员工在电气设备上进行工作时的书面命令,记录了具体的工作详情及注意事项,是执行工作时要注意的安全措施的书面依据[1]。操作票是电厂员工进行操作任务、操作程序及操作活动的文字依据,是明确操作任务和流程、保障员工操作安全的重要措施[2]。分析近年来电厂的事故报告,每年电厂发生的事故中,很大一部分都是由于“两票”发生错误导致,因此需要员工加强对票的学习。在使用“两票”练习系统时,员工只能随机选择票进行练习或者通过检索特定的任务票来练习某一张票,学习效果差。而基于票任务的筛选系统可以在员工练习时,从票库中筛选出与员工练习的票类似的票,从而节约练习时间,显著提升员工的练习效果。以电厂“两票”练习系统为研究对象,在对票任务进行中文分词处理后应用关联规则[3]进行票的筛选。
1 中文分词处理
现有的分词方法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。当前流行的中文分词器多种多样,由于SnownLp是一个python写的类库,可以方便地处理中文文本内容,选择SnownLp作为分词器。
选取票库中的“1号机运行电泵检修措施”作为测试数据,实验结果如下:
首先输出分词结果:
[‘1 号机,运行,电泵,检修,措施’]
由于操作票任务一般比较简短,在关键词的提取中,本文直接使用分词后的结果,在去除分词助词后作为关键词库。另外对于个别简写或者习惯的名称,如“沈铁线”,分词容易分为“沈”和“铁线”,说明本分词方法还可以进一步优化,但是从整体来看,分词的结果能体现票任务的内容,达到本课题所需的效果。
通过对票库中的所有票任务使用分词器进行中文分词处理,删除标点符号,提取文本关键词的处理,票库中共有1 231张票,最后关键词库总共有4 250条数据,生成关键词如表1所示。
表1 关键词库
2 关联规则挖掘算法
数据挖掘并不是单纯的一门学科领域,它受到多个学科领域的影响,包括数据库系统、机器学习、统计学、信息科学等等[4]。此外,神经网络、模糊理论、知识表示、高性能计算、归纳逻辑程序设计等方面的学科也对数据挖掘有着重要影响。数据挖掘主要包括依据模式类型和使用技术的分类。关联规则发掘是数据挖掘中的一个重要课题。关联规则的概念由Agrawal、Imielinski、Swami提出, 是数据中一种简单实用规则,关联规则模式属于描述型模式,发现关联规则的算法属于无监督学习方法[5]。
2.1 关联规则
关联规则是指两个或多个事物之间如果有某种关联,那么通过一个事物可以预测其他的关联事物[5],关联规则挖掘目的是为了在大量的数据中挖掘隐藏的数据之间的关联关系。
设集合 I={i1,i2,…,im},集合中出现的 ik(k=1,2,…,m)表示集合中的项,假设有X⊂I,那么集合叫作项集。当|X|=k,那么X叫作k的一项集。事务二元组T=(tid,X)(tid 是事务唯一的表示符, 被称为事务号)。数据集 D={t1,t2,…,tn},它是由 t1,t2,…,tn事务组成的集合。
关联规则定义为:形如A⇒B的蕴涵式,有条件A⊂I,B⊂I, 且 A∩B=φ,s称作项集 X 的支持度,表示D中包含X的事务数占总事务数的百分比,表示为。在D中,所有包含X∪Y的事务数在包含X的所有事务数中所占的比例,将它称作X项集的置信度 c,表示为s(X)=p (X|Y)=
关联规则中,支持度和置信度是两个重要的标准,置信度代表的是可信度,表示所得到的结果可靠与否,而支持度意味着其对整个数据库检索结果来说,重要程度的高低。当某集合的支持度都不小于所设定的最小支持度时,认为这个集合满足条件,将它叫作频繁项集。在所有生成的关联规则中,如果它们的置信度和支持度都满足用户的设定时,这些关联规则视为强关联规则[6]。
关联规则具有多种分类,其分类具有一定的规则性:
1)挖掘模式的完全性:闭频繁项集、极大频繁项集、挖掘频繁项集的完全性、被约束的频繁项集。
2)关联规则涉及的数据层和维数:多层关联规则、单层关联规则、多维和单维的关联规则。
3)关联规则所要处理的值和要处理的类型:挖掘量化关联规则、挖掘布尔型关联规则。
4)所挖掘的约束类型:知识型约束、维/层约束、数据约束、兴趣度约束、规则约束。
2.2 关联算法
Apriori算法、宽度优先算法与FP-Tree算法是目前关联规则挖掘算法中较为流行和实用的算法[7]。
Apriori算法、宽度优先算法需要多次扫描数据库,对系统的I/O接口有很高的要求。数据库中存储几千张票,要求具有大量的数据流,而操作频繁时会造成分配给用户资源不够的现象,造成用户等待的后果,影响用户体验。FP-Tree算法是指在实现Apriori算法功能的情况下,不生成任何候选项,该算法对数据库的访问只要读取两次就不再占用I/O资源,它将数据库直接压缩成了一个频繁模式树,其余所有的操作都是基于这棵树生成相应的关联规则[12]。本文选用 FP-Tree算法作为关联规则挖掘算法在本系统实现应用算法[9]。
2.3 FP-Tree算法的实现
FP-Tree算法的实现,主要包括频繁一项集、按照支持度降序排列频繁项集、迭代插入数据生成Fp-tree树等步骤,流程如图1所示。
图1 FP-Tree算法的实现流程
具体步骤如下。
步骤一:扫描整个数据表,依照每项关键词出现的频数进行递减排序,删除出现的频数小于所设定的最小支持度的项[12]。该结果称为频繁一项集,记做F1。
步骤二:对于每条数据剔除非频繁1项集,即删除原来每组数据中包含的不是频繁1项集中的数据,并按照支持度降序排列,得到排序后的数据集。
步骤三:建立FP-Tree,这一步需要2个关键的数据:项头表和排序后的数据集,项头表即为先前整理的频繁1项集;排序后的数据集是经过步骤二得到的数据集。
开始时FP树没有数据只有一个空的根节点,在建立FP树时,通过程序,读入每组排序后的数据集,插入FP树。插入时,根据先前的项头表,设定项头表中排序靠前的节点是祖先节点,排序在后的是子孙节点,向下延伸,如果有共用的祖先节点,则对应的共用祖先节点计数加1,若有新节点出现,则项头表对应的新的节点通过节点链表连接上新节点[12]。直到数据表所有的数据都写入到FP树,FP树的建立完成。
步骤四:接下来从FP-Tree中找出频繁项。以排序后的项头表为依据,从项头表的底部依次向上挖掘。以项头表对应于FP树的每一项,作为叶子节点,从下至上所对应的FP子树,将无关节点删除,得到这个FP子树,将子树中每个节点的计数设置为该叶子节点的计数,对照所设定的支持度,删除计数低于支持度的节点,整理子FP树,从这个条件模式基,递归挖掘得到频繁项集[9]。
将上述得到的CPB作为原始的事务数据库,返回第3步进行递归迭代运算,直到产生新的CPB为空时截止。对于FP-Tree中只有一条路径单支的情况,不需要再次调用递归函数进行迭代运算,直接输出整个路径上所有节点各种组合即为所求频繁项集[10]。可以获得关于“滤网”的全部频繁项集,本文需要的是其最大频繁项集。
3 实验与结果分析
为了验证FP-Tree算法在本系统中的可行性和有效性进行了测试,测试选用的票库共有1 231张票,以票任务为“1号机组运行空侧密封油切换滤网”为例,设置支持度为4,置信度为“70%”,实验结果如下:经过分词处理后得到的关键词为“运行,空侧,密封油,切换,滤网”,共找到16张类似票任务的票,其中置信度高的票任务为:
9号机,运行空侧,密封油切换冷油器
9号机,运行空侧,密封油,切换滤网
9号机,运行氢侧,密封油,切换冷油器
9号机,运行氢侧,密封油,切换滤网
1号机,运行空侧,密封油冷油器
1号机,运行氢侧,密封油,切换冷油器
1号机,运行氢侧,密封油,切换滤网
1号机,运行主机冷油器切换
从实验结果来看,所筛选的票数量不多,但是在票库所存储的1231张票中,包含了电厂所有机组各个部分的操作票,具体到某一机组某一项操作所含有的票只有少数几张。与所查找的票任务类似。整体来说,本次测试筛选结果比较可观。该系统的算法可以合理地推荐质量较高的票,证明了关联规则挖掘算法在本系统票任务筛选功能上效果良好。
4 结语
工作票和操作票的“两票三制”制度是保证火电厂正常安全运行的重要制度,需要电厂员工强化对规定操作的掌握。针对电厂“两票”练习系统,提出了一种基于SnowLp和FP-Tree的票筛选方法。该方法以票任务为文本对象,使用SnowLp分词器对票任务文本进行中文分词处理,获取关键词并建立关键词词库,建立关键词到票的联系,由于票数据比较多,而现场实际的服务器性能限制,使用 FP-Tree算法进行关联规则挖掘,进而实现在票库中对票的筛选。测试可以筛选出任务类似的票,说明本文方法的有效性。
考虑到票任务作为短文本的特殊性,票任务中往往含有一些特定名词以及简称,目前的分词器分词效果仍有待改善。在之后的研究中,进一步改善分词器是研究的重点,特别是对名词简称和专有名词的识别。