□陸 釗
(玉林師范學院 計算機科學與工程學院,廣西 玉林 537000)
據(jù)CNNIC截至2015年6月的統(tǒng)計,僅中國的網(wǎng)站數(shù)量就有357萬個,搜索引擎用戶人數(shù)達5.36億,使用率為80.3%[1].分析數(shù)據(jù)發(fā)現(xiàn):中小型規(guī)模網(wǎng)站的基數(shù)很大,它們涉及地方門戶、機構(gòu)事務(wù)、企業(yè)宣傳、科技情報、資訊傳播等眾多領(lǐng)域,以圖文內(nèi)容服務(wù)為主,蘊含海量的信息.另一方面,雖然搜索引擎用戶多、使用率高、搜索結(jié)果量大,但是只有排名靠前的搜索結(jié)果被用戶訪問,排名越靠后則訪問量驟降.目前,推薦引擎技術(shù)逐漸能夠解讀用戶從而實現(xiàn)精準推薦,但主要應(yīng)用于網(wǎng)上購物平臺、網(wǎng)頁廣告投放等方面,需要的是中小網(wǎng)站所不具備的強大技術(shù)支持和運營成本.因此,SEO(Search Engine Optimization)仍是當前中小網(wǎng)站提升搜索結(jié)果排名的主要方法.
SEO需要對網(wǎng)站進行文本內(nèi)容、代碼結(jié)構(gòu)等調(diào)整和優(yōu)化,改進網(wǎng)站在搜索引擎中的關(guān)鍵詞排名最是重要的環(huán)節(jié),需要對關(guān)鍵詞進行關(guān)注量分析、競爭對手分析、關(guān)鍵詞與網(wǎng)站相關(guān)性分析、關(guān)鍵詞布置、關(guān)鍵詞排名預(yù)測等工作[2].關(guān)鍵詞的獲得可通過程序初選提取和人工篩選決策相結(jié)合的方法來實現(xiàn).CMS(Content Management System)普遍帶有文章關(guān)鍵詞提取組件,利用程序初選可節(jié)省大量的時間和人力,但選擇結(jié)果的優(yōu)劣會影響人工篩選決策環(huán)節(jié),最終影響網(wǎng)站的搜索引擎排名.中小網(wǎng)站絕大多數(shù)基于CMS進行二次開發(fā)創(chuàng)建,例如僅基于DedeCMS的安裝量就達70萬份[3].所以,優(yōu)化CMS系統(tǒng)的文章關(guān)鍵詞提取組件,能讓中小網(wǎng)站廣泛受益.
本文的主要工作是:研究DedeCMS的文章關(guān)鍵詞提取組件,分析和優(yōu)化算法,找到改進的思路和方法,提出可行的解決方案.
關(guān)鍵詞提取屬于自然語言處理領(lǐng)域中的綜合應(yīng)用.在自然語言中,類似英文文本信息的單詞與單詞之間有空格分隔,但中文文本信息沒有,而且中文詞語沒有清晰的定義,所以中文是自然語言中的較難處理的語類.要獲得關(guān)鍵詞最基礎(chǔ)工作是先將由漢字連續(xù)組成的字串切分為詞的序列,即進行中文分詞.目前技術(shù)較成熟、使用較廣的中文分詞方法主要包括機械分詞法和基于統(tǒng)計的分詞法[4].
(1)機械分詞法是基于詞串匹配的分詞方法,按照一定的策略將待分析的漢字串與一個“充分大的”詞典中的詞條進行匹配,若在詞典中找到對應(yīng)的詞,則匹配成功(識別出一個詞).其優(yōu)點是分詞速度快,實用性強,算法簡單且易于實現(xiàn),但是詞典的完備性不能得到保證,歧義處理能力較弱,分詞效果不夠理想.代表算法是最大正向匹配分詞法(FMM)[5]及其衍生算法.
(2)基于統(tǒng)計的分詞法通過統(tǒng)計語料庫中漢字共現(xiàn)頻率等相關(guān)信息,定量描述漢字之間的結(jié)合緊密度,作為詞語切分依據(jù).該方法不僅考慮了句子中詞語出現(xiàn)的頻率信息,同時也考慮到詞語與上下文的關(guān)系,具備較好的學習能力,對歧義詞和未登錄詞(OOV)的識別有良好的效果,使得中文分詞準確度比之前其他方法有了很大的提升,但處理速度相對較慢[6].相關(guān)模型有最大概率分詞模型、最大熵分詞模型、NGram元分詞模型等[7].
鑒于兩種分詞方法優(yōu)劣互補,一些學者提出了基于機械和統(tǒng)計相結(jié)合的分詞方法:先采用機械分詞法或其改進方法進行快速的中文粗分,再采用統(tǒng)計的方法進行歧義消解,提高分詞準確性.綜合方法保證分詞準確率的同時,也兼具較快的分詞速度,但實現(xiàn)算法比較復(fù)雜.相關(guān)算法有回溯正向匹配法[8]、基于正向最大匹配的概率分詞算法[9]等.
一般分詞系統(tǒng)的處理工作流程,如圖1所示:
圖1 分詞處理流程圖
經(jīng)過對DedeCMS的源文件進行分析,關(guān)鍵詞提取組件分別由五部分文件組成,具體如表1所示:
表1 DedeCMS關(guān)鍵詞提取組件列表
(1)輸入文件:網(wǎng)站后臺提供內(nèi)容文檔添加/編輯時的操作界面,存儲文章并將漢字串作為變量賦值給處理文件;
(2)處理文件:從輸入文件中得到需要分詞的漢字串進行粗分,然后對粗分的短句子進行二次逆向最大匹配法(RMM)的方法進行分詞,分詞后對分詞結(jié)果進行優(yōu)化,得到最終的分詞結(jié)果.執(zhí)行過程中需要調(diào)入詞典文件進行檢測對比;
(3)詞典文件:一個unicode字符格式的詞語庫,采用類似哈希(Hash)的數(shù)據(jù)結(jié)構(gòu)進行存儲,對于比較短的字符串分詞,只需要占極小的資源,比其他一次性載入所有詞條的實際性要高得多,但詞典容量大小會影響分詞執(zhí)行的速度.在處理文件執(zhí)行過程中被調(diào)用;
(4)數(shù)據(jù)庫/表:存儲由處理文件提取出的關(guān)鍵詞,記錄在keywords字段中,提供前端頁面調(diào)用;
(5)輸出語句/文件:網(wǎng)站前端文章頁面采用{dede:field.keywords/}標記調(diào)用對應(yīng)同ID的關(guān)鍵詞,可用在title標簽中以利于SEO;輸出在后臺article_edit.php頁面中重新編輯或者article_keywords_main.php頁面中批量編輯;
結(jié)合表1的標記,DedeCMS的關(guān)鍵詞提取組件工作的數(shù)據(jù)流圖如圖2所示:
圖2 數(shù)據(jù)流圖
組件的優(yōu)化可從上述文件分別進行.首先,使用一些快速方法就能提高關(guān)鍵詞的質(zhì)量.例如:在后臺的文章編輯頁面(article_edit.php)顯示了組件所生成的關(guān)鍵詞,可手動進行修改.同時還可以修改組件生成關(guān)鍵詞的個數(shù),讓該頁面呈現(xiàn)更多的關(guān)鍵詞以利于人工篩選[10].在關(guān)鍵詞批量編輯頁面(article_keywords_main.php)中,整體刪除或禁用某些無用的關(guān)鍵詞,給保留的關(guān)鍵詞添加鏈接地址,也能較好的利于SEO.
其次,處理文件splitword.class.php采用的是機械分詞方法,它的兩個核心內(nèi)容(詞典結(jié)構(gòu)和分詞算法)都有可優(yōu)化的方面:
(1)詞典優(yōu)化
base_dic_full.dic(主詞典)文件收錄了175406個詞(含詞性、詞頻),但它與words_addons.dic(輔助詞典)文件已經(jīng)四年沒有更新,很多新詞沒有收錄顯然會影響分詞的效果.解決的辦法是更新或者替換原詞典:
①更新詞典需要將原詞典反編譯成可編輯的.txt類型文件,按“詞,詞頻,詞性”的格式添加新詞,再編譯成新詞典.編譯程序核心代碼如下:
DedeCMS源程序中未提供該編譯組件,可以通過使用第三方phpanalysis組件[11]來實現(xiàn).
②可將其他開源分詞系統(tǒng)的詞典按格式轉(zhuǎn)換后替換原詞典.本文通過多方面的比較,選擇采用NLPCN包含3669216個詞匯的詞典[12],它包含了很多新詞,詞量是原詞典的21倍,文件大小適中.
另外,增加詞量也造成詞典文件的增大,通用的詞典是無法兼顧多專業(yè)領(lǐng)域詞匯的收錄問題[13].對于缺乏本專業(yè)詞典的站長,可以先整理出足夠大的專業(yè)語料文件,再使用開源系統(tǒng)進行詞典的創(chuàng)建.例如使用Stanford Word Segmenter進行分詞,再使用Stanford POS Tagger標注詞性,最后使用編程語言統(tǒng)計詞頻而得到.
(2)分詞處理程序(算法)優(yōu)化
分詞處理文件splitword.class.php關(guān)閉或調(diào)低了一些預(yù)留參數(shù),以節(jié)省網(wǎng)站在低配置虛擬主機空間的資源消耗,但也損失了部分功能和分詞的準確性.splitword.class.php可開啟或調(diào)整項如下表2所示:
表2 可優(yōu)化代碼列表
為檢測上文3.2優(yōu)化方法的有效性,采用原系統(tǒng)組件與優(yōu)化后組件分別處理同一文本(組)的方法,對比兩者在分詞效果、執(zhí)行消耗兩方面的情況.為避免CMS其他組件的影響,設(shè)計獨立測試程序?qū)崿F(xiàn)檢測需求,調(diào)用splitword.class.php參數(shù)接口,其他代碼可參考引文[11]的程序,執(zhí)行消耗的檢測關(guān)鍵代碼如下:
功能如程序截圖3所示:
圖3 測試程序界面
檢測環(huán)境包括:
①硬件配置:CPU Intel i5 M450、內(nèi)存4G、硬盤PLEXTOR PX-128M6S
②軟件配置:Windows 10系統(tǒng)、APMServ 5.2.6 Web服務(wù)器組件、DedeCMS-V5.7-UTF8-SP1源碼、Chrome 45.0瀏覽器
③網(wǎng)絡(luò)配置:Localhost無延遲
(1)分詞效果對比
從時政、科技、體育等各領(lǐng)域的文章隨機提取100句進行分詞操作,整理得到記錄片段如下表3所示:
表3 分詞效果記錄
續(xù)上表
(2)執(zhí)行消耗對比
選擇兩篇文章進行分詞操作,從輸出結(jié)果中獲得內(nèi)存使用和執(zhí)行時間情況,得到記錄如下表4所示:
表4 執(zhí)行消耗記錄
從記錄中發(fā)現(xiàn),在加載文章、初始化、載入詞典前三個階段,內(nèi)存使用和執(zhí)行時間都很少,幾乎可以忽略.在執(zhí)行分詞、輸入結(jié)果兩個階段,內(nèi)存使用相對增大,執(zhí)行分詞階段的時間也較長,而且優(yōu)化后組件的消耗比原系統(tǒng)組件要多,但都在可以接受的范圍,特別是對比較常見的2000字左右的文章.優(yōu)化后組件的消耗大的原因在于詞典文件較大,這與分詞效果形成了一種制衡關(guān)系.
實驗對比結(jié)果表明,經(jīng)過優(yōu)化后的組件確實能夠提高DedeCMS的關(guān)鍵詞提取效果.該系統(tǒng)的安裝量巨大,細小的調(diào)整和優(yōu)化也能產(chǎn)生廣泛的影響.在應(yīng)用方面,本文設(shè)想,對于源碼代碼優(yōu)化部分,網(wǎng)站管理員可手動修改或者官網(wǎng)提供系統(tǒng)更新補丁以方便在線升級.對于詞典部分,網(wǎng)站管理員自己整理更新有一定難度,可借鑒殺毒軟件模式,由官網(wǎng)進行整理并定期更新,由網(wǎng)絡(luò)空間服務(wù)商(IDC)存儲并為所轄的網(wǎng)站提供接口服務(wù).該模式能形成一種良好的鏈條關(guān)系,避免資源浪費,同時提升服務(wù)品質(zhì)和增加用戶粘性.在研究方面,DedeCMS的文章摘要生成效果還比較差,有較大改進空間,它的組件與關(guān)鍵詞提取組件有較大關(guān)聯(lián),可作為下一步研究的方向.
[1]CNNIC. 第36次中國互聯(lián)網(wǎng)絡(luò)發(fā)展狀況統(tǒng)計報告[EB/OL]. [2015-07-22]. http://www.cnnic.net.cn/hlwfzyj/hlwxzbg/hlwtjbg/201507/t20150722_52624.htm.
[2]百度百科. SEO[EB/OL]. [2015-08-19]. http://baike.baidu.com/view/1047.htm.
[3]百度百科. 織夢CMS[EB/OL]. [2014-12-29]. http://baike.baidu.com/subview/2208013/6159188.htm.
[4]周俊,鄭中華,張煒. 基于改進最大匹配算法的中文分詞粗分方法[J]. 計算機工程與應(yīng)用. 2014,(02):124-128.
[5]王瑞雷,欒靜,潘曉花,等.一種改進的中文分詞正向最大匹配算法[J].計算機應(yīng)用與軟件,2011,28(3):195-197.
[6]韓冬煦,常寶寶. 中文分詞模型的領(lǐng)域適應(yīng)性方法[J].計算機學報. 2015, 02期:272-281.
[7]江兆中.基于語境和停用詞驅(qū)動的中文自動分詞研究[D].合肥工業(yè)大學,2010.
[8]奉國和,鄭偉. 國內(nèi)中文分詞技術(shù)研究綜述[J].圖書情報工作,2011,第2期(2):41-45.
[9]何國斌,趙晶璐. 基于最大匹配的中文分詞概率算法研究[J]. 計算機工程. 2010,36(5):173-175.
[10]百度經(jīng)驗.dedecms技巧:關(guān)鍵字長度修改[EB/OL].[2011-12-23]. http://jingyan.baidu.com/article/14bd256e132923bb6d261218.html.
[11]IT柏拉圖. PHPAnalysis無組件分詞系統(tǒng)[EB/OL].[2014-11-27]. http://www.phpbone.com/phpanalysis/.
[12]NLPCN. 360萬中文詞庫包含詞性詞頻[EB/OL].[2014-08-13]. http://www.nlpcn.org/resource/25.
[13]修馳.適應(yīng)于不同領(lǐng)域的中文分詞方法研究與實現(xiàn)[D].北京工業(yè)大學,2013.