搜索系统的特征体系的前瞻性设计是一个一劳永逸的工作,合理的设计可以为日后算法迭代工作提供高效的开发效率,本文以作者的实际经验抽象出了搜索系统特征体系的搭建内容。
特征分类
一个健全的特征体系可以以如下三个维度分类:
- 以 CIU 区分,即分成上下文特征(Context)、项目/物品特征(Item)和用户特征(User);
- 以特征类别区分,如静态特征、动态特征、交叉特征、向量特征等;
- 以特征的时间性区分,分成离线特征和实时特征。
CIU 分类
上下文特征
上下文特征主要是用户针对搜索系统的请求相关参数,也包括相关的 query 相关分析结果数据,具体如下:
编号 | 字段 | 类型 | 解释 | 备注 |
---|---|---|---|---|
1 | query | String | 搜索 query。 | |
2 | os | String | 请求的操作系统,可选值 ["android", "ios", "windows", "macos"] ,主要是四个值。 |
|
3 | client | String | 请求的客户端形式,常用的值 ["app", "h5", "wechat mini program", "pc", "web"] 。 |
|
4 | client_version | String | 请求客户端的版本。 | 主要针对 client 为 "app" 和 "pc" 时有意义。 |
5 | timestamp | Integer | 请求的时间戳。 | |
6 | page | Integer | 请求的页码,第一页从 1 开始。 | |
7 | ip | String | 请求的 ip。 | |
8 | latitude | Float | 请求时的定位纬度。 | 主要是移动端可以获取,有的电脑端的浏览器也可以,但不常用。 |
9 | longitude | Float | 请求时的定位经度。 | |
10 | country | String | 国家代码,可以用国际域名缩写,如中国为 "CN" 。 |
该参数是主要针对有跨国业务的,如 “抖音” 等。 |
11 | province | Integer | 省级行政区代码,如北京是 11 。 |
|
12 | prefecture | Integer | 地级行政区代码,如沈阳市是 210100 。 |
|
13 | county | Integer | 县级行政区代码,如南京市玄武区是 320102 。 |
很少有业务精确到县级行政区。 |
14 | town | Integer | 乡级行政区代码,如广州市海珠区赤岗街道是 440105001 。 |
很少有业务精确到乡级行政区。 |
15 | village | Long | 村级行政区代码,如江苏省无锡市江阴市华士镇华西村是 320281107200 。 |
很少有业务精确到村级行政区。 |
16 | commercial_district | Integer | 商圈信息。 | 有些 lbs 业务有商圈的概念。 |
17 | query_ner | Array[String] | query 的 ner 信息列表。 | 需要通过算法模型提取出,搜索系统必备。 |
18 | query_nature | Array[String] | query 的词性信息列表,通过分词后定义的词性信息。 | 搜索系统必备。 |
19 | query_intention | Array[String] | query 的意图识别先后顺序列表。 | 基于业务定义的意图信息识别出的带有顺序的意图列表,搜索系统必备。 |
Item 特征
item 特征主要是本身的属性特征、统计特征等构成,具体如下:
编号 | 字段 | 类型 | 解释 | 备注 |
---|---|---|---|---|
1 | item_id | Long | 顾名思义 item 的唯一键值。 | |
2 | item_type | Integer | item 的类型。 | 根据业务而定。 |
create_time | Long | item 创建时间戳。 | 绝大多数业务,item 的召回都是优先相对新的 item,利用该字段进行时间衰减处理。 | |
like_cnt | Integer | 喜欢数(点赞数)。 | ||
like_cnt_4_display | Integer | 外露的喜欢数(点赞数)。 | 一般很多产品设计,对外暴露的点赞数是“加过工”的,你懂的,如果没有,可以忽略。 | |
dislike_cnt | Integer | 不喜欢数(点踩数)。 | ||
share_cnt | Integer | 分享数。 | ||
save_cnt | Integer | 保存数(收藏数)。 | ||
report_cnt | Integer | 投诉数。 | ||
comment_cnt | Integer | 一级评论数。 | ||
reply_cnt | Integer | 二级评论数(一级评论的回复数)。 | 二级评论是针对一级评论的评论(回复)。 | |
view_cnt | Integer | 浏览数(观看数)。 | 如果业务是短视频,该字段意义就是播放量。 | |
view_cnt_4_display | Integer | 外露的浏览数(观看数)。 | 对外暴露的浏览数,加过工的。 | |
click_cnt | Integer | 点击数。 | ||
word_cnt | Integer | 文本数。 | 一般针对有文本内容的类型。 | |
image_cnt | Integer | 图片数。 | 一般针对帖子、日记内容类的 item。 | |
audio_cnt | Integer | 音频数。 | 针对有纯音频的内容类型。 | |
video_cnt | Integer | 视频数。 | 针对有视频的内容类型。 | |
like_rate | Float | 点赞率,点赞数/浏览数。 | ||
like_rate_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的点赞率。 | ||
uv_like_rate | Float | uv 点赞率,uv 点赞数/uv 浏览数。 | ||
uv_like_rate_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 uv 点赞率。 | ||
comment_rate | Float | 一级评论率,一级评论数/浏览数。 | ||
comment_rate_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的一级评论率。 | ||
uv_comment_rate | Float | uv 一级评论率,uv 一级评论数/uv 浏览数。 | ||
uv_comment_rate_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 uv 一级评论率。 | ||
subscribe_rate | Float | 订阅率,订阅数/浏览数。 | ||
subscribe_rate_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的订阅率。 | ||
uv_subscribe_rate | Float | uv 订阅率,uv 订阅数/uv 浏览数。 | ||
uv_subscribe_rate_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 uv 订阅率。 | ||
share_rate | Float | 转发率(分享率),分享数/浏览数。 | ||
share_rate_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的转发率。 | ||
uv_share_rate | Float | uv 转发率(分享率),uv 分享数/uv 浏览数。 | ||
uv_share_rate_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 uv 转发率。 | ||
save_rate | Float | 保存率(收藏率)。 | ||
save_rate_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的保存率。 | ||
uv_save_rate | Float | uv 保存率(收藏率)。 | ||
uv_save_rate_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 uv 保存率。 | ||
completion_rate | Float | 完播率,一般播放完 15 秒,定义为完整播放,公式为 满足完播数/浏览数。 | 这个主要针对视频类的业务。 | |
completion_rate_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的完播率。 | ||
uv_completion_rate | Float | uv 完播率。 | ||
uv_completion_rate_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 uv 完播率。 | ||
repeat_rate | Float | 复播率,用户针对 item 的播放重复相关指标,复播的用户数/浏览的所有用户。 | 这是以 uv 维度统计的,也是主要针对视频类的业务。 | |
repeat_rate_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的复播率。 | ||
uv_repeat_rate | Float | uv 复播率。 | ||
uv_repeat_rate_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 uv 复播率。 | ||
ctr | Float | 点击率,点击数/曝光数。 | ||
ctr_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的点击率。 | ||
uv_ctr | Float | uv 点击率,uv 点击数/uv 曝光数。 | ||
uv_ctr_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 uv 点击率。 | ||
ctr_30 | Float | 30 天点击率。 | ||
ctr_30_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 30 天点击率。 | ||
uv_ctr_30 | Float | 30 天 uv 点击率。 | ||
uv_ctr_30_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 30 天 uv 点击率。 | ||
ctr_14 | Float | 14 天点击率。 | ||
ctr_14_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 14 天点击率。 | ||
uv_ctr_14 | Float | 14 天 uv 点击率。 | ||
uv_ctr_14_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 14 天 uv 点击率。 | ||
ctr_7 | Float | 7 天点击率。 | ||
ctr_7_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 7 天点击率。 | ||
uv_ctr_7 | Float | 7 天 uv 点击率。 | ||
uv_ctr_7_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 7 天 uv 点击率。 | ||
ctr_3 | Float | 3 天点击率。 | ||
ctr_3_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 3 天点击率。 | ||
uv_ctr_3 | Float | 3 天 uv 点击率。 | ||
uv_ctr_3_wilson_95 | Float | 95% 的置信水平下的威尔逊区间修订的 3 天 uv 点击率。 | ||
gc_type | Integer | 生产内容类型,主要有 ugc、pgc、ogc 等等。 | ||
author_type | Integer | 作者类型。 | ||
author_subscribe_cnt | Integer | 作者订阅数。 |
对于搜索还有至少有两个 query 和 item 交叉特征:
编号 | 字段 | 类型 | 解释 | 备注 |
---|---|---|---|---|
similarity_score | Float | query 与 item 的相似分。 | 有的也叫相关性分数,主要有类似 bm 2.5 算法这种相似性分数。 | |
sort_score | Float | 粗排得分。 | 笔者将粗排用 sort 表示,用以和精排的 rank 区分。 |
User 特征
用户特征主要是用户自身的静态属性特征和用户的一些交互行为数据,具体如下:
编号 | 字段 | 类型 | 解释 | 备注 |
---|---|---|---|---|
user_id | Long | 用户 id。 | 一般不会拟合到用户 id 级别。 | |
gender | Integer | 性别。 | ||
age | Integer | 年龄。 | 若可以获取准确的数据最好,或者可以大概将年龄分段,如青年、中年、老年等。 |