搜索系统 基础教程

搜索 query 分析

搜索系统 索引教程

搜索系统 高级教程

搜索系统 排序层

搜索系统 笔记

问答搜索引擎系统排序算法中有哪些重要性高的特征因子

搜索系统 笔记 搜索系统 笔记


问答搜索引擎系统排序算法中,主要是精排算法应用中,如常用的 xgboost 算法中,对于预测用户是否点击 item 的目标(ctr 预估),有哪些特征因子重要性高,或者叫哪些特征和 ctr 强相关?

经验之谈

笔者之前做过垂直行业的问答搜索系统的排序工作,在实践中得出如下特征和用户是否点击 item 相关,重要度不分前后。

这里 item 指的是返回的问答内容。

上下文特征(Context)

上下文特征主要指用户的一个搜索请求(request)时的参数,也包含 query 分析的结果,如意图分类、词性、NER 等信息。

通用上下文特征
特征 类型 描述
query String 用户的搜索 query。
platform String 平台信息,如 "android"、"iphone"、"pc"、"h5"、"wechat_mini_program"、"ipad"、"android_tablet" 等。
version String 版本信息,主要是针对 "android"、"iphone"、"ipad"、"android_tablet" 移动客户端而言。
page Number 请求页数,这个参数是比较重要的排序特征。
timestamp Number 请求的时间戳。
ip String ip 信息(该特征对于精排用处不大)。

还有基于 query 的加工的上下文特征,如下:

query 相关特征
特征 类型 描述
intention String 意图分类信息,这是根据具体业务定义的,常用的模型有 TextCNN。
ner_list Array[String] 命名实体识别(NER)信息列表,这也是根据具体业务定义的。
nature_list Array[String] 分词词性信息列表,基于中文通用词性标准即可。

有一些业务会有 lbs 特性,这时地域相关信息也是组成上下文特征的重要组成部分,如下:

地域上下文特征
特征 类型 描述
country Number 国家标识,这个主要对于全球性的应用,相信绝大多数业务场景用不到。
province_id Number 省级行政区 id 信息。
city_id Number 地级行政区 id 信息。
county_id Number 县级行政区 id 信息。
town_id Number 乡级行政区 id 信息(如果必要,一般产品业务不会精确到此)。
village_id Number 村级行政区 id 信息(如果必要,一般产品业务不会精确到此)。
latitude Number 纬度信息(经常和经度信息结合在一起处理成 geohash 特征值)。
longitude Number 经度信息,同上,处理成 geohash 的精度可以和行政区 id 避开。

除了上述的上下文特征外,绝大多数应用的搜索都有筛选项,这些特征在用户选择筛选项时,虽然作用局限,也应纳入精排特征。

item 特征(Item)

对于问答系统的 item 就是问答内容相关信息了,相信读者对这部分的经验总结比较感兴趣,大致如下划分:

  • similarity score,相关性(查询相似度)相关的特征信息,像 BM25、TF-IDF 等计算的分数,该特征强调 query 和 item 的相关性;
  • ctr,item 的历史点入率(点击率)相关的特征,一般从时间范围、置信度处理、UV 等角度进行处理,下面会详细列出,ctr 特征间接反映 item 的质量;
  • feedback feature,即用户针对 item 的反馈特征,如 问题回答数、最佳答案赞同数、最佳答案收藏数、最佳答案分享数、最佳答案评论数、最佳答案点赞率(顶/(顶+踩))、最佳答案文案长度、所有回答的以上类似统计;
  • static feature,即 item 的静态特征,如 问题长度、问题创建时间距现在时长、提问者信息 等等。
similarity 相关特征
特征 类型 描述
question_score Number 问题的相关性分数。
best_answer_score Number 最佳答案的相关性分数。
其它字段相关性分数 Number 其它文本字段相关性分数,如 作者名称、nlp 提取的标签(tag)内容 等等。
all_text_score Number 所有文本摊开之后的相关性分数,这个为了 fix query 中部分命中 question,而另一部分匹配其它字段的情况。

