王曉迪
摘 要:傳統(tǒng)的基于搜索日志的查詢推薦方法無法快速有效處理和存儲海量日志信息,無法抓住用戶興趣特點。為此,融合網(wǎng)絡(luò)爬蟲、數(shù)據(jù)挖掘和自然語言處理技術(shù)等多種方法,在原有查詢?nèi)罩緮?shù)據(jù)基礎(chǔ)上進(jìn)一步爬取和挖掘,基于騰訊AI意圖分析和自然語言處理技術(shù),提出一種新的推薦詞生成方法。實驗結(jié)果表明,該方法與單純基于查詢意圖的推薦和單純基于相似度計算與聚類的推薦相比,用戶查詢準(zhǔn)確性提升3%,能更加高效準(zhǔn)確地為用戶提供快速檢索服務(wù),提升了搜索引擎的用戶體驗。
關(guān)鍵詞:搜索引擎; 查詢意圖;數(shù)據(jù)挖掘;爬蟲;查詢推薦
DOI:10. 11907/rjdk. 201290
中圖分類號:TP312文獻(xiàn)標(biāo)識碼:A 文章編號: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次《中國互聯(lián)網(wǎng)絡(luò)發(fā)展統(tǒng)計報告》,截至2019年6月我國搜索引擎用戶規(guī)模達(dá)6.95億,較 2018年底增加 1 338 萬;搜索引擎使用率為 81.3%,較 2018 年底下降 0.9 個百分點[1]。為滿足用戶搜索信息需求,搜索引擎普遍開始使用查詢推薦功能幫助用戶構(gòu)造更加完善的查詢詞,比如,Google檢索結(jié)果頁面中的“xx的相關(guān)搜索”,百度檢索結(jié)果頁面中的“相關(guān)搜索”,查詢推薦功能方便用戶更好地查詢。目前查詢推薦功能研究大多基于用戶搜索日志進(jìn)行,關(guān)鍵是要解決高效分析處理與存儲海量日志信息以及準(zhǔn)確抓住用戶興趣特點這兩個要點。基于以上分析,本文融合網(wǎng)絡(luò)爬蟲、數(shù)據(jù)挖掘和自然語言處理等多種方法,提出一種新的查詢推薦方法。實驗結(jié)果表明,該方法能提高用戶查詢效率和準(zhǔn)確性,提升搜索引擎的用戶體驗。
1 相關(guān)工作
查詢推薦是一種實現(xiàn)用戶與搜索引擎進(jìn)行交互的檢索詞理解技術(shù)[2],其主要思想是通過對用戶提交的查詢詞進(jìn)行相似度計算,把與用戶提交的查詢詞相關(guān)的檢索詞推薦給用戶。當(dāng)用戶對搜索引擎返回的結(jié)果不滿意且推薦查詢中有更能表達(dá)其意思的檢索詞時,用戶會選擇重新檢索,有助于為用戶提供更高質(zhì)量的檢索服務(wù)。張曉娟[2]首先通過用戶提交的歷史查詢構(gòu)建表征用戶興趣的個性化喜好,然后利用查詢詞嵌入技術(shù)得到該查詢詞上下文信息的詞向量,最后通過詞向量進(jìn)一步構(gòu)建代表用戶喜好的向量,從而基于詞向量與用戶喜好的向量生成候選推薦詞; Fonseca等[3]利用基于關(guān)聯(lián)規(guī)則方式在用戶搜索日志中挖掘相關(guān)性查詢。每一次事務(wù)被看作由單個用戶提交的一次查詢會話,利用其它用戶提交的相關(guān)查詢或查詢擴展技術(shù)構(gòu)建當(dāng)前查詢,根據(jù)詞向量進(jìn)行聚類分析;Wen等[4]提出一種查詢推薦聚類模型,根據(jù)查詢詞距離、查詢字符串中的關(guān)鍵字、共同點擊的URL以及點擊的文檔距離建模;Beitzel等[5]研究用機器學(xué)習(xí)和計算機語義思想提出一種融合多分類的查詢分類方法。已有研究證實,搜索環(huán)境中用戶提交的查詢詞通常是簡短的,組成詞較少,缺乏信息表示,這時候搜索引擎往往很難準(zhǔn)確理解用戶意圖并返回用戶期望結(jié)果[6]。針對這類問題,Sahami[7] & Heilman提出一種新穎的核函數(shù)方法,通過用戶歷史日志中的相關(guān)文檔建模學(xué)習(xí),增強短查詢詞的信息表示;Jiang 等[8]將同一會話中當(dāng)前搜索之前所提交的查詢視為上下文,首先利用異構(gòu)嵌入方法將查詢以及查詢重構(gòu)以同態(tài)隱空間表示,然后利用具有注意機制的遞歸神經(jīng)網(wǎng)絡(luò),通過讀取同態(tài)查詢和重構(gòu)嵌入,對會話上下文進(jìn)行編碼,最后采用二值分類器和一個基于 RNN 的解碼器作為候選查詢鑒別器和生成器;Grbovic等[9]提出融合查詢中上下文與session中上下文的查詢嵌入算法實現(xiàn)查詢重寫;Daiz等[7]認(rèn)為局部嵌入不僅比全局嵌入能更好地捕獲特定主題語言的細(xì)微差別, 而且還能提高查詢擴展性能。
雖然查詢推薦技術(shù)在一定程度上改善搜索服務(wù),但仍存在一些問題,因為融合技術(shù)比較多。高效率處理日志提取用戶查詢意圖,根據(jù)用戶查詢意圖準(zhǔn)確為用戶生成查詢推薦詞還需深入研究。
2 實驗方法與過程
2.1 實驗流程
本文實驗分為離線處理階段和在線推薦階段,離線處理流程如圖1所示,在線推薦流程如圖2所示。
2.2 實驗環(huán)境搭建
本文結(jié)合網(wǎng)絡(luò)爬蟲和NLP技術(shù)實現(xiàn)推薦詞生成服務(wù),采用B/S結(jié)構(gòu),用戶通過瀏覽器訪問。采用NodeJS 搭建http服務(wù)器,使用puppteer構(gòu)建爬蟲引擎,使用hannlp工具包作為自然語言處理,分別結(jié)合Python 與JavaScript 語言優(yōu)勢合理構(gòu)建推薦詞生成服務(wù)。同時采用elasticsearch構(gòu)建開源搜索引擎,結(jié)合kibana 將數(shù)據(jù)可視化,直觀展示線上推薦結(jié)果。
本文實驗環(huán)境配置如表1所示。
2.3 實驗方法
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 庫進(jìn)行解碼,采用UTF-8編碼。
(2)數(shù)據(jù)清洗與篩選。Sougou Lab下載的用戶查詢?nèi)罩敬嬖跀?shù)據(jù)缺失、數(shù)據(jù)類型不正確以及一些違禁和不良詞匯等問題,需要對查詢?nèi)罩緮?shù)據(jù)進(jìn)行篩選。本文使用NLP分類算法對用戶查詢?nèi)罩緮?shù)據(jù)進(jìn)行分類,篩選出符合實驗條件的數(shù)據(jù),提高實驗結(jié)果的準(zhǔn)確性。
2.3.2 數(shù)據(jù)爬取與存儲
搜索日志中的url鏈接信息有時不足以代表用戶偏好,因此本文設(shè)計JS爬蟲引擎,爬取用戶點擊的url頁面上的關(guān)鍵信息,為生成推薦詞提供更多新的語料[10]。爬取流程如圖3所示[11-14]。
(1)設(shè)計JS爬蟲引擎爬取指定網(wǎng)站內(nèi)容。本文采用Google 開源的puppeteer庫提供的高級API通過DevTools 協(xié)議控制 Chromium,相比其它爬蟲引擎其優(yōu)勢如下:通過協(xié)議DevTools 控制 Chromium可以完整爬取網(wǎng)站的異步內(nèi)容,保障爬取內(nèi)容的完整性;puppeteer豐富的API可在頁面加載完成后即登陸爬取,還可執(zhí)行諸多復(fù)雜的爬取行為。
(2)采用多線程爬行方式。日志數(shù)量一般千萬級,單線程爬行效率較低,而且單線程頻繁爬取會觸發(fā)ip封禁、限制訪問等諸多反爬蟲機制。為此本文設(shè)計一種分布式爬蟲架構(gòu),單master節(jié)點負(fù)責(zé)任務(wù)分發(fā)與爬行數(shù)據(jù)存儲,多個slave節(jié)點負(fù)責(zé)實際爬行,此架構(gòu)下從節(jié)點可以水平擴容,提高爬行效率。
(3)數(shù)據(jù)提取與存儲。本實驗使用puppeteer爬行網(wǎng)站的meta標(biāo)簽相關(guān)信息,以及網(wǎng)頁內(nèi)的正文及網(wǎng)站推薦數(shù)據(jù)作為生成推薦詞補充詞庫。數(shù)據(jù)爬取后,通過puppeteer的選擇器API進(jìn)行數(shù)據(jù)提取。同時使用mongdb數(shù)據(jù)庫作為主要存儲數(shù)據(jù)庫,通過mongoose庫使用nodeJS進(jìn)行交互,批量存儲數(shù)據(jù)。
2.3.2 數(shù)據(jù)挖掘與意圖分析
搜索引擎交互流程:用戶根據(jù)需求自主輸入查詢詞進(jìn)行搜索,搜索引擎根據(jù)查詢詞返回相關(guān)搜索結(jié)果。有時候搜索結(jié)果不能滿足用戶要求:①大多數(shù)用戶輸入的查詢關(guān)鍵詞通常較短,對搜狗查詢?nèi)罩狙芯堪l(fā)現(xiàn),長度不超過3個詞的查詢占總查詢的93%左右,平均長度為1.85個詞,如此簡短的查詢詞有時不能準(zhǔn)確表達(dá)用戶真實意圖;②由于中文語言存在一詞多義或者歧義,搜索引擎不能很好識別,因此導(dǎo)致檢索出的結(jié)果不是用戶想要的內(nèi)容。本實驗采用騰訊AI開發(fā)平臺提供意圖分析服務(wù),依托騰訊強大的機器學(xué)習(xí)能力和文本挖掘引擎,以基礎(chǔ)NLP能力為支撐,準(zhǔn)確分析用戶查詢的真實意圖,然后基于查詢意圖為用戶提供更好的搜索結(jié)果。
2.3.3 NLP處理
(1)提取關(guān)鍵詞。本實驗采用TF-IDF計算方法對搜索日志和爬蟲數(shù)據(jù)組成的語料庫進(jìn)行中文分詞和詞頻統(tǒng)計,提取關(guān)鍵詞。作為信息檢索中詞語重要程度的衡量指標(biāo),TF-IDF被廣泛用于Lucene、Solr、Elasticsearch等搜索引擎,其計算公式如下:
其中,t指代單詞(term),d指代文檔(document),TF(t,d)表示t在d中出現(xiàn)的頻次,DF(t)代表包含t的文檔總數(shù)。
(2)重分二分聚類。聚類技術(shù)是本實驗重點使用的數(shù)據(jù)挖掘方法,基本思想是根據(jù)在數(shù)據(jù)中發(fā)現(xiàn)的對象信息,使用某種相似或鄰近算法,將數(shù)據(jù)對象分組,使得同組內(nèi)的對象相似,不同組中的對象不相似。本實驗采用改進(jìn)的重分二分聚類算法對關(guān)鍵詞進(jìn)行聚類,步驟如下:①挑選一個簇進(jìn)行劃分;②通過K均值算法將挑選出的簇劃分成兩個不同的子集;③重復(fù)步驟①和步驟②,直到產(chǎn)生足夠數(shù)量的簇。
聚類結(jié)束后,結(jié)合用戶意圖分析篩選出相關(guān)聚類結(jié)果。
2.3.4 推薦詞生成
當(dāng)用戶輸入關(guān)鍵詞查詢時,基于用戶輸入進(jìn)行意圖分析和聚類,給出若干個與用戶輸入關(guān)鍵詞相似度很近的詞。本文搭建ElasticSearch環(huán)境可視化展示數(shù)據(jù),用于直觀展示線上結(jié)果,如圖5所示。
3 實驗結(jié)果
3.1 實驗結(jié)果分析
基于搜索引擎的查詢推薦技術(shù),因為融合技術(shù)較多且推薦結(jié)果存在不確定性,所以目前為止還沒有評價實驗結(jié)果的統(tǒng)一方法。常用的評價主要分為人工評估和自動評估兩類。人工評估主要對系統(tǒng)推薦的結(jié)果手動進(jìn)行評估和判斷,消耗人力且嚴(yán)重依賴個人偏好;自動評估通常是通過分析查詢之間的語義關(guān)系或其它輔助工具對推薦結(jié)果進(jìn)行評估[15-19]。
本文使用P@N(Precision @ N)評價指標(biāo)作為評價標(biāo)準(zhǔn),其中P表示正確率,N表示返回的推薦結(jié)果中取前N個結(jié)果。本文對N取值1、3、5、10,分別通過人工評估和自動評估評測本文實驗效果。實驗中隨機選出500個查詢詞,根據(jù)推薦詞的相關(guān)性進(jìn)行打分,5分表示完全相關(guān),0分表示完全不相關(guān)。
(1)人工評估。為保證不受個人偏好影響,實驗取5個人打分的平均值,結(jié)果如表2所示。
(2)自動評估。采用搜索引擎的結(jié)果對查詢推薦詞進(jìn)行評估,根據(jù)推薦詞在搜索引擎檢索結(jié)果的排序評估推薦詞與查詢詞的相關(guān)性。分別評測搜索的首條結(jié)果、前3條結(jié)果、前5條結(jié)果、前10條結(jié)果,如表3所示。
3.2 問題分析
通過實驗發(fā)現(xiàn)存在以下問題:
(1)數(shù)據(jù)計算量較大。目前系統(tǒng)使用30天的搜索日志,加上通過爬蟲引擎爬取回來的數(shù)據(jù),因數(shù)據(jù)量巨大導(dǎo)致處理數(shù)據(jù)時間較長,嚴(yán)重影響效率。
(2)推薦結(jié)果中的bad case不能完全避免。本文使用基于搜索日志的推薦方法,因搜索日志的豐富性和可用性,所以對查詢推薦研究非常有效,但這種基于日志的推薦存在先天不足,主要是因為搜索日志的不清潔和用戶行為的不可解釋性,導(dǎo)致推薦結(jié)果中存在bad case,這種bad case只能通過策略來減少,包括更深刻理解用戶意圖、設(shè)立過濾機制、改進(jìn)算法等,但不能完全避免。
4 結(jié)語
從實驗結(jié)果可以看出,通過融合網(wǎng)絡(luò)爬蟲、數(shù)據(jù)挖掘與自然語言處理技術(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)行研究,效果會更好。
參考文獻(xiàn):
[1] 國家網(wǎng)信辦. 第44次中國互聯(lián)網(wǎng)絡(luò)發(fā)展統(tǒng)計報告[EB/OL]. http://www.cac.gov.cn/2019-08/30/c_1124938750.htm.
[2] 張曉娟. 利用嵌入方法實現(xiàn)個性化查詢重構(gòu)[J].? 情報學(xué)報, 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è)計與實現(xiàn)[D]. 北京:北京郵電大學(xué), 2019.
[11] 宋雅迪. 融合主題模型和詞嵌入的查詢優(yōu)化方法研究[D]. 北京:北方工業(yè)大學(xué),2019.
[12] 黃際洲. 搜索引擎中的實體推薦關(guān)鍵技術(shù)研究[D]. 哈爾濱:哈爾濱工業(yè)大學(xué),2019.
[13] 范阿琳. 基于搜索引擎日志挖掘的搜索滿意度評估方法研究[D]. 杭州:浙江大學(xué),2019.
[14] 張月. 基于ElasticSearch的分布式搜索引擎的設(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é)任編輯:杜能鋼)