`
fufeng
  • 浏览: 75374 次
社区版块
存档分类
最新评论

【转载】如何预测用户query意图

阅读更多

From http://www.searchtb.com/2011/01/how-to-predict-user-query-intent.html

 

有一个朋友问,一个用户搜索一个query是“百度”,怎么知道用户真正是想找什么呢。

我回答说,分析之前搜索这个query的用户点了些什么结果啊。

朋友继续问,如果没有用户点击呢。

呃,如果没有点击,这个问题就比较复杂了。整理了下思路,于是写成了本文。主要描述了关于如何预测用户query意图。希望会有所帮助。

首先我们的明确一个标准,如何判断我们对用户意图的猜测是正确的?

用户的思维是很发散的,也许今天搜索“葛优”,是想找“让子弹飞”,明天搜索相同的query,就是想找“非诚勿扰”。         我们确定了要在某个方面的query预测上做一个改进,那么我们首先的把标准定下来,依照这个标准来进行改进。

现在有很多对搜索系统的评价指标,如pv,ipv,ctr,搜索引导的后续转化率等可以量化的指标,这些指标是对搜索系统总体的评价。具体到用户意图预测上,标准很难确定,对于排序比较直观的就是进行side by side的评测,比较原有的效果和改进的效果,看是否会排序更优;对于导航,那我们可以看我们预测的类目和用户实际点的类目的占比,是否能有效降低用户点击非推荐类目的比率。

接下来,我们从2种情况下来回答这个问题,

如果我们已经有了一套完整的系统,有大量的用户访问

先从简单的说起,假设我们已经有了一个完整的搜索系统,有大量的用户访问,我们希望通过对用户query的预测来提高搜索体验。这样的系统的大概架构如下。

包括图所示的几个部分,

1 前端(f2e)

前端负责直接和用户进行交换,当收到用户搜索请求之后,往后端系统传递请求,并接收搜索引擎返回的结果,组织到网页上,展示给用户。

前端还肩负着一个重要的记录日志的工作,这个日志的记录,并不是apache的访问日志,这样的日志内容过于简单。如果要前端记录过多的日志,又会给服务器带来不小的压力。所以目前主要的手段是通过用户在页面上进行搜索或点击等行为时,调用javascript向指定的日志服务器,发送特征url来记录,这种url不会返回内容,仅仅为了给日志服务器添加记录。发送的url会包括从cookie中解析出的用户特有的数据。

2 Query处理

Query处理是线上服务系统,它是对用户意图进行预测后,对用户的搜索结果进行改进。在接收到前端的请求之后,会利用线下对query分析得到的数据,对用户的query和上下文环境进行分析,附加更多的条件到搜索引擎的请求命令之中。常见的Query处理,会有以下的一些类容,query改写,query分类预测,query的导航等。

Query处理这部分主要的意义在于,将用户的搜索query,翻译为对搜索引擎更适合查询串。在大多数情况下,用户使用搜索引擎是为了解决自己的问题,如果能直接获得答案,用户是不大愿意进行搜索的。

用户也许的问题是,“非诚勿扰2里面说的廖凡是谁”这样的一个问题,这样的问题直接搜索是不太会有会令用户比较满意的答案,(除非有向百度知道这样的系统已经存在了类似的问题)。有些用户就会考虑换个关键词试试,搜索下“廖凡”,看是否会有一些答案可以让自己满意。所以很大程度上是搜索引擎在教用户如何使用自己。但是并非所有的用户都对搜索系统如此的熟悉,那我们就需要考虑看看在我们搜索的结果里面效果不太好的query,分析它是怎么构成的。我们也许无法准确回答“非诚勿扰2里面说的廖凡是谁”,但是可以把其中最关键的信息抽取出来“非诚勿扰2”“廖凡”,并且,我们需要回答“是谁”这样的疑问问题。把这些信息传递给引擎,才会有更好的结果。

再例如,用户想找,“1000元左右的手机”,那么对于淘宝来说,可以把搜索的条件转化为800-1200价格限制范围的,手机类目下的宝贝,或者更进一步,把各种型号的手机,列在一起,进行参数的比较。

再深入一步,用户想找“舒淇在非诚勿扰2中用的手机”,如果我们可以把这个问题转化为对“朵唯S920”的搜索,那就是非常非常好的效果了,至于这个query如何对应到这个结果,也许后面的一些分析,能提供一些线索。

具体的实现,可以参考下面几点,

对query的线上处理,如果是较为hot的query,可以以查表为主,可以用hash表,trie树等进行查表,把在线下计算好的数据,通过查表的方式找到对应的结果,附加到给引擎的搜索条件上,并返回。

另外,可以把线下训练好的模型,在线上进行预测,一般的分类算法预测速度都比较快。可以对长尾的query,进行及时的预测。

也可以做一些规则,如我们上面举的例子,“1000元左右”,可以通过正则表达式进行识别,将其转为对应的搜索条件。这些规则如何来定呢,这是比较麻烦的一点,像这类的query,肯定是pv比较低的,属于长尾的query,这些query效果提升可能比较明显,但是对总体搜索系统效果影响会较小。这个问题比较尴尬,如果我们这类query处理的效果好的话,那用户会使用的更多;用户知道了这样的query效果不好,所以就换成了效果好的query。如果要做好规则,那就把长尾的这些query都拿出来,多看看,分下类,再结合实际的问题分类,总结出一些通用的规则,来进行优化。

3 搜索引擎

搜索引擎主要负责检索和排序,一般由一些倒排表和正排表组成。倒排表用于查找对应的文档id,能快速的检索出命中query的文档,在根据正排表来查对应id的数据。

一般将需要字符串类型的文档字段作为倒排表来进行检索,字符型的字段可以放在正排表中,在通过倒排表找到了满足条件的文档,再在正排表中进行过滤。

找到满足条件的文档后,再进行过滤,统计,并根据排序参数进行排序。

排序分为2个部分,一部分是文档自身的静态分,每个文档会有类似pagerank这样分数,另外一部分是还有和query相关的部分,会计算文档和query的关系,例如,query中出现的词的在文档中是否距离较近,query是否为文档的中心词。

4 日志存储

日志存储系统收集前端记录的日志,存储在数据仓库中,解析后用分布式文件系统来存放。有几类日志比较重要,

A、 搜索日志,搜索日志一般会包括以下一些信息,用户id,session id,用户搜索query,用户当前搜索的分类,用户搜索时间,

B、 点击日志,用户id,session id,用户搜索query,用户当前搜索的分类,用户点击的item,用户点击时间

C、 当然可能还有其他的如交易记录等,

有了以上几个部分之后,我们就可以通过以下2个部分来进行用户意图的预测,

5 统计分析

日志分析主要是一种统计分析,数据源来自于访问日志。另外还可以分析数据库中存储的用户的购买,收藏等行为。

可以从日志中分析出用户搜索query,“nike”最想找的是运动鞋呢,还是运动服。

常用的应用有下拉提示,相关搜索等,

下拉推荐是一种比较常用的用户意图分析的系统,通常是统计日志中,表现比较好的query,将这些query按照pv和数据表现等指标进行排序,然后把query转化为英文和中文对应的前缀,把相同前缀的建成统一索引,在用户输入关键词后,推荐相应的query。

相关搜索是更为常用的用户意图分析,一般通过关联规则(Apriori,FP-growth),统计同一sesion中,用户经常出现的相关的query,比如,可以发现同一个session里面搜索了nike的用户,很多都搜索了“nike dunk”这样的信息,我们就可以再搜索结果中进行改进。这一算法可以大量应用于数据挖掘。推广开去,我们要找某个类目下进行了购买的用户,还希望购买些什么类目的东西;看了一本书的用户,还会看什么书;搜索了一个“长款”属性,是否还希望“修身”这样的属性。

在往下深入,我们可以分析用户历史行为,进行个性化的预测。比如分析用户性别,喜好,来进行分类,推荐。

6 机器学习

统计的算法也是机器学习的一种,如果用户行为数据足够多,那直接使用统计分析应该是可以解决大部分问题。剩下的小部分问题是可以交给机器学习其他算法来完成。

举一个简单的例子来说明,用户搜索“nike”和“羽绒服”比较多,有了足够多的统计数据,我们知道“nike”对应的是运动鞋,运动服等。“羽绒服”对应的是服装。但是用户搜索“红色的nike羽绒服”次数很少,没有足够多的数据,我们统计到的结果也许是不准确的,偏差较大。

那我们可以将较好的数据进行训练,并对长尾的query进行分类预测。这里的训练数据的特征是用户query中每个词,词出现对应这一种分类。

训练数据的选择是分类算法最重要的一步,一般对文本的分类预测,可以使用信息增益,卡方,互信息等来作为训练特征。具体问题具体分析,例如使用 loglinear算法进行预测,实验证明信息增益来作为特征选择会更加有效,另外也得分析应用的场景,根据需要来选择算法,选择特征,法无定法,对于淘宝的数据来说,用于搜索的限于宝贝的标题,非常的短,直接使用用一般的网页分类算法是不太可行的,所以,数据不一样,方法就不一样,重要的是了解数据,了解方法的原理。机器学习不是万能的,不能靠运气。By the way,建议读下元函的Treelink算法介绍(http://www.searchtb.com/2010/12/an-introduction-to-treelink.html ),写的挺好的。

分好类后,对每个类中的文档的排序也可以通过机器学习来进行,如果每个文档有很多标准的特征,每个维度的特征有一定的分数。这个也可以通过机器学习的方法来进行好中坏分档,或者找出线性加权的最优化参数。

假设我们没有用户反馈数据

我们首先可以做的是把文档的自身的相关性做好,回到最开始的那个问题,一个用户搜索一个query是“百度”,怎么知道用户真正是想找什么呢。

先我们至少可以把文档按分词后的结果和query进行比较,文档中如果是“众里寻他千百度”这样的就可以过滤掉了,因为“千百度”和“百度”还是有一些区别的。这是从文档自有的相关性上来进行优化。

接下来,我们看这个文档是不是描述文档的,比如文档里面是讲“非诚勿扰2”的,里面提到“廖凡,如果你不知道廖凡是谁,请百度一下”,那么这种文档不是描述“百度”这个词的,而是描述“非诚勿扰2的”,我们可以通过给文档进行分类或者加上tag,来表示他的主题词,这样,这类的文档也可以过滤掉。

我们再讨论下如果进行分类,在有用户数据的时候,我们可以用用户的行为来作为文档分类的结果;没有的情况下,我们可以进行人为的标注,当然这部分工作量巨大。另外可能可行的是,在结构化比较好的数据里面,找到关键的字段进行分类,例如,品牌+产品型号,这样的字段作为聚类的关键key,把文档分为很多类。如果结构化不是很好,可以考虑用crf算法来抽取其中的关键字段进行聚类。同时把query对文档的直接搜索转化为对不同类文档的搜索。那么这时候,我们已经把搜索的所有文档进行了聚类,发现“朵唯S920”手机的描述中,常会出现“舒淇在非诚勿扰2中使用”这样的描述,是否就可以考虑把两者联系在一起了呢。

名词解释:

query用户搜索的关键词。

分享到:
评论

相关推荐

    SAP- Query报表事务代码分配及配置操作手册

    SAP Query 报表是SAP系统中一种用于生成自定义报表的重要工具,它允许用户根据特定需求定制数据报告,从而提高数据分析和决策制定的效率。本操作手册旨在为SAP业务顾问和运维顾问提供关于如何分配和配置SAP Query...

    IBM Cognos 10 Query Studio_用户指南

    在进行IBM Cognos Query Studio的实际操作中,用户可以设计查询,创建报表,然后将其发布到Cognos环境中。发布后,用户可以使用Cognos Viewer来查看这些报表,并通过Cognos Portal来访问这些报表。而Cognos Report ...

    SAP QUERY超好教材

    ### SAP Query 教材知识点详解 #### 一、SAP Query 概述 SAP Query 是一款用于构建自定义报表的强大工具,适用于SAP系统。...无论是对于初学者还是有经验的用户来说,掌握 SAP Query 的使用方法都是非常有价值的。

    亚马逊搜索意图识别

    亚马逊搜索意图识别是亚马逊搜索引擎背后的核心技术之一,它主要通过理解用户的搜索查询(Query),从而识别出用户的真正搜索意图,帮助用户快速找到所需商品。在搜索意图识别的过程中,需要面对许多挑战,例如查询...

    cognos8.3 Query_Studio 用户指南(简体中文).pdf

    《Cognos 8.3 Query Studio 用户指南》是一份专为个人学习研究设计的文档,旨在帮助用户深入了解和熟练掌握IBM Cognos 8.3版本中的Query Studio查询工具。Query Studio是Cognos Analytics的重要组成部分,它提供了一...

    QUERY报表制作和传输

    SAP Query是SAP R/3系统中的一种报告工具,它允许用户无编程地创建自定义报告,特别适合于那些需要定期生成但不需要复杂逻辑处理的报表。下面我们将详细讲解如何通过SAP Query进行报表的制作和传输。 首先,我们来...

    sap abap query高级功能

    SAP ABAP Query 是 SAP 系统中一种用于创建自定义报表的强大工具,尤其适合那些对 SQL 不太熟悉或者没有数据库直接访问权限的用户。它提供了丰富的功能,使得开发人员可以构建复杂的数据查询,而无需编写大量的 ABAP...

    power query excel插件工具

    Power Query是Excel中的一款强大数据查询和准备工具,它允许用户轻松地从各种数据源导入、清洗和转换数据。在Excel环境中,Power Query通常被称为“获取和转换”或M语言(用于公式和脚本的查询语言)。这款插件极大...

    3-1+Query+理解和语义召回在知乎搜索中的应用.pdf

    Query 理解是指对用户输入的Query进行语义分析和理解,以确定用户的搜索意图。语义召回则是指根据用户的搜索意图,召回相关的文档或结果。在知乎搜索中,Query 理解和语义召回技术被用于实现 Term Weight、同义词...

    DB2Query Patroller用户指南

    DB2Query Patroller用户指南.PDF 使用方法等一系列的介绍内容和指导

    power query 入门手册

    Power Query是Microsoft Excel中一个强大的数据预处理工具,它允许用户轻松地清洗、转换和整合数据,为数据分析工作提供便利。 1. **入门案例**:通过实际操作的案例,学习者可以快速理解Power Query的基本用法,如...

    SAPQuery报表设计

    用户组的创建是在SAPQuery管理界面中完成的,管理员可以指定哪些用户属于同一组,从而简化了权限分配的工作。创建用户组时,需要定义组名、描述和成员列表。此外,还可以为每个组设置默认的查询权限,如只读、修改或...

    Using Infoset Query, SAP Query and Quick Viewer

    Infoset Query是一种高级查询工具,允许用户更灵活地从多个数据源中提取数据,支持更复杂的查询逻辑和更精细的数据处理能力。Infoset Query相比传统的SAP Query提供了更多的灵活性和控制力。 #### Infoset Query的...

    plsql-ActiveQueryBuilder

    1. **图形化界面**:ActiveQueryBuilder 提供了一个拖放式的图形界面,用户可以通过连接表格、添加条件、选择字段等方式构建查询。这种可视化方式使得查询设计过程变得直观,减少了理解SQL语法的难度。 2. **动态...

    SAP Query 和 SQVI Quick View

    在实际应用中,顾问可能需要在开发环境中使用SQVI创建Quick View,然后根据查询的程序生成Query,并将其传输到生产环境中供用户使用。理解SAP Query和SQVI的区别与应用场景,以及如何有效地维护和使用它们,是提升...

    about SAP query传输.docx

    4. 转换完成后,需要在 SAP Query 的维护界面选择菜单 Environment->User groups,选择必要的用户组,以确定 Query 的使用权限。 5. 在上传到生产机后,需要在 SQ01 里面执行 generated program,生成本地程序,才能...

    在SAP Query中添加双击事件

    在SAP系统中,SAP Query是一个强大的工具,允许用户自定义报告以满足特定的数据查询需求。它提供了灵活的报表设计功能,使非编程背景的用户也能创建和修改查询。在某些情况下,我们可能希望在查询结果上添加交互性,...

    PowerQuery_2.56.5023.1181 (32-bit) [zh-CN].rar

    5. 用户友好界面:PowerQuery的图形化界面(Power Query Editor)使非编程背景的用户也能轻松上手,降低了学习曲线。 在安装这个32位的Chinese版本时,用户需要注意以下几点: 1. 系统兼容性:确保你的电脑运行的...

    COGNOS® 8 QUERY STUDIO 用户指南

    ### COGNOS® 8 QUERY STUDIO 用户指南 #### 一、概述 COGNOS® 8 Query Studio 是一款强大的商业智能工具,旨在帮助用户轻松地创建和管理各种类型的报表。该工具支持多种数据源,并提供了丰富的功能来帮助用户...

    5-2+智能语音交互中的无效query识别.pdf

    即使ASR正确识别了语音,但如果没有正确理解用户的真实意图,也会产生无效query。为此,需要构建强大的自然语言处理(Natural Language Processing,NLP)模型,对识别出的文本进行深入分析,识别潜在的语法错误、...

Global site tag (gtag.js) - Google Analytics