APP下载

基于搜索引擎的查询推荐算法研究

2020-12-01王晓迪

软件导刊 2020年10期
关键词:爬虫搜索引擎数据挖掘

王晓迪

摘 要:传统的基于搜索日志的查询推荐方法无法快速有效处理和存储海量日志信息,无法抓住用户兴趣特点。为此,融合网络爬虫、数据挖掘和自然语言处理技术等多种方法,在原有查询日志数据基础上进一步爬取和挖掘,基于腾讯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的相关搜索”,百度检索结果页面中的“相关搜索”,查询推荐功能方便用户更好地查询。目前查询推荐功能研究大多基于用户搜索日志进行,关键是要解决高效分析处理与存储海量日志信息以及准确抓住用户兴趣特点这两个要点。基于以上分析,本文融合网络爬虫、数据挖掘和自然语言处理等多种方法,提出一种新的查询推荐方法。实验结果表明,该方法能提高用户查询效率和准确性,提升搜索引擎的用户体验。

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.

(责任编辑:杜能钢)

猜你喜欢

爬虫搜索引擎数据挖掘
利用网络爬虫技术验证房地产灰犀牛之说
基于Python的网络爬虫和反爬虫技术研究
利用爬虫技术的Geo-Gnutel la VANET流量采集
基于并行计算的大数据挖掘在电网中的应用
大数据环境下基于python的网络爬虫技术
一种基于Hadoop的大数据挖掘云服务及应用
网络搜索引擎亟待规范
Nutch搜索引擎在网络舆情管控中的应用
基于Nutch的医疗搜索引擎的研究与开发
广告主与搜索引擎的双向博弈分析