白國梁,董 澤,王小坡,姚民康
(河北省發電過程仿真與優化控制工程技術研究中心(華北電力大學),河北 保定 071003)
我國國民經濟的發展離不開充足電力的支撐,就我國目前各種電力生產方式來說,火力發電仍占主導地位。火電廠安全運行,不但關系著生活電力的使用,更是直接影響國家的經濟發展。近年來經常會有火電廠生產事故的發生,其主要原因是少數工作人員安全意識不強,現場操作技術疏忽,對規定的操作不熟悉,出現錯誤操作。所以火電廠特別注重對員工操作進行規范。對相應的操作設置操作票進行考核和使用,現場實行“兩票三制”,強化員工規范操作。在這種背景下,“兩票”作為一種有效的工作制度,是我國在火電生產過程中多年堅持的工作制度,并被寫入了《電力安全工作規程》。工作票是電廠員工在電氣設備上進行工作時的書面命令,記錄了具體的工作詳情及注意事項,是執行工作時要注意的安全措施的書面依據[1]。操作票是電廠員工進行操作任務、操作程序及操作活動的文字依據,是明確操作任務和流程、保障員工操作安全的重要措施[2]。分析近年來電廠的事故報告,每年電廠發生的事故中,很大一部分都是由于“兩票”發生錯誤導致,因此需要員工加強對票的學習。在使用“兩票”練習系統時,員工只能隨機選擇票進行練習或者通過檢索特定的任務票來練習某一張票,學習效果差。而基于票任務的篩選系統可以在員工練習時,從票庫中篩選出與員工練習的票類似的票,從而節約練習時間,顯著提升員工的練習效果。以電廠“兩票”練習系統為研究對象,在對票任務進行中文分詞處理后應用關聯規則[3]進行票的篩選。
現有的分詞方法可分為三大類:基于字符串匹配的分詞方法、基于理解的分詞方法和基于統計的分詞方法。當前流行的中文分詞器多種多樣,由于SnownLp是一個python寫的類庫,可以方便地處理中文文本內容,選擇SnownLp作為分詞器。
選取票庫中的“1號機運行電泵檢修措施”作為測試數據,實驗結果如下:
首先輸出分詞結果:
[‘1 號機,運行,電泵,檢修,措施’]
由于操作票任務一般比較簡短,在關鍵詞的提取中,本文直接使用分詞后的結果,在去除分詞助詞后作為關鍵詞庫。另外對于個別簡寫或者習慣的名稱,如“沈鐵線”,分詞容易分為“沈”和“鐵線”,說明本分詞方法還可以進一步優化,但是從整體來看,分詞的結果能體現票任務的內容,達到本課題所需的效果。
通過對票庫中的所有票任務使用分詞器進行中文分詞處理,刪除標點符號,提取文本關鍵詞的處理,票庫中共有1 231張票,最后關鍵詞庫總共有4 250條數據,生成關鍵詞如表1所示。

表1 關鍵詞庫
數據挖掘并不是單純的一門學科領域,它受到多個學科領域的影響,包括數據庫系統、機器學習、統計學、信息科學等等[4]。此外,神經網絡、模糊理論、知識表示、高性能計算、歸納邏輯程序設計等方面的學科也對數據挖掘有著重要影響。數據挖掘主要包括依據模式類型和使用技術的分類。關聯規則發掘是數據挖掘中的一個重要課題。關聯規則的概念由Agrawal、Imielinski、Swami提出, 是數據中一種簡單實用規則,關聯規則模式屬于描述型模式,發現關聯規則的算法屬于無監督學習方法[5]。
關聯規則是指兩個或多個事物之間如果有某種關聯,那么通過一個事物可以預測其他的關聯事物[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)所挖掘的約束類型:知識型約束、維/層約束、數據約束、興趣度約束、規則約束。
Apriori算法、寬度優先算法與FP-Tree算法是目前關聯規則挖掘算法中較為流行和實用的算法[7]。
Apriori算法、寬度優先算法需要多次掃描數據庫,對系統的I/O接口有很高的要求。數據庫中存儲幾千張票,要求具有大量的數據流,而操作頻繁時會造成分配給用戶資源不夠的現象,造成用戶等待的后果,影響用戶體驗。FP-Tree算法是指在實現Apriori算法功能的情況下,不生成任何候選項,該算法對數據庫的訪問只要讀取兩次就不再占用I/O資源,它將數據庫直接壓縮成了一個頻繁模式樹,其余所有的操作都是基于這棵樹生成相應的關聯規則[12]。本文選用 FP-Tree算法作為關聯規則挖掘算法在本系統實現應用算法[9]。
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]。可以獲得關于“濾網”的全部頻繁項集,本文需要的是其最大頻繁項集。
為了驗證FP-Tree算法在本系統中的可行性和有效性進行了測試,測試選用的票庫共有1 231張票,以票任務為“1號機組運行空側密封油切換濾網”為例,設置支持度為4,置信度為“70%”,實驗結果如下:經過分詞處理后得到的關鍵詞為“運行,空側,密封油,切換,濾網”,共找到16張類似票任務的票,其中置信度高的票任務為:
9號機,運行空側,密封油切換冷油器
9號機,運行空側,密封油,切換濾網
9號機,運行氫側,密封油,切換冷油器
9號機,運行氫側,密封油,切換濾網
1號機,運行空側,密封油冷油器
1號機,運行氫側,密封油,切換冷油器
1號機,運行氫側,密封油,切換濾網
1號機,運行主機冷油器切換
從實驗結果來看,所篩選的票數量不多,但是在票庫所存儲的1231張票中,包含了電廠所有機組各個部分的操作票,具體到某一機組某一項操作所含有的票只有少數幾張。與所查找的票任務類似。整體來說,本次測試篩選結果比較可觀。該系統的算法可以合理地推薦質量較高的票,證明了關聯規則挖掘算法在本系統票任務篩選功能上效果良好。
工作票和操作票的“兩票三制”制度是保證火電廠正常安全運行的重要制度,需要電廠員工強化對規定操作的掌握。針對電廠“兩票”練習系統,提出了一種基于SnowLp和FP-Tree的票篩選方法。該方法以票任務為文本對象,使用SnowLp分詞器對票任務文本進行中文分詞處理,獲取關鍵詞并建立關鍵詞詞庫,建立關鍵詞到票的聯系,由于票數據比較多,而現場實際的服務器性能限制,使用 FP-Tree算法進行關聯規則挖掘,進而實現在票庫中對票的篩選。測試可以篩選出任務類似的票,說明本文方法的有效性。
考慮到票任務作為短文本的特殊性,票任務中往往含有一些特定名詞以及簡稱,目前的分詞器分詞效果仍有待改善。在之后的研究中,進一步改善分詞器是研究的重點,特別是對名詞簡稱和專有名詞的識別。