



摘 要: 面對龐大的微博用戶群,提升用戶體驗以吸引更多用戶成為關鍵因素,因此自動學習推理系統的研究成為熱點,對微博用戶的傾向進行推測,同時,使用圖形化的組件使得操作更加簡潔方便。系統中使用定量的不確定推理算法,也改變了定性推理造成結果不準確的情況,從而幫助用戶更高效、準確地推送網絡好友,通過運用人工智能和數據挖掘等領域中的理論和算法設計實現了自動學習推理系統。系統計劃在搜狐微博中上線,在測試過程中取得了一定的預期成果。
關鍵詞: 數據挖掘; 微博應用; 不確定推理; NHibernate和Spring.NET框架結構
中圖分類號: TN915.1?34; TM417 文獻標識碼: A 文章編號: 1004?373X(2016)15?0099?04
Abstract: Facing the enormous microblog user group, the promotion of user experience is the key factor to attract more users. Therefore, the study on automatic learning and reasoning system (ALRS) becomes a research hotspot, which can speculate the tendency of microblog users, and make the operation with graphic components more concise and convenient. The quantitative uncertain reasoning algorithm used in ALRS can change the uncertain results caused by qualitative reasoning, and help the users to recommend the network friends efficiently and accurately. The ALRS was designed and implemented with the theories and algorithms in artificial intelligence, data mining and other fields. There is plan that the system will enter in Sohu microblog, and a certain expected result has been obtained in test process.
Keywords: data mining; microblog application; uncertain reasoning; NHibernate and Spring.NET framework
0 引 言
微博是當前最炙手可熱的互聯網應用,作為一種信息的交互平臺,微博正成為網民愈加重要的言論發表方式。除此之外,微博還可以通過用戶間的關注形成巨大的人際交互網絡。在微博中,人際間的交互體現為用戶間添加關注、轉發、收聽等。其中添加關注是最為基礎的用戶操作。然而,很多剛剛開始使用微博的用戶,可能只會添加一些名人微博進行關注,甚至連名人微博都不會添加,對于眾多其他的不錯的草根微博卻一無所知,微博就會失去使用價值和意義[1]。
為了推廣微博應用,提高微博的可用性、有趣性,搜狐微博推出了“猜你認識”的功能。搜狐微博設計了熱詞系統。通過這些用戶提及的熱詞,在系統中尋找相應的推理方法,進行歸納推理,得出推理結果。系統后臺對推理結果在前臺頁面體現。用戶不但可以刪改后臺推理得出的結果(即標簽),還可以自己添加標簽,豐富自己的形容。后臺程序將針對每一個用戶傾向,找到與用戶具有相同傾向的其他用戶,作為推薦好友推薦給用戶,這樣,就可以幫助用戶建立更大更廣的關注圈[2]。
基于人工智能的抽象建模(即推理規則的提取)、基于一系列第三方控件的操作界面、不確定推理運算等一系列思想與方法,實現自動學習推理系統。通過系統運行時做出的自動調整(包括增益與衰減),系統不但大大降低了后臺人員的維護成本,而且更提高了用戶體驗性,使得微博用戶能夠得到更好更準確的服務[3]。
1 系統需求分析
1.1 需求概述
自動學習推理系統主要面向兩方面用戶的使用,即后臺運維人員和普通微博用戶[4]。
系統應該滿足一次錄入推理數據、多次使用該數據的要求,也就是說,推理數據是系統的基礎。在運維人員需要在構建好分類和事實等一系列知識體系之后,將建模的所有結果錄入系統。ALRS得到這些知識并將它們保存在數據庫。除了事實對普通的微博用戶公開外,分類應該保持對普通微博用戶的透明性。知識成功錄入后,運維人員將在構建好的事實的基礎上,構建出一系列的推理過程,即推理樹。
在滿足了后臺運維人員對本系統的一系列需求后,面對普通微博用戶的應用需求則完全在后臺控制臺中體現。推理系統為學習系統提供了接口,以滿足學習系統利用知識進行各種推理的需求。同時,為方便運維人員進行模型的驗算,檢查推理樹構建的合理性,推理系統提供了圖形化的推理演算界面。
1.2 功能需求分析
Web用戶則通過添加推薦關注、增刪智能標簽反饋推理系統的處理結果;運維人員主要負責知識的錄入和推理樹的構建;推理引擎實際上是推理程序的集合,主要負責利用構建好的推理樹以及推理算法對用戶的輸入進行推理并得出用戶傾向;學習引擎負責微博的分詞,推理分配以及推理結果的整理。
1.3 性能需求分析
自動學習推理系統對硬件方面要求較高,必須不低于以下配置:處理器:Intel Pentium 166 MX (或以上);內存:10 GB(或以上);硬盤:20 GB(或以上);顯卡:SVGA顯示適配器。
軟件方面的要求如下: 操作系統:推理機Windows XP/7,學習機Linux,Windows不限;推理機需要安裝Microsoft .NET Framework 2.0或以上;推理機需要安裝Developer Express Inc .NET2005組件;推理機需要安裝Netron組件;推理機需要安裝Spring.NET 1.2.0框架包。
2 自動學習推理系統概要設計
2.1 系統概要設計
需求分析中的五個主要功能:推理準備、知識管理、推理樹管理、自動推理、推理結果整理與推送好友 [2]。
推理準備功能需要熱詞系統的幫助,通過熱詞系統對用戶近期提及熱詞的記錄獲取目標用戶的最新傾向詞。
知識管理功能是為了滿足后臺運維人員進行知識錄入而設計的。
推理樹管理功能是為使后臺運維人員以簡潔的操作方式,利用構建好的事實,通過可視化界面便捷的圖形化操作來構建推理樹。
推理功能中為方便后臺運維人員的驗算使用,系統應當為他們準備類似電子表格的簡單操作界面。
推理結果整理與推送好友功能對推理結果進行響應,并為用戶搜索目標結果集,作為推送好友。
2.2 系統層次設計
圖1描述了自動學習推理系統的主要組成部分。 首先,ALRS 可以分為學習子系統和推理子系統。其中,學習子系統分為推理準備和好友推送兩個部分。 推理子系統部分包括知識管理、推理樹管理和推理三部分。 知識管理部分分為分類管理和事實管理兩個子部分。推理樹管理部分分為新建和維護兩個子部分。
2.3 系統流程設計
圖2 描述了ALRS的整體流程。為了提高系統運行效率,使得ALRS為更廣泛的微博用戶服務,ALRS只針對用戶描述標簽少于3個的用戶進行推理服務,以豐富用戶的描述,并且能夠使沒用過這項功能的用戶注意到這項應用,從而促使用戶自己添加描述。對進入推理集的數據,ALRS會定期進行推理。一方面為用戶添加描述標簽,另一方面也為用戶推送好友。具體的流程會在下文進行詳細討論。
3 自動學習推理系統詳細設計
3.1 系統詳細設計
系統采用流行的MVC架構模式,即使用表示層、業務邏輯層、數據訪問層三層的流行架構方式,然后介紹ALRS的數據訪問層架構,其中重點介紹數據訪問層中每一層(包括Service,DAO,Bean和數據庫等層)的具體設計方式。最后介紹業務邏輯層的工作流程和算法等設計方案。
在系統結構設計中,一般將數據訪問層分成服務層和持久化層。實現時,需要盡可能地保持層次間的松散耦合。學習子系統中使用Spring與Hibernate架構,而推理子系統利用Spring.NET與NHibernate對.NET平臺開發的應用程序完成業務的架構。這樣,可以利用Spring與Hibernate組合和Spring.NET與NHibernate組合來封裝和處理數據庫操作,使程序代碼中不需嵌入SQL操作語句和復雜的數據庫操作對象,從而簡化程序開發、測試過程。
由于系統需要進行JAVA與.NET跨平臺的交互,所以數據庫的選取非常重要。考慮到網絡應用中MySQL的應用非常廣泛,所以在數據庫的選擇上確定使用MySQL。
3.2 推理樹管理部分設計
推理樹管理部分在知識庫管理部分的基礎上,實現了后臺運維人員對推理樹的錄入與管理,是自動學習推理系統的推理基礎,此后的推理管理部分的規則來源就是在推理樹管理部分中錄入。為了方便后臺運維人員完成構建推理樹、查詢推理樹、管理規則、刪除推理樹、修改推理樹五種操作,系統將推理樹管理部分具體劃分為新建推理樹、維護推理樹兩個部分。維護推理樹部分又劃分為查詢推理樹、規則管理、刪除推理樹、修改推理樹等四個具體的部分。推理樹管理部分結構圖如圖3所示。
3.3 用戶推理部分設計
用戶推理部分是針對后臺運維人員驗算和普通的微博用戶自動推理而開發的。后臺運維人員在構建推理樹后,可以利用推理部分的“推理”功能對推理樹進行計算與驗算,從而對推理樹進行一定的調整。而普通的微博用戶作為本系統的主要服務對象,主要由系統后臺自動調用。參與對象分別是自動學習推理系統和MySQL數據庫管理系統。
3.4 推理后整理部分設計
推理后整理部分旨在對推理后產生的結果以及用戶的反應進行整理。推理后,將產生用戶傾向表和用戶潛在傾向表。ALRS會將這兩個表中的推理結果與用戶自身情況進行匹配,并把各三個符合條件的其他用戶作為好友推薦給該用戶。
如果用戶接受推薦,則默認用戶接受該傾向或潛在傾向。ALRS可以根據證據找到推理樹進行推理樹增益。增益的實現通過對數據庫和緩存(如果緩存中存在的話)中的推理樹信息進行更新。每次增益的尺度可以調整,系統初始默認為每次增加5%,當可信度增加到大于等于1時,系統將對今后的增益請求進行忽略。
如果用戶拒絕推薦或刪除標簽,則默認用戶不接受該傾向或潛在傾向。ALRS可以根據證據找到推理樹進行推理樹衰減。衰減的實現通過對數據庫和緩存(如果緩存中存在的話)中的推理樹信息進行更新。每次衰減的尺度可以調整,系統初始默認為每次減少5%,當可信度增加到小于等于0時,系統將對今后的衰減請求進行忽略。
通過以上兩種方法可以完成推理樹的自維護與自適應。這樣,就可以實現ALRS系統的自維護效果。
4 自動學習推理系統實現
系統利用DevExpress,Netron提供的第三方用戶控件,實現了以下功能。
利用Netron提供的GraphControl類實現了畫板功能,使系統提出的圖形化建立推理樹變為可能。利用Netron提供的Shape類實現了推理樹節點的功能。該控件可相互連接的特點也符合系統構建推理樹時節點間連接的需求。利用DevExpress提供的SimpleButton,MemoEdit,ComboBoxEdit等類實現了一些界面的界面控制。這是三種經常應用到的控件,其他控件由于重要性較小、出現次數較少的原因,在此不做贅述。
4.1 知識管理部分的實現
類別管理中,可以創建新的根類別或者子類別,也可以對這些類別進行刪改操作。根類別、子類別的包含關系擴展了單純的類別?事實的關系,從而形成了多層次類別、事實的從屬體系。事實管理中,可以創建新的事實,也可以對已存在的事實進行刪改操作。對事實的管理首先要選擇事實所屬的類別,然后再對事實的屬性進行錄入。事實管理功能界面與創建類別類似,每種事實都包含ID、類別ID、名稱、備注等信息。
4.2 推理樹管理部分的實現
結合圖4的新建推理樹部分用戶界面,介紹具體設計和使用方法。
(1) 輸入推理樹名稱。以方便后臺運維人員和普通的微博用戶感性地區分不同的推理樹。
(2) 添加推理節點。為方便后臺運維人員的查詢,根據選定的類別,系統會自動導入數據庫中所有屬于該類別的事實。
(3) 界面中可刪除已存在的節點,若需要刪除某個已有的節點,則單擊鼠標右鍵,選擇“delete”即可刪除。
(4) 添加事實節點后,可以添加事實節點間的關系。
(5) 在界面中可以刪除事實節點間的關系。
(6) 構建推理樹完畢,確認推理樹無誤后,按下“保存數據”按鈕,即可將推理樹保存至數據庫,與此同時保存的還有知識庫、推理樹節點、節點間關系、節點位置等信息。
若存在此類問題或在數據庫操作中發生錯誤,系統將會返回錯誤信息。如果添加規則庫成功,則返回成功信息,如圖5所示。
4.3 用戶推理部分的實現
利用上文構建推理樹的實例來說明ALRS的推理過程和使用方法,推理樹全圖如圖6所示。對推理演算部分的使用大致分為三個步驟:首先進入推理演算頁面選擇推理樹。然后,通過系統提供的下拉框選項,為每一個列表中的葉子節點賦予事實可信度。最后,點擊“開始推理”按鈕,系統將會開始自動推理,之后將結果呈現給用戶。
5 系統性能測試
5.1 測試環境
硬件方面配置:處理器:Intel Core i5;內存:2 GB;硬盤:20 GB;顯卡:NVIDIA顯示適配器。軟件方面配置:操作系統:Windows 7;Microsoft .NET Framework 2.0;MySQL5.0;JDK1.6;Developer Express Inc .NET2005組件;Netron組件;Spring.NET 1.2.0框架包。
5.2 測試結果
下面給出幾種不同設計方案下ALRS的工作性能。
方案一:不使用memcached,處理所有用戶的標簽猜測。這種情況下,系統負荷會達到最大,因為沒有memcached的緩存,每次數據的查詢、更新都要進行數據庫操作,測試結果如表1所示。
方案四:使用memcached,僅處理標簽小于三個用戶的標簽猜測。使用緩存后,不但實現了系統物理性能的提升,而且從精準度上也間接提升了服務效率。測試結果如表4所示。
使用memcached確實可以提高系統的運轉效率,究其原因,就在于memcached的查詢速度很快;另一方面,僅對標簽小于三個的用戶進行服務,雖然減小了服務覆蓋率,但也縮小了服務范圍,提高了服務精度,可以增強新用戶的忠誠度。所以系統選定了第四種方案,在搜狐微博每日用戶數目增長率大于每日微博發送增長率的初期階段,在每日產生千萬條微博記錄以下的情況下,系統運轉良好,達到了為新用戶推送好友的目的,符合設計時的工作設想。
6 結 論
目前,自動學習推理系統的所有需求功能已基本實現。ALRS實現了使用人工智能的手段和方法,對微博用戶的用戶傾向的挖掘;除此之外,還完成了前后相關的業務流程。 從總體使用和運行效果來看,ALRS不但為后臺工作帶來巨大的簡單和便利,也增強了用戶體驗,使更多的用戶發現微博的價值和樂趣。
在不久的將來,ALRS會進行版本升級,屆時,可以使用NoSQL的數據庫架構方式對系統進行數據管理。使用NoSQL可以提高系統響應速度,消除系統因數據庫操作產生的消耗,使得ALRS可以運行得更加迅速。
參考文獻
[1] 王寅永,李降宇,李廣歌. C#深入詳解[M].北京:電子工業出版社,2008.
[2] 王守信,張莉,王帥,等.一種目標可滿足性定性、定量表示與推理方法[J].軟件學報,2011,22(4):593?608.
[3] TAN P N, STEINBACH M. Introduction to data mining [M]. New York: Addison?Wesley, 2008: 112?114.
[4] GIARRATANO J C, RILEY G D. Expert systems [M]. 4th ed. Beijing: China Machine Press, 2006: 23?25.
[5] 俞忻峰.社交網絡挖掘方案研究[J].現代電子技術,2015,38(4):25?29.
[6] 李海生.一種熱點話題算法在微博輿情系統中的應用[J].現代電子技術,2015,38(6):44?46.