本發(fā)明屬于網(wǎng)絡爬蟲和流式計算相關(guān)領(lǐng)域,尤其涉及一種基于流式計算的金融倉單風控信息爬取和篩選方法。
背景技術(shù):
金融倉單作為一種新型的倉儲交易和抵押方法,隨著互聯(lián)網(wǎng)應用的普及,受到各銀行和倉儲企業(yè)的廣泛應用。但銀行為了規(guī)避相應的風險,往往會選擇那些價格變動小、變現(xiàn)能力強、抗跌性好的產(chǎn)品作為融資對象,如固定資產(chǎn)、重金屬貨物等。而中小微企業(yè)這種類型的抵押產(chǎn)品較小,通常為大宗類產(chǎn)品,產(chǎn)品種類較多,產(chǎn)品價格與當前市場價格有緊密聯(lián)系。銀行受限于技術(shù)限制,難以對所有貨物的市場價格進行統(tǒng)計,也無法對抵押貨物進行合理的估值,早成潛在的金融交易風險。
解決大宗類商品的貨物估值問題,首先需要獲取市場上該商品的價格信息,但由于海量數(shù)據(jù)、信息準確提取等因素的限制,目前還沒有針對金融倉單類型的高效網(wǎng)絡爬蟲算法。
另一方面,由于金融倉單中貨物價格具有一定的時效性,在某些情況下(如易變質(zhì)貨物估值),對實時性要求非常高,因此必須采用并行或分布式爬蟲技術(shù)。但現(xiàn)有網(wǎng)絡爬蟲技術(shù)中必然用到資源(如關(guān)鍵字、已爬取URL列表等)的共享和更新操作,采用并行的方法必然存在(1)共享資源的單節(jié)點熱點問題;(2)網(wǎng)絡傳輸?shù)臅r延問題;(3)資源更新鎖定對于性能的影響問題。這些問題導致現(xiàn)在有的并行(分布式)爬蟲方法,并不能使性能產(chǎn)生線性增長,導致爬蟲的實時性較低,無法滿足特定場景下金融倉單風控的需要。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是,提供一種基于流式計算的金融倉單風險信息爬取和篩選方法,以解決傳統(tǒng)方法在并行爬蟲方面實時性較低,金融倉單風控對貨物估值實時性要求高的問題。
為解決上述問題,本發(fā)明采用如下的技術(shù)方案:
一種基于流式計算的金融倉單風險信息爬取和篩選方法,包括以下步驟:
步驟S1、URL篩選:從Spout任務數(shù)據(jù)源獲得的URL,計算所述URL的Hash值并發(fā)往相應的節(jié)點,在所述節(jié)點上篩選待爬取URL和已爬取URL,若屬于其中一種,則將該URL舍棄;
步驟S2、頁面分析:對需要爬取的URL頁面的關(guān)鍵內(nèi)容進行解析和提取,獲得頁面的所有關(guān)鍵詞,計算提取每個關(guān)鍵詞的特征值,所述所有關(guān)鍵字的特征值組成該記錄的特征向量;
步驟S3、數(shù)值過濾:對關(guān)鍵詞和特征向量其中的數(shù)值信息進行提取,并判斷其數(shù)值信息是否位于價格置信區(qū)間當中,對于不在置信區(qū)間內(nèi)的價格信息直接舍棄;
步驟S4、關(guān)鍵詞過濾:將數(shù)值過濾后獲得該條記錄的關(guān)鍵詞,與不同類別關(guān)鍵詞列表進行匹配,根據(jù)相似度確定該條記錄發(fā)往對應類別及其所在節(jié)點;
步驟S5、特征向量匹配計算:將該記錄特征向量與該類別所有成員的特征向量進行相似度平均值計算;若相似度平均值低于第二預設(shè)閾值區(qū)間,則將該記錄特征向量發(fā)往其他類別所在節(jié)點,計算與不同類別的相似度平均值;
步驟S6、共享資源更新:根據(jù)特征向量匹配計算結(jié)果,對共享資源進行更新操作。
作為優(yōu)選,采用頁面解析技術(shù)和中文分詞技術(shù)對URL頁面的關(guān)鍵內(nèi)容進行解析和提取,獲得頁面的所有關(guān)鍵詞。
作為優(yōu)選,所述關(guān)鍵詞的特征值計算方法為TF*IDF,其中,TF代表該條記錄中每個關(guān)鍵詞詞頻,IDF代表該關(guān)鍵詞出現(xiàn)的記錄條數(shù)。
作為優(yōu)選,步驟S6具體為:通過計算該條記錄URL Hash值確定對應節(jié)點,鎖定和更新該節(jié)點上的已爬取URL列表;根據(jù)特征向量計算確定該條記錄所屬類別,鎖定并更新該類別的關(guān)鍵詞列表和類別特征向量。
作為優(yōu)選,步驟S4具體為:將該信息的關(guān)鍵詞列表發(fā)往各類別節(jié)點,與各類別關(guān)鍵詞列表進行相似度計算,根據(jù)計算結(jié)果與預設(shè)的第一閾值區(qū)間對比,進行相應處理:
如果與各類別關(guān)鍵詞列表計算后,相似度最大值仍低于預設(shè)第一閾值區(qū)間下限,則認為其與貨物價格信息相關(guān)性較低,同時舍棄;否則,將該信息發(fā)送到與其相似度最大的類別所在的節(jié)點。
作為優(yōu)選,在步驟S5中,如果特征向量相似度平均值大于預設(shè)第二閾值區(qū)間的上限,則認為該條信息屬于該類別,進行后續(xù)的鎖定更新操作,否則,將該信息及其特征向量發(fā)往其他類別進行相似度平均值計算,根據(jù)得到的特征向量相似度平均值進行以下相應處理:
如果與該類別的特征向量相似度平均值大于預設(shè)第二閾值區(qū)間上限,則認為該條信息屬于該類別,對該類別進行后續(xù)的鎖定更新操作;
如果與該類別特征向量相似度平均值最大值介于預設(shè)第二閾值區(qū)間上下限之間,則認為將會產(chǎn)生新的類別;
如果與該類別的特征向量相似度平均值小于預設(shè)第二閾值區(qū)間下限,則認為該條信息與貨物價格信息無關(guān),同時舍棄。
作為優(yōu)選,特征向量相似度計算采用余弦相似度匹配算法。
作為優(yōu)選,產(chǎn)生新的類別包括:類別關(guān)鍵詞列表以及類別特征向量庫。
本發(fā)明的基于流式計算技術(shù)將爬蟲過程解耦為多個子過程,并通過任務封裝、調(diào)配和流程控制,實現(xiàn)高并發(fā)場景下網(wǎng)絡爬蟲的高效實時處理;針對金融倉單風控場景,設(shè)計了匹配貨物價格信息的分布式多重過濾器,并通過不同節(jié)點的分類部署和近點處理原則,減少網(wǎng)絡傳輸開銷和共享資源更新對性能的影響,提高處理效率。
本發(fā)明的實現(xiàn)技術(shù)方案為:將網(wǎng)絡爬蟲過程分解為6個子過程:URL篩選、頁面分析、關(guān)鍵詞過濾、數(shù)值過濾、特征向量匹配過濾、資源更新。利用流式計算技術(shù),將各子過程封裝為不同類型邏輯任務。在不同物理節(jié)點實現(xiàn)任務配比(復雜任務配比任務數(shù)跟多)和數(shù)據(jù)流向控制,實現(xiàn)整體處理效率最大化,防止局部熱點;分布式多重過濾器通過分類部署方式實現(xiàn),即按照摘要庫中不同類別,對于特征向量和關(guān)鍵詞進行分節(jié)點部署,配合少量關(guān)鍵詞冗余盡可能將關(guān)鍵詞過濾、特征向量匹配和資源更新限制在一個物理節(jié)點當中,減少網(wǎng)絡傳輸開銷和共享資源更新鎖定對性能的影響。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下明顯的優(yōu)勢和有益效果:
(1)本發(fā)明利用流式計算技術(shù),實現(xiàn)了對網(wǎng)絡爬蟲過程的解耦,通過動態(tài)任務配比和數(shù)據(jù)流向控制,使串行的不同復雜度的任務能夠?qū)崟r處理,防止局部任務過載影響整體過程處理效率。同時,利用邏輯任務在不同節(jié)點的靈活部署,實現(xiàn)整體的負載均衡。
(2)本發(fā)明針對金融倉單風控應用需要,設(shè)計了多種過濾方法,以獲得更精準的爬蟲結(jié)果。同時,利用數(shù)值過濾和關(guān)鍵字過濾兩種快速過濾方法,提前剔除掉不符合要求的頁面,減輕了后端特征向量匹配計算的壓力,提高了整體效率。
(3)本發(fā)明采用按類別分節(jié)點存儲關(guān)鍵詞列表和特征向量的方法,將關(guān)鍵詞過濾、特征向量匹配和資源更新限制在一個物理節(jié)點當中,減少網(wǎng)絡傳輸開銷和因共享資源更新鎖定對性能的影響,進一步提升效率。
附圖說明
圖1為本發(fā)明所涉及方法的具體流程圖;
圖2為本發(fā)明基于流式計算框架的部署架構(gòu)圖。
具體實施方式
下面結(jié)合附圖和具體實施方式對本發(fā)明做進一步的描述。
如圖1所示,本發(fā)明基于流式計算的金融倉單風險信息爬取和篩選方法包括以下步驟:
步驟1,流式計算框架下網(wǎng)絡爬蟲任務分解。
根據(jù)流式計算框架,對網(wǎng)絡爬蟲整體過程進行解耦,分解為6個子過程:URL篩選、頁面分析、關(guān)鍵詞過濾、數(shù)值過濾、特征向量匹配過濾、資源更新。按照流式計算框架封裝6個子過程為6種類型邏輯子任務(Bolt類型任務)。另外,在流式計算框架還需要數(shù)據(jù)源邏輯任務(Spout類型任務)。
相同類型的邏輯子任務可以有多個,也可以部署到相同的物理節(jié)點上。圖2部署架構(gòu)圖中,節(jié)點4、5中各部署了兩個關(guān)鍵詞過濾任務,而節(jié)點1-3每個部署了1個URL篩選任務。不同類型任務一般不部署到相同的節(jié)點,圖2中頁面分析和數(shù)值過濾任務采用虛線框標記,表示其既可以與URL篩選任務同節(jié)點部署,也可分別部署。另外,關(guān)鍵詞過濾和特征向量匹配任務,由于本身已經(jīng)按照類別分節(jié)點部署,且在同一節(jié)點上保存了該類別內(nèi)部的共享資源,因此,將兩種類型的任務放置在同一節(jié)點。
圖2中僅是舉例說明不同類型任務配比和部分數(shù)據(jù)流向,實際運行過程中,根據(jù)任務復雜度可以動態(tài)增加或減少不同類型的邏輯任務。另外,利用流式框架中對于數(shù)據(jù)流向的控制,可以將數(shù)據(jù)發(fā)往指定的節(jié)點,支持后續(xù)兩種步驟的實現(xiàn):
1)URL Hash值計算,根據(jù)Hash值發(fā)送到不同Hash區(qū)間段所在節(jié)點;
2)待處理信息與各類別關(guān)鍵詞列表匹配指定正確的路由節(jié)點。
步驟2,配置和部署共享資源。
由于分布式處理中用到了大量的共享資源,且本發(fā)明方法為了提高效率,對共享資源采用了多種分節(jié)點存儲的方式。
1)、URL篩選任務用到的已爬取URL隊列和待爬取URL隊列,如圖2所示,按照URL的Hash值進行分節(jié)點存儲。
2)、關(guān)鍵詞列表和特征向量采用按類別存儲的方式,如圖2所示,不同類別的關(guān)鍵詞列表和特征向量庫單獨配置一個節(jié)點存儲,實現(xiàn)數(shù)據(jù)分流和并行處理。
步驟3,分布式URL篩選。
步驟1和步驟2屬于系統(tǒng)的整體配置,從本步驟開始才屬于流式計算過程中對每個URL的爬取和處理過程。
從Spout任務數(shù)據(jù)源獲得的URL,計算其Hash值,根據(jù)Hash值大小確定其所屬的分段Hash區(qū)間,將URL發(fā)往到相應的節(jié)點。在節(jié)點上完成待爬取URL和已爬取URL的篩選,若屬于其中一種,則說明該URL已經(jīng)爬取或者等待爬取,將該URL舍棄。
步驟4,頁面分析。
采用頁面主要完成兩個過程的處理:
1)、采用頁面解析技術(shù)和中文分詞技術(shù),需要爬取的URL頁面的關(guān)鍵內(nèi)容進行解析和提取,獲得頁面的所有關(guān)鍵詞。
2)、通過特征值計算方法TF*IDF,計算提取每個關(guān)鍵詞的特征值。其中TF代表該條記錄中每個關(guān)鍵詞詞頻,IDF代表該關(guān)鍵詞出現(xiàn)的記錄條數(shù)。提取的所有關(guān)鍵字的特征值組成該記錄的特征向量。
如圖2所示,為了減少網(wǎng)絡傳輸,且URL篩選任務量較低,頁面分析任務可與URL篩選任務部署到同一節(jié)點當中。
步驟5,數(shù)值過濾。
頁面分析獲得關(guān)鍵詞和特征向量后,對其中的數(shù)值信息進行提取,并判斷其數(shù)值信息是否位于“價格置信區(qū)間”(如0.001-10000)當中。對于不在置信區(qū)間內(nèi)的價格信息直接舍棄。
價格置信區(qū)間設(shè)定,初始值采用樣本訓練獲得區(qū)間的上下限,系統(tǒng)運行一段時間后,根據(jù)貨物種類判斷上下限閾值是否合理,例如,如果上限閾值過低,導致貴重貨物價格被濾除,則需要將閾值上限調(diào)高。
數(shù)值過濾計算量低,針對特定貨物價格所做的特定過濾,因此本發(fā)明中從部署圖圖2中,將其與頁面分析放置在同一節(jié)點中處理。
步驟6,關(guān)鍵詞過濾
數(shù)值過濾完成后,后續(xù)包括關(guān)鍵詞過濾任務在內(nèi)的其他處理都是根據(jù)貨物類別進行分類分節(jié)點處理。因此,關(guān)鍵詞過濾任務首先會將待處理記錄的關(guān)鍵詞與各類別的關(guān)鍵詞進行相似度計算,根據(jù)相似度結(jié)果進行“指定路由”。具體方法如下:
將該信息的關(guān)鍵詞列表發(fā)往各類別節(jié)點,與各類別關(guān)鍵詞列表進行相似度計算。即,統(tǒng)計信息關(guān)鍵詞在類別關(guān)鍵詞列表中出現(xiàn)的個數(shù),占該類別關(guān)鍵詞總數(shù)的百分比。根據(jù)計算結(jié)果與預設(shè)的第一閾值區(qū)間對比后,進行相應處理:
1)、如果與各類別關(guān)鍵詞列表計算后,關(guān)鍵詞相似度最大值仍低于第一閾值區(qū)間的下限,則認為其與貨物價格信息相關(guān)性較低,舍棄。
2)、其他情況,將該信息發(fā)送到與其相似度最大的類別所在的節(jié)點。不發(fā)往其他節(jié)點,后續(xù)特征向量匹配計算僅在該節(jié)點上完成。
步驟7,特征向量匹配
關(guān)鍵詞過濾完成后,該條信息已經(jīng)在某個類別所在的節(jié)點上。將該信息的特征向量與該類別所有的特征向量進行相似度計算,特征向量相似度計算采用余弦相似度匹配算法。根據(jù)結(jié)果進行相應處理:
1)、如果特征向量相似度平均值大于預設(shè)第二閾值區(qū)間的上限,則認為該條信息屬于該類別,進行后續(xù)的鎖定更新操作;
2)、其他情況,將該信息及其特征向量發(fā)往其他類別進行相似度計算,根據(jù)得到的特征向量相似度平均值進行相應處理:
a)、如果與該類別的特征向量相似度平均值大于預設(shè)第二閾值區(qū)間上限,則認為該條信息屬于該類別,對該類別進行后續(xù)的鎖定更新操作。
b)、如果與該類別特征向量相似度平均值最大值介于預設(shè)第二閾值區(qū)間上下限之間,則認為將會產(chǎn)生新的類別;產(chǎn)生新的類別包括:類別關(guān)鍵詞列表以及類別特征向量庫。
c)、如果與該類別的特征向量相似度平均值小于預設(shè)第二閾值區(qū)間下限,則認為該條信息與貨物價格信息無關(guān),舍棄。
步驟8,共享資源更新
特征向量匹配結(jié)束后,涉及到共享資源更新,包括以下3種情況:
1)、已爬取URL更新:采用與之前相同的方法,計算URL Hash值,根據(jù)鎖定Hash區(qū)間和所在的節(jié)點,鎖定該區(qū)間進行更新即可;
2)、已有類別更新:根據(jù)步驟7過程中,最終該信息位于哪個節(jié)點(類別),就對該節(jié)點上的類別的特征向量庫和關(guān)鍵詞列表進行鎖定并更新。由于該鎖定只針對1個類別和節(jié)點,所以對并行的性能影響較少。
3)、新類別產(chǎn)生:步驟7中有可能產(chǎn)生新的類別,該情況更新不需要鎖定已有的類別。只需要在新的節(jié)點上建立和部署該類別的關(guān)鍵詞列表和特征向量庫。
以上的更新過程和方法,盡可能將鎖定操作限制在本節(jié)點當中,防止對整體性能產(chǎn)生影響,從而有效的提高了整體的并行處理能力。
最后應說明的是:以上示例僅用以說明本發(fā)明而并非限制本發(fā)明所描述的技術(shù)方案;因此,盡管本說明書參照上述的示例對本發(fā)明已進行了詳細的說明,但是本領(lǐng)域的普通技術(shù)人員應當理解,仍然可以對本發(fā)明進行修改或等同替換;而一切不脫離發(fā)明的精神和范圍的技術(shù)方案及其改進,其均應涵蓋在本發(fā)明的權(quán)利要求范圍當中。