王曉迪
摘 要:傳統(tǒng)的基于搜索日志的查詢推薦方法無(wú)法快速有效處理和存儲(chǔ)海量日志信息,無(wú)法抓住用戶興趣特點(diǎn)。為此,融合網(wǎng)絡(luò)爬蟲、數(shù)據(jù)挖掘和自然語(yǔ)言處理技術(shù)等多種方法,在原有查詢?nèi)罩緮?shù)據(jù)基礎(chǔ)上進(jìn)一步爬取和挖掘,基于騰訊AI意圖分析和自然語(yǔ)言處理技術(shù),提出一種新的推薦詞生成方法。實(shí)驗(yàn)結(jié)果表明,該方法與單純基于查詢意圖的推薦和單純基于相似度計(jì)算與聚類的推薦相比,用戶查詢準(zhǔn)確性提升3%,能更加高效準(zhǔn)確地為用戶提供快速檢索服務(wù),提升了搜索引擎的用戶體驗(yàn)。
關(guān)鍵詞:搜索引擎; 查詢意圖;數(shù)據(jù)挖掘;爬蟲;查詢推薦
DOI:10. 11907/rjdk. 201290
中圖分類號(hào):TP312文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2020)010-0076-04
Abstract: In order to improve the traditional search log-based query recommendation method which can not deal with and store massive log information quickly and effectively, and can not grasp the characteristics of users interests, this paper combines several methods such as web crawler, data mining and natural language processing technology, further crawling and mining on the basis of the original query log data. Based on Tencent AI intention analysis and natural language processing technology, a new method of generating recommendation words is proposed. The experimental results show that this method is more accurate and efficient than the recommendation based on query intention and the recommendation based on similarity calculation and clustering. By the method proposed in this paper, the query accuracy of users is improved by 3%, which significantly improves the user experience of search engines.
Key Words:search engine;query intent;data mining;crawler; query recommendation
0 引言
搜索引擎是獲取信息的重要工具。據(jù)第44次《中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展統(tǒng)計(jì)報(bào)告》,截至2019年6月我國(guó)搜索引擎用戶規(guī)模達(dá)6.95億,較 2018年底增加 1 338 萬(wàn);搜索引擎使用率為 81.3%,較 2018 年底下降 0.9 個(gè)百分點(diǎn)[1]。為滿足用戶搜索信息需求,搜索引擎普遍開始使用查詢推薦功能幫助用戶構(gòu)造更加完善的查詢?cè)~,比如,Google檢索結(jié)果頁(yè)面中的“xx的相關(guān)搜索”,百度檢索結(jié)果頁(yè)面中的“相關(guān)搜索”,查詢推薦功能方便用戶更好地查詢。目前查詢推薦功能研究大多基于用戶搜索日志進(jìn)行,關(guān)鍵是要解決高效分析處理與存儲(chǔ)海量日志信息以及準(zhǔn)確抓住用戶興趣特點(diǎn)這兩個(gè)要點(diǎn)?;谝陨戏治觯疚娜诤暇W(wǎng)絡(luò)爬蟲、數(shù)據(jù)挖掘和自然語(yǔ)言處理等多種方法,提出一種新的查詢推薦方法。實(shí)驗(yàn)結(jié)果表明,該方法能提高用戶查詢效率和準(zhǔn)確性,提升搜索引擎的用戶體驗(yàn)。
1 相關(guān)工作
查詢推薦是一種實(shí)現(xiàn)用戶與搜索引擎進(jìn)行交互的檢索詞理解技術(shù)[2],其主要思想是通過(guò)對(duì)用戶提交的查詢?cè)~進(jìn)行相似度計(jì)算,把與用戶提交的查詢?cè)~相關(guān)的檢索詞推薦給用戶。當(dāng)用戶對(duì)搜索引擎返回的結(jié)果不滿意且推薦查詢中有更能表達(dá)其意思的檢索詞時(shí),用戶會(huì)選擇重新檢索,有助于為用戶提供更高質(zhì)量的檢索服務(wù)。張曉娟[2]首先通過(guò)用戶提交的歷史查詢構(gòu)建表征用戶興趣的個(gè)性化喜好,然后利用查詢?cè)~嵌入技術(shù)得到該查詢?cè)~上下文信息的詞向量,最后通過(guò)詞向量進(jìn)一步構(gòu)建代表用戶喜好的向量,從而基于詞向量與用戶喜好的向量生成候選推薦詞; Fonseca等[3]利用基于關(guān)聯(lián)規(guī)則方式在用戶搜索日志中挖掘相關(guān)性查詢。每一次事務(wù)被看作由單個(gè)用戶提交的一次查詢會(huì)話,利用其它用戶提交的相關(guān)查詢或查詢擴(kuò)展技術(shù)構(gòu)建當(dāng)前查詢,根據(jù)詞向量進(jìn)行聚類分析;Wen等[4]提出一種查詢推薦聚類模型,根據(jù)查詢?cè)~距離、查詢字符串中的關(guān)鍵字、共同點(diǎn)擊的URL以及點(diǎn)擊的文檔距離建模;Beitzel等[5]研究用機(jī)器學(xué)習(xí)和計(jì)算機(jī)語(yǔ)義思想提出一種融合多分類的查詢分類方法。已有研究證實(shí),搜索環(huán)境中用戶提交的查詢?cè)~通常是簡(jiǎn)短的,組成詞較少,缺乏信息表示,這時(shí)候搜索引擎往往很難準(zhǔn)確理解用戶意圖并返回用戶期望結(jié)果[6]。針對(duì)這類問(wèn)題,Sahami[7] & Heilman提出一種新穎的核函數(shù)方法,通過(guò)用戶歷史日志中的相關(guān)文檔建模學(xué)習(xí),增強(qiáng)短查詢?cè)~的信息表示;Jiang 等[8]將同一會(huì)話中當(dāng)前搜索之前所提交的查詢視為上下文,首先利用異構(gòu)嵌入方法將查詢以及查詢重構(gòu)以同態(tài)隱空間表示,然后利用具有注意機(jī)制的遞歸神經(jīng)網(wǎng)絡(luò),通過(guò)讀取同態(tài)查詢和重構(gòu)嵌入,對(duì)會(huì)話上下文進(jìn)行編碼,最后采用二值分類器和一個(gè)基于 RNN 的解碼器作為候選查詢鑒別器和生成器;Grbovic等[9]提出融合查詢中上下文與session中上下文的查詢嵌入算法實(shí)現(xiàn)查詢重寫;Daiz等[7]認(rèn)為局部嵌入不僅比全局嵌入能更好地捕獲特定主題語(yǔ)言的細(xì)微差別, 而且還能提高查詢擴(kuò)展性能。
雖然查詢推薦技術(shù)在一定程度上改善搜索服務(wù),但仍存在一些問(wèn)題,因?yàn)槿诤霞夹g(shù)比較多。高效率處理日志提取用戶查詢意圖,根據(jù)用戶查詢意圖準(zhǔn)確為用戶生成查詢推薦詞還需深入研究。
2 實(shí)驗(yàn)方法與過(guò)程
2.1 實(shí)驗(yàn)流程
本文實(shí)驗(yàn)分為離線處理階段和在線推薦階段,離線處理流程如圖1所示,在線推薦流程如圖2所示。
2.2 實(shí)驗(yàn)環(huán)境搭建
本文結(jié)合網(wǎng)絡(luò)爬蟲和NLP技術(shù)實(shí)現(xiàn)推薦詞生成服務(wù),采用B/S結(jié)構(gòu),用戶通過(guò)瀏覽器訪問(wèn)。采用NodeJS 搭建http服務(wù)器,使用puppteer構(gòu)建爬蟲引擎,使用hannlp工具包作為自然語(yǔ)言處理,分別結(jié)合Python 與JavaScript 語(yǔ)言優(yōu)勢(shì)合理構(gòu)建推薦詞生成服務(wù)。同時(shí)采用elasticsearch構(gòu)建開源搜索引擎,結(jié)合kibana 將數(shù)據(jù)可視化,直觀展示線上推薦結(jié)果。
本文實(shí)驗(yàn)環(huán)境配置如表1所示。
2.3 實(shí)驗(yàn)方法
2.3.1 數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理流程見圖3。
(1)編碼轉(zhuǎn)換。Sougou Lab 下載的用戶查詢?nèi)罩揪幋a格式是gbk,為方便后續(xù)處理數(shù)據(jù),需要進(jìn)行編碼轉(zhuǎn)換。使用nodeJS的fs模塊讀寫文件,使用 NPM (nodeJS默認(rèn)包管理器)安裝 iconv-lite 庫(kù)進(jìn)行解碼,采用UTF-8編碼。
(2)數(shù)據(jù)清洗與篩選。Sougou Lab下載的用戶查詢?nèi)罩敬嬖跀?shù)據(jù)缺失、數(shù)據(jù)類型不正確以及一些違禁和不良詞匯等問(wèn)題,需要對(duì)查詢?nèi)罩緮?shù)據(jù)進(jìn)行篩選。本文使用NLP分類算法對(duì)用戶查詢?nèi)罩緮?shù)據(jù)進(jìn)行分類,篩選出符合實(shí)驗(yàn)條件的數(shù)據(jù),提高實(shí)驗(yàn)結(jié)果的準(zhǔn)確性。
2.3.2 數(shù)據(jù)爬取與存儲(chǔ)
搜索日志中的url鏈接信息有時(shí)不足以代表用戶偏好,因此本文設(shè)計(jì)JS爬蟲引擎,爬取用戶點(diǎn)擊的url頁(yè)面上的關(guān)鍵信息,為生成推薦詞提供更多新的語(yǔ)料[10]。爬取流程如圖3所示[11-14]。
(1)設(shè)計(jì)JS爬蟲引擎爬取指定網(wǎng)站內(nèi)容。本文采用Google 開源的puppeteer庫(kù)提供的高級(jí)API通過(guò)DevTools 協(xié)議控制 Chromium,相比其它爬蟲引擎其優(yōu)勢(shì)如下:通過(guò)協(xié)議DevTools 控制 Chromium可以完整爬取網(wǎng)站的異步內(nèi)容,保障爬取內(nèi)容的完整性;puppeteer豐富的API可在頁(yè)面加載完成后即登陸爬取,還可執(zhí)行諸多復(fù)雜的爬取行為。
(2)采用多線程爬行方式。日志數(shù)量一般千萬(wàn)級(jí),單線程爬行效率較低,而且單線程頻繁爬取會(huì)觸發(fā)ip封禁、限制訪問(wèn)等諸多反爬蟲機(jī)制。為此本文設(shè)計(jì)一種分布式爬蟲架構(gòu),單master節(jié)點(diǎn)負(fù)責(zé)任務(wù)分發(fā)與爬行數(shù)據(jù)存儲(chǔ),多個(gè)slave節(jié)點(diǎn)負(fù)責(zé)實(shí)際爬行,此架構(gòu)下從節(jié)點(diǎn)可以水平擴(kuò)容,提高爬行效率。
(3)數(shù)據(jù)提取與存儲(chǔ)。本實(shí)驗(yàn)使用puppeteer爬行網(wǎng)站的meta標(biāo)簽相關(guān)信息,以及網(wǎng)頁(yè)內(nèi)的正文及網(wǎng)站推薦數(shù)據(jù)作為生成推薦詞補(bǔ)充詞庫(kù)。數(shù)據(jù)爬取后,通過(guò)puppeteer的選擇器API進(jìn)行數(shù)據(jù)提取。同時(shí)使用mongdb數(shù)據(jù)庫(kù)作為主要存儲(chǔ)數(shù)據(jù)庫(kù),通過(guò)mongoose庫(kù)使用nodeJS進(jìn)行交互,批量存儲(chǔ)數(shù)據(jù)。
2.3.2 數(shù)據(jù)挖掘與意圖分析
搜索引擎交互流程:用戶根據(jù)需求自主輸入查詢?cè)~進(jìn)行搜索,搜索引擎根據(jù)查詢?cè)~返回相關(guān)搜索結(jié)果。有時(shí)候搜索結(jié)果不能滿足用戶要求:①大多數(shù)用戶輸入的查詢關(guān)鍵詞通常較短,對(duì)搜狗查詢?nèi)罩狙芯堪l(fā)現(xiàn),長(zhǎng)度不超過(guò)3個(gè)詞的查詢占總查詢的93%左右,平均長(zhǎng)度為1.85個(gè)詞,如此簡(jiǎn)短的查詢?cè)~有時(shí)不能準(zhǔn)確表達(dá)用戶真實(shí)意圖;②由于中文語(yǔ)言存在一詞多義或者歧義,搜索引擎不能很好識(shí)別,因此導(dǎo)致檢索出的結(jié)果不是用戶想要的內(nèi)容。本實(shí)驗(yàn)采用騰訊AI開發(fā)平臺(tái)提供意圖分析服務(wù),依托騰訊強(qiáng)大的機(jī)器學(xué)習(xí)能力和文本挖掘引擎,以基礎(chǔ)NLP能力為支撐,準(zhǔn)確分析用戶查詢的真實(shí)意圖,然后基于查詢意圖為用戶提供更好的搜索結(jié)果。
2.3.3 NLP處理
(1)提取關(guān)鍵詞。本實(shí)驗(yàn)采用TF-IDF計(jì)算方法對(duì)搜索日志和爬蟲數(shù)據(jù)組成的語(yǔ)料庫(kù)進(jìn)行中文分詞和詞頻統(tǒng)計(jì),提取關(guān)鍵詞。作為信息檢索中詞語(yǔ)重要程度的衡量指標(biāo),TF-IDF被廣泛用于Lucene、Solr、Elasticsearch等搜索引擎,其計(jì)算公式如下:
其中,t指代單詞(term),d指代文檔(document),TF(t,d)表示t在d中出現(xiàn)的頻次,DF(t)代表包含t的文檔總數(shù)。
(2)重分二分聚類。聚類技術(shù)是本實(shí)驗(yàn)重點(diǎn)使用的數(shù)據(jù)挖掘方法,基本思想是根據(jù)在數(shù)據(jù)中發(fā)現(xiàn)的對(duì)象信息,使用某種相似或鄰近算法,將數(shù)據(jù)對(duì)象分組,使得同組內(nèi)的對(duì)象相似,不同組中的對(duì)象不相似。本實(shí)驗(yàn)采用改進(jìn)的重分二分聚類算法對(duì)關(guān)鍵詞進(jìn)行聚類,步驟如下:①挑選一個(gè)簇進(jìn)行劃分;②通過(guò)K均值算法將挑選出的簇劃分成兩個(gè)不同的子集;③重復(fù)步驟①和步驟②,直到產(chǎn)生足夠數(shù)量的簇。
聚類結(jié)束后,結(jié)合用戶意圖分析篩選出相關(guān)聚類結(jié)果。
2.3.4 推薦詞生成
當(dāng)用戶輸入關(guān)鍵詞查詢時(shí),基于用戶輸入進(jìn)行意圖分析和聚類,給出若干個(gè)與用戶輸入關(guān)鍵詞相似度很近的詞。本文搭建ElasticSearch環(huán)境可視化展示數(shù)據(jù),用于直觀展示線上結(jié)果,如圖5所示。
3 實(shí)驗(yàn)結(jié)果
3.1 實(shí)驗(yàn)結(jié)果分析
基于搜索引擎的查詢推薦技術(shù),因?yàn)槿诤霞夹g(shù)較多且推薦結(jié)果存在不確定性,所以目前為止還沒有評(píng)價(jià)實(shí)驗(yàn)結(jié)果的統(tǒng)一方法。常用的評(píng)價(jià)主要分為人工評(píng)估和自動(dòng)評(píng)估兩類。人工評(píng)估主要對(duì)系統(tǒng)推薦的結(jié)果手動(dòng)進(jìn)行評(píng)估和判斷,消耗人力且嚴(yán)重依賴個(gè)人偏好;自動(dòng)評(píng)估通常是通過(guò)分析查詢之間的語(yǔ)義關(guān)系或其它輔助工具對(duì)推薦結(jié)果進(jìn)行評(píng)估[15-19]。
本文使用P@N(Precision @ N)評(píng)價(jià)指標(biāo)作為評(píng)價(jià)標(biāo)準(zhǔn),其中P表示正確率,N表示返回的推薦結(jié)果中取前N個(gè)結(jié)果。本文對(duì)N取值1、3、5、10,分別通過(guò)人工評(píng)估和自動(dòng)評(píng)估評(píng)測(cè)本文實(shí)驗(yàn)效果。實(shí)驗(yàn)中隨機(jī)選出500個(gè)查詢?cè)~,根據(jù)推薦詞的相關(guān)性進(jìn)行打分,5分表示完全相關(guān),0分表示完全不相關(guān)。
(1)人工評(píng)估。為保證不受個(gè)人偏好影響,實(shí)驗(yàn)取5個(gè)人打分的平均值,結(jié)果如表2所示。
(2)自動(dòng)評(píng)估。采用搜索引擎的結(jié)果對(duì)查詢推薦詞進(jìn)行評(píng)估,根據(jù)推薦詞在搜索引擎檢索結(jié)果的排序評(píng)估推薦詞與查詢?cè)~的相關(guān)性。分別評(píng)測(cè)搜索的首條結(jié)果、前3條結(jié)果、前5條結(jié)果、前10條結(jié)果,如表3所示。
3.2 問(wèn)題分析
通過(guò)實(shí)驗(yàn)發(fā)現(xiàn)存在以下問(wèn)題:
(1)數(shù)據(jù)計(jì)算量較大。目前系統(tǒng)使用30天的搜索日志,加上通過(guò)爬蟲引擎爬取回來(lái)的數(shù)據(jù),因數(shù)據(jù)量巨大導(dǎo)致處理數(shù)據(jù)時(shí)間較長(zhǎng),嚴(yán)重影響效率。
(2)推薦結(jié)果中的bad case不能完全避免。本文使用基于搜索日志的推薦方法,因搜索日志的豐富性和可用性,所以對(duì)查詢推薦研究非常有效,但這種基于日志的推薦存在先天不足,主要是因?yàn)樗阉魅罩镜牟磺鍧嵑陀脩粜袨榈牟豢山忉屝裕瑢?dǎo)致推薦結(jié)果中存在bad case,這種bad case只能通過(guò)策略來(lái)減少,包括更深刻理解用戶意圖、設(shè)立過(guò)濾機(jī)制、改進(jìn)算法等,但不能完全避免。
4 結(jié)語(yǔ)
從實(shí)驗(yàn)結(jié)果可以看出,通過(guò)融合網(wǎng)絡(luò)爬蟲、數(shù)據(jù)挖掘與自然語(yǔ)言處理技術(shù),可以更準(zhǔn)確地為用戶提供推薦詞。從生成的推薦詞結(jié)果可以看出,有的關(guān)鍵字關(guān)聯(lián)度很低,后續(xù)可進(jìn)一步優(yōu)化網(wǎng)絡(luò)爬蟲,提取相關(guān)度更高的內(nèi)容,還可結(jié)合深度學(xué)習(xí)進(jìn)行研究,效果會(huì)更好。
參考文獻(xiàn):
[1] 國(guó)家網(wǎng)信辦. 第44次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展統(tǒng)計(jì)報(bào)告[EB/OL]. http://www.cac.gov.cn/2019-08/30/c_1124938750.htm.
[2] 張曉娟. 利用嵌入方法實(shí)現(xiàn)個(gè)性化查詢重構(gòu)[J].? 情報(bào)學(xué)報(bào), 2018, 37(6): 621-630.
[3] GRBOVIC M, DJURIC N, RADOSAVLJEVIC V, et al. Context-and content-aware embeddings for query rewriting in sponsored search[C]. The 38th International ACM SIGIRConference on Research and Development in Information Retrieval.New York:ACM Press, 2015:383-392.
[4] ZAMANI H, CROFT W B.Estimating embedding vectors for queries[C]. Proceedings of the 2016 ACM International Conference on the Theory of Information Retrieval,2016:123-132.
[5] VAN GYSEL C,DE RIJKE M,WORRING M. Unsupervised efficient and semantic expertise retrieval[C]. Proceedings of the 25th International Conference on World Wide Web,2016:1342-1367.
[6] HAN S,DU L,SALAZAR E,et al. Dynamic rank factor m odel for text streams[C].? Proceedings of NIPS, 2014:2663-2671.
[7] DIAZ F,MITRA B,CRASWELL N. Query expansion with locallytrained word embeddings[C].? Proceedings of the 54th Annual Meeting of the Association for Computational Linguistics,2016:367-377.
[8] JIANG J Y, WANG W. RIN: reformulation inference network for context-aware query suggestion[C]. Proceedings of the 27th ACM International Conference on Information and Knowledge Management, New York: ACM Press, 2018: 197-206.
[9] VAN GYSEL C, DE RIJKE M, WORRING M. Unsupervisedefficient and semantic expertise retrieval[C]. Proceedings of the 25th International Conference on World Wide Web,2016:1069-1079.
[10] 趙康. 面向主題的網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京:北京郵電大學(xué), 2019.
[11] 宋雅迪. 融合主題模型和詞嵌入的查詢優(yōu)化方法研究[D]. 北京:北方工業(yè)大學(xué),2019.
[12] 黃際洲. 搜索引擎中的實(shí)體推薦關(guān)鍵技術(shù)研究[D]. 哈爾濱:哈爾濱工業(yè)大學(xué),2019.
[13] 范阿琳. 基于搜索引擎日志挖掘的搜索滿意度評(píng)估方法研究[D]. 杭州:浙江大學(xué),2019.
[14] 張?jiān)? 基于ElasticSearch的分布式搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京:北京交通大學(xué), 2019.
[15] SORDONI A,BENGIO Y,VAHABI H,et al. A hierarchical recurrent encoder-decoder for generative context-aware query suggestion[C]. Proceedings of the 24th ACM International on Conference on Information and Knowledge Management,2015:1022-1031.
[16] HUANG J Z,DING S Q, WANG H F,et al. Learning to recommend related entities with serendipity for web search users[J]. ACM Transactions on Asian and Low-Resource Langua,2018,55(3):624-635.
[17] CHE W X, ZHAO Y Y,GUO H L,et al.? Sentence compression for aspect-based sentiment analysis[J]. IEEE/ACM Transactions on Audio, Speech and Langua ,2017 (12):1051-1064.
[18] GUO L,CAI X,HAO F,et al.? Exploiting fine-grained co-authorship for personalized citation recommendation[J]. IEEE Access,2017(5):12714-12715.
[19] DAI T,ZHU L,CAI X,et al.? Explore semantic topics and author communities for citation recommendation in bipartite bibliographic network[J].? Journal of Ambient Intelligence&Humanized Computing, 2017,142(5):324-331.
(責(zé)任編輯:杜能鋼)