王曉迪



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