李爽
(貴州財經(jīng)大學(xué) 貴州省貴陽市 550003)
在互聯(lián)網(wǎng)時代,人們經(jīng)常在網(wǎng)絡(luò)上發(fā)布各種信息,而出于種種原因,人們需要提取信息中的關(guān)鍵詞。比如對于政府部門而言,他們需要了解信息是中是否包含一些敏感的關(guān)鍵詞;而企業(yè)需要結(jié)合市場調(diào)研的需求了解信息中是否包含某些關(guān)鍵詞;部分個人也結(jié)合自己的需求,需要在網(wǎng)絡(luò)中識別關(guān)鍵詞。現(xiàn)以在網(wǎng)絡(luò)上建立一個基于LSTM 的關(guān)鍵詞識別系統(tǒng),它能對網(wǎng)絡(luò)信息進(jìn)行快速的獲取及分析,并給出相應(yīng)的評估。
爬蟲的英語名稱為Spider,它又稱數(shù)據(jù)采集。這種工具的應(yīng)用就是模擬瀏覽器打開網(wǎng)頁,然后抓取網(wǎng)頁中的資源以后,分析提取需要的數(shù)據(jù)信息,爬蟲工具是人們提取關(guān)鍵詞的常用工具,為了滿足人們的需求,人們開發(fā)了各處各樣的爬蟲工具。該次應(yīng)用爬蟲工具為Heritrix 來建立關(guān)鍵詞提取系統(tǒng),它是應(yīng)用java 語言開發(fā)的,開源的網(wǎng)絡(luò)爬蟲。它的特點(diǎn)是應(yīng)用了模塊化的設(shè)計,允許用戶應(yīng)用控制器CrawlController 來協(xié)調(diào),建立自己的關(guān)鍵詞抓取邏輯。
建立基于LSTM 的關(guān)鍵詞提取流程:
(1)數(shù)據(jù)獲取,這一流程完成網(wǎng)頁的抓??;
(2)數(shù)據(jù)預(yù)處理,應(yīng)用一套規(guī)則對網(wǎng)頁文本進(jìn)行預(yù)處理,減少系統(tǒng)分析的負(fù)擔(dān);
(3)測試數(shù)據(jù),這是指通過對比,發(fā)現(xiàn)與預(yù)設(shè)的關(guān)鍵詞完全一致的字詞直接提交;
(4)訓(xùn)練數(shù)據(jù),將文本依次交給CBOW 和Skip-gram兩種訓(xùn)練模型、NLPIR-ICTCLAS 系統(tǒng)、LSTM 模型進(jìn)行處理,它們是能夠?qū)W習(xí)捕捉關(guān)鍵詞的模型;
(5)輸出結(jié)果,即它能能夠給出與之相近的關(guān)鍵詞及所在的網(wǎng)頁。這是基于 LSTM 的關(guān)鍵詞提取的流程,應(yīng)用這套流程,就可以以網(wǎng)絡(luò)爬蟲工具Heritrix 為基礎(chǔ),建立基于LSTM 的關(guān)鍵詞提取系統(tǒng)。
隨著社會向前發(fā)展,人們接受信息的方式發(fā)生了很大的變化,互聯(lián)網(wǎng)平臺成為人們接受信息的重要渠道。比如人們經(jīng)常通過新浪微博、今日頭條等網(wǎng)站接收信息。而為了滿足用戶接收信息的需求,互聯(lián)網(wǎng)站也會發(fā)布大量的信息。此時人們面對一個問題,從社會的角度分析,網(wǎng)站中是否出現(xiàn)了違規(guī)信息,這些信息的傳播可能會對社會造成不良的影響;從服務(wù)的角度分析,網(wǎng)站需要為用戶推送他們需要的信息,使他們能夠在第一時間發(fā)現(xiàn)自己關(guān)注的各種信息。無論是從監(jiān)督的角度,還是從服務(wù)的角度,社會的需求提出一個指向,人們需要關(guān)鍵詞提取系統(tǒng)。這是因為人工提取關(guān)鍵詞,雖然準(zhǔn)確度高,但是效率太低,人們需要智能化提取關(guān)鍵詞的方法,人們需要應(yīng)用相關(guān)算法智能提取關(guān)鍵詞的技術(shù),然后建立關(guān)鍵詞提取系統(tǒng)。
關(guān)鍵詞抽取方法分為兩種,一種是有監(jiān)督,一種是無監(jiān)督。有監(jiān)督是指將關(guān)鍵詞提取出來,計算機(jī)只需要對關(guān)鍵詞作出一個二分判斷,即根據(jù)字符對比,它是或者不是人們要求獲取的關(guān)鍵詞。這種方法要求人們建立一個詞表,然后計算機(jī)基于詞表來對比關(guān)鍵詞。這種方式需要人們花費(fèi)太多的時間、精力、成本構(gòu)建詞表,標(biāo)注語料,一旦人們有了新的關(guān)鍵詞提取需求,便需要擴(kuò)充詞表。這種方式受到各種制約,難以被廣泛應(yīng)用。無監(jiān)督則是基于統(tǒng)計特征抽取算法,然后對比詞圖模型來分析它是不是人們需要提取的關(guān)鍵詞,當(dāng)前人們已經(jīng)研發(fā)出各種詞圖模型抽取算法。LSTM 就是算法的一種,它是一種理論完備、實現(xiàn)簡單、性能優(yōu)良的詞圖模型。如果人們能夠建立一套需要提取關(guān)鍵詞的詞庫,那么它就能基于這套詞庫的基礎(chǔ)上開展機(jī)器學(xué)習(xí),然后以智能化的方式,依照詞圖模型來提取各種關(guān)鍵詞。
那么基于LSTM 的關(guān)鍵詞提取系統(tǒng)的應(yīng)用原理,實際上就是:建立一套系統(tǒng),讓系統(tǒng)能夠自動的獲取網(wǎng)站信息,并將網(wǎng)站中的信息視為文本信息,它將對文本信息進(jìn)行預(yù)處理;建立詞表,根據(jù)人們輸入的關(guān)鍵詞,建立關(guān)鍵詞的特征,在實際應(yīng)用中,漢語與英語的語言表達(dá)特征不同,人們需要結(jié)合這兩種語言的特點(diǎn)建立詞表;基于LSTM 建立詞圖模型,它是抓取關(guān)鍵詞的依據(jù);對系統(tǒng)進(jìn)行評價,對系統(tǒng)的技術(shù)應(yīng)用進(jìn)行微調(diào),讓應(yīng)用效果達(dá)到人們的關(guān)鍵詞提取需求。
受到時間、技術(shù)的限制,人們需要對數(shù)據(jù)進(jìn)行預(yù)處理,這一步的工作目的是確定提取關(guān)鍵詞的范圍和規(guī)則。結(jié)合這一次設(shè)計的需求,對數(shù)據(jù)進(jìn)行以下的預(yù)處理:
(1)時間的限制,該次設(shè)計將3 個月以內(nèi)的數(shù)據(jù)作為數(shù)據(jù)處理的范圍。
(2)限定數(shù)據(jù)分析的批次,即限定爬蟲抓取關(guān)鍵詞的周期,該次設(shè)計24 小時為一個周期,即每天完成一次關(guān)鍵詞的提取。
(3)設(shè)計數(shù)據(jù)規(guī)范化及去除無關(guān)數(shù)據(jù)或重復(fù)數(shù)據(jù),為了減少分析范圍,提高關(guān)鍵詞提取效率,現(xiàn)設(shè)計設(shè)計數(shù)據(jù)規(guī)范化及去除無關(guān)數(shù)據(jù)或重復(fù)數(shù)據(jù),將常見的無意義關(guān)鍵詞作為無關(guān)詞匯,比如“ok”、“同意”等。
為了能夠讓系統(tǒng)能夠自動的學(xué)習(xí)關(guān)鍵詞,有效的捕捉與之相似的詞匯,人們研發(fā)了相似詞匯聚類的技術(shù)。CBOW和Skip-gram 兩種訓(xùn)練模型就是這種技術(shù)應(yīng)用的典型,參看圖1,CBOW 模型能夠快速的根據(jù)上下文來預(yù)關(guān)鍵詞,而Skip-gram 模型則能根據(jù)關(guān)鍵詞來預(yù)測上下文。它們的算法都是以w(t)來分析 2a 個詞向量的方式來抓取關(guān)鍵詞。應(yīng)用了Word2vec 原理,它能夠逐漸的學(xué)習(xí)文本中各種關(guān)鍵詞的組合方式,從而讓關(guān)鍵詞的抓取更加準(zhǔn)確。
圖1: CBOW 和Skip-gram 兩種訓(xùn)練模型
在中文語境下,人們不僅提出要抓取英文關(guān)鍵詞,還提出抓取中文關(guān)鍵詞的需求。然而與英文不同,漢語詞語之間沒有界限。為了能夠?qū)W會提取中文文本的關(guān)鍵詞,現(xiàn)應(yīng)用NLPIR-ICTCLAS 系統(tǒng)來對中文文本進(jìn)行分詞處理。參看表1,這套系統(tǒng)收集了一套龐大的中文詞匯庫,它將詞匯進(jìn)行了分類處理,然后對漢語語言的詞匯進(jìn)行了編碼。將這套人工智能技術(shù)引入到系統(tǒng)中,能讓系統(tǒng)學(xué)會捕捉中文文本中的關(guān)鍵詞,并且這套系統(tǒng)的慶用既可以增加分詞獲取的準(zhǔn)確性,又確保分詞提取的效率。
表1: NLPIR-ICTCLAS 系統(tǒng)對中文文本進(jìn)行分詞處理(部分)
LSTM 模型是能長短時間記憶神經(jīng)網(wǎng)絡(luò) (Long Short Term Memory Neural Network, LSTM)的算法。是它是基于時間序列的鏈?zhǔn)叫问教崛£P(guān)鍵詞的算法。該次建立的LSTM模型主要涉及到計算過程如下:
(公式1)~(公式3)建立了遺忘門的規(guī)則,它分別對應(yīng)著時間、批次、規(guī)范化的約束。比如在中文文本模型中,為了有效的抓取關(guān)鍵詞,現(xiàn)設(shè)名詞“俄羅斯”作為關(guān)鍵詞,那么在“俄羅斯與烏克蘭進(jìn)行了一次交易”中,當(dāng)發(fā)現(xiàn)了“俄羅斯”這個名詞時,那么其它的名詞就會被遺忘。(公式4)與(公式5)建立了更新門的規(guī)則,即它能夠根據(jù)關(guān)鍵詞對后續(xù)的文本進(jìn)行預(yù)測,(公式4)中預(yù)測了關(guān)鍵詞是不是會出現(xiàn)。比如當(dāng)出現(xiàn)了“俄羅斯”這個關(guān)鍵詞后,它能自動預(yù)測出后面的詞性是什么,即預(yù)測出后面的文本是不是會出現(xiàn)關(guān)鍵詞。然而人們發(fā)現(xiàn)有時關(guān)鍵詞會出現(xiàn)一些變體,比如與“俄羅斯”有關(guān)的詞匯還包括:“俄”、“俄國”、“鵝”、“大鵝”,這些詞匯有可能是簡寫、有可能是繁寫、有可能是主觀因素或客觀因素寫錯了,這些變體詞匯實際上與關(guān)鍵詞是一個意思,為了抓住這些變體的詞匯,現(xiàn)應(yīng)用(公式6)進(jìn)行約束,應(yīng)用這一規(guī)則,就能夠結(jié)合規(guī)則,結(jié)合前后文語境來分析關(guān)鍵詞,從而分析出變體的關(guān)鍵詞。(公式6)是最后呈現(xiàn)關(guān)鍵詞抓取最后的計算結(jié)果。LSTM 模型是一種基于疊加的線性形式處理序列數(shù)據(jù)信息的模型,它的應(yīng)用優(yōu)點(diǎn)為避免梯度消失,支持較長周期的學(xué)習(xí)。
該次應(yīng)用Java語言完成代碼的編寫,該次的設(shè)計思想為:
(1)網(wǎng)頁獲取,應(yīng)用Jsoup.connect(url).get 語句來獲取網(wǎng)頁,然后應(yīng)用getElementsByClass()或者select()來提取源代碼。
(2)關(guān)鍵詞的設(shè)計,應(yīng)用keywords=的語句來輸入關(guān)鍵詞,應(yīng)用這一方式,能夠把關(guān)鍵字字符串和前面的網(wǎng)址連接起來。
(3)頁數(shù)變化的支持,應(yīng)用pagenum=來設(shè)定最多可以讀取幾頁網(wǎng)址,應(yīng)用這一設(shè)計,能夠?qū)⒍囗撁娴木W(wǎng)址拼接起來,合并處理。
(4)關(guān)鍵詞范圍的設(shè)計,應(yīng)用select(“div.zx-tl”)提取關(guān)鍵詞,實際上網(wǎng)頁的關(guān)鍵詞信息都在zx-tl 的div 塊標(biāo)簽里,那么將抓取范圍設(shè)計為getElementsByClass(“zx-tl”)。
(5)設(shè)置文章鏈接的范圍,實際上關(guān)鍵詞都在類名為artical-content 的div 塊里,那么應(yīng)用select(“div.articalcontent”)或getElementsByClass(“artical-content”)提取 關(guān)鍵詞。
(6)將文章的標(biāo)題和抓取的內(nèi)容寫入txt 文件。基于LSTM 的關(guān)鍵詞提取系統(tǒng)的代碼實現(xiàn)(部分)如圖2 所示。
圖2: 基于LSTM 的關(guān)鍵詞提取系統(tǒng)的代碼實現(xiàn)(部分)
為了說明基于LSTM 的關(guān)鍵詞提取系統(tǒng)的分句提取特點(diǎn)分析,現(xiàn)應(yīng)用這一系統(tǒng)來尋找:“新冠肺炎”這一關(guān)鍵詞。該次在鳳凰網(wǎng)的新聞版塊抓取了5000 個網(wǎng)頁,然后獲得了分句總計182902 個,統(tǒng)計分句頻率94573 個?,F(xiàn)對抓取的分句進(jìn)行分析:
(1)分句重復(fù)性比較高,它抓取了大量表述比較相似的分句,這些分句的表達(dá)比較相近。由此可以看到,這一次的系統(tǒng)能夠抓出與預(yù)先輸入非常相似的句子。
(2)能夠抓取句子中存在語病的句子,有些用戶寫句子的時候,出現(xiàn)了寫錯字、寫漏字的句子都被抓出來了。由此可以看到系統(tǒng)具有一定的學(xué)習(xí)效果,它能夠結(jié)合語境分析出與關(guān)鍵詞相關(guān)的句子。
(3)能夠抓住簡繁體不一致的句子,這與應(yīng)用了智能化的NLPIR-ICTCLAS 系統(tǒng)有關(guān),它將簡繁體關(guān)鍵詞關(guān)聯(lián),于是它能識別出簡繁不一致的句子。
分析剛才提取網(wǎng)頁中關(guān)鍵詞提取的準(zhǔn)確度,統(tǒng)計結(jié)果如表2:從統(tǒng)計的結(jié)果中可以看到,它統(tǒng)計字級別的特殊為90.8%,即它統(tǒng)計出現(xiàn)了“新冠肺炎”這四個相同字的準(zhǔn)確率非常高。統(tǒng)計單詞級別的特殊為85.8%,即它統(tǒng)計出現(xiàn)了“新冠”、“肺炎”這樣相同的詞匯準(zhǔn)確率比字的準(zhǔn)確率略低。統(tǒng)計字詞級別的特征準(zhǔn)確率為87.6%,即它統(tǒng)計出現(xiàn)了“新冠肺炎”中任意出現(xiàn)了一個字,然后出現(xiàn)了與這個“新冠肺炎”相似語境的詞匯,比如“非典型肺炎”這樣詞匯也會被抓取出來,它的準(zhǔn)確率比基于詞級別的特征詞匯略高,卻低于字級別的特征。統(tǒng)計出現(xiàn)了單詞級別的特征準(zhǔn)確率為88.8%,比如該次抓取了“非典型肺炎”,系統(tǒng)認(rèn)為它與“新冠肺炎”十分相似,于是把它作為關(guān)鍵詞提取出來。由實驗可以看到,系統(tǒng)對于“字”的識別準(zhǔn)確率高于“詞”,然后抓取的準(zhǔn)確率還是能夠達(dá)到人們的要求。
表2: 關(guān)鍵詞提取的準(zhǔn)確度
該次應(yīng)用了Heritrix 來建立關(guān)鍵詞提取系統(tǒng),應(yīng)用了數(shù)據(jù)獲取的預(yù)處理技術(shù)、Word2vec 原理、NLPIR-ICTCLAS 系統(tǒng)中分詞提取及映射的系統(tǒng)、LSTM 模型作為關(guān)鍵詞的提取技術(shù),應(yīng)用Java 語言完成代碼的編寫,通過測試,發(fā)現(xiàn)它對分句及關(guān)鍵詞的提取準(zhǔn)確率良好,能夠達(dá)到人們的需求。這一系統(tǒng)的應(yīng)用,能夠滿足部分群體對出現(xiàn)“關(guān)鍵詞”網(wǎng)頁獲取的需求,取得較好的應(yīng)用效果。