除了 query 相关性特征外,另一个重要的特征是 item ctr 特征,该类特征一般会修正后使用,可以如下:

ctr 相关特征
特征 类型 描述
wilson_ctr_7 Number 7 天的 ctr 威尔逊置信度区间下限,置信度一般设置 95%。
wilson_uv_ctr_7 Number 7 天的 uv ctr 威尔逊置信度区间下限,uv_ctr = 点击 uv 数 / 曝光 uv 数。
query_cls_ctr_7 Number 7 天的 query 意图分类下的 item ctr 威尔逊置信度区间下限。
query_cls_uv_ctr_7 Number 7 天的 query 意图分类下的 uv ctr 威尔逊置信度区间下限。
wilson_ctr_28 Number 28 天(也就是 4 周)的 ctr 威尔逊置信度区间下限。
wilson_uv_ctr_28 Number 28 天的 uv ctr 威尔逊置信度区间下限。
query_cls_ctr_28 Number 28 天的 query 意图分类下的 item ctr 威尔逊置信度区间下限。
query_cls_uv_ctr_28 Number 28 天的 query 意图分类下的 uv ctr 威尔逊置信度区间下限。
用户针对 item 的反馈相关特征信息
特征 类型 描述
question_answer_cnt Number 问题的回答数。
best_answer_agree_cnt Number 最佳答案赞同数。
best_answer_agree_ratio Number 最佳答案赞同率,赞同/(赞同+不赞同)。
best_answer_comment_cnt Number 最佳答案评论数。
best_answer_collect_cnt Number 最佳答案收藏数。
best_answer_share_cnt Number 最佳答案分享数。
best_answer_word_cnt Number 最佳答案字数(长度)。
best_anser_img_cnt Number 最佳答案图片个数。
best_answer_user_id Number 最佳答案作者 id。
best_answer_time_distance Number 最佳答案距今时长。
all_answer_agree_cnt Number 所有答案赞同数。
all_answer_agree_ratio Number 所有答案赞同率,赞同/(赞同+不赞同)。
all_answer_comment_cnt Number 所有答案评论数。
all_answer_collect_cnt Number 所有答案收藏数。
all_answer_share_cnt Number 所有答案分享数。
all_answer_word_cnt Number 所有答案字数(长度)。

还有一些问答本身固定的信息,即静态特征,如下:

item 静态相关特征
特征 类型 描述
question_word_cnt Number 问题字数(长度)。
question_user_id Number 提问者信息,常用提问者的 uid。
question_time_distance Number 提问距今时长。

用户特征(User)

用户特征在精排里面主要 cover 个性化,更好地拟合有共性的用户的搜索体验,笔者给出的经验示例如下:

user 动态行为相关特征
特征 类型 描述
search_click_1_list Array[Number] 搜索点击过的列表。
search_query_list Array[String] 搜索查询过的 query 列表。
search_click_{tab}_list Array[Number] 其它搜索 tab 页点击过的列表(若有)。
其它场景的点击列表 Array[Number] 如果业务有其它场景的用户点击行为(如推荐点击的 item id 列表)。

除了用户动态特征外,还有静态特征,如下:

user 静态特征
特征 类型 描述
sex Number 识别的用户性别(若可获取)。
age Number 用户年龄(若可获取)。
education String 学历(若可获取)。
role String 角色(若可获取)。
salary Number 收入(若可获取)。
marriage Number 婚姻(若可获取)。

还有籍贯、民族、政治面貌等等,但是绝大多数这些信息很难获取到,且对问答搜索场景作用有限。

 此外除了用户动态属性用户静态属性外,用户画像工业界还会划分出用户消费属性用户心理属性,这些是需要通过其它的方法提取出来的,而且这些对问答搜索系统作用有限,这里忽略。