问答搜索引擎系统排序算法中,主要是精排算法应用中,如常用的 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 的加工的上下文特征,如下:
特征 | 类型 | 描述 |
---|---|---|
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 的静态特征,如 问题长度、问题创建时间距现在时长、提问者信息 等等。
特征 | 类型 | 描述 |
---|---|---|
question_score | Number | 问题的相关性分数。 |
best_answer_score | Number | 最佳答案的相关性分数。 |
其它字段相关性分数 | Number | 其它文本字段相关性分数,如 作者名称、nlp 提取的标签(tag)内容 等等。 |
all_text_score | Number | 所有文本摊开之后的相关性分数,这个为了 fix query 中部分命中 question,而另一部分匹配其它字段的情况。 |
除了 query 相关性特征外,另一个重要的特征是 item 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 威尔逊置信度区间下限。 |
特征 | 类型 | 描述 |
---|---|---|
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 | 所有答案字数(长度)。 |
还有一些问答本身固定的信息,即静态特征,如下:
特征 | 类型 | 描述 |
---|---|---|
question_word_cnt | Number | 问题字数(长度)。 |
question_user_id | Number | 提问者信息,常用提问者的 uid。 |
question_time_distance | Number | 提问距今时长。 |
用户特征(User)
用户特征在精排里面主要 cover 个性化,更好地拟合有共性的用户的搜索体验,笔者给出的经验示例如下:
特征 | 类型 | 描述 |
---|---|---|
search_click_1_list | Array[Number] | 搜索点击过的列表。 |
search_query_list | Array[String] | 搜索查询过的 query 列表。 |
search_click_{tab}_list | Array[Number] | 其它搜索 tab 页点击过的列表(若有)。 |
其它场景的点击列表 | Array[Number] | 如果业务有其它场景的用户点击行为(如推荐点击的 item id 列表)。 |
除了用户动态特征外,还有静态特征,如下:
特征 | 类型 | 描述 |
---|---|---|
sex | Number | 识别的用户性别(若可获取)。 |
age | Number | 用户年龄(若可获取)。 |
education | String | 学历(若可获取)。 |
role | String | 角色(若可获取)。 |
salary | Number | 收入(若可获取)。 |
marriage | Number | 婚姻(若可获取)。 |
还有籍贯、民族、政治面貌等等,但是绝大多数这些信息很难获取到,且对问答搜索场景作用有限。
此外除了用户动态属性和用户静态属性外,用户画像工业界还会划分出用户消费属性和用户心理属性,这些是需要通过其它的方法提取出来的,而且这些对问答搜索系统作用有限,这里忽略。