原子文件是 RecBole 约定的一类通用的数据格式,支持灵活的数据输入。
目前 RecBole 支持 6 种原子文件,它们通过后缀名进行区分。
后缀 | 含义 | 例子 |
---|---|---|
.inter | 用户-商品交互特征 | user_id, item_id, rating, timestamp, review |
.user | 用户特征 | user_id, age, gender |
.item | 商品特征 | item_id, category |
.kg | 知识图谱三元组 | head_entity, tail_entity, relation |
.link | 知识图谱与推荐系统链接关系 | entity, item_id |
.net | 社交网络图 | source, target |
原子文件直接可以互相组合,只要将后缀写入参数load_col
中,该文件就会被加载。
一些推荐系统任务会要求必须存在某些原子文件,如:
任务 | 必须存在的原子文件 |
---|---|
General | .inter |
Context-aware | .inter, .user, .item |
Knowledge-aware | .inter, .kg, .link |
Sequential | .inter |
Social | .inter, .net |
每个原子文件可以被看作 `m` 行 `n` 列的表格(不计表头),代表该文件存储了 `n` 种不同的特征,共 `m` 条记录。
文件第一行为表头,表头中每一列的形式为 feat_name:feat_type
,标示了该列特征的名字及类型。
约定特征为四种类型之一,它们都可以被方便地转化为按 batch 组织的张量。
feat_type | 含义 | 例子 |
---|---|---|
token | 单个离散特征 | user_id, age |
token_seq | 离散特征序列 | review |
float | 单个连续特征 | rating, timestamp |
float_seq | 连续特征序列 | vector |
以 ml-1m 数据集为例,每个文件分别列出三行。
ml-1m.inter
user_id:token | item_id:token | rating:float | timestamp:float |
---|---|---|---|
1 | 1193 | 5 | 978300760 |
1 | 661 | 3 | 978302109 |
ml-1m.user
user_id:token | age:token | gender:token | occupation:token | zip_code:token |
---|---|---|---|---|
1 | 1 | F | 10 | 48067 |
2 | 56 | M | 16 | 70072 |
ml-1m.item
item_id:token | movie_title:token_seq | release_year:token | genre:token_seq |
---|---|---|---|
1 | Toy Story | 1995 | Animation Children's Comedy |
2 | Jumanji | 1995 | Adventure Children's Fantasy |
ml-1m.kg
head_id:token | relation_id:token | tail_id:token |
---|---|---|
m.0gs6m | film.film_genre.films_in_this_genre | m.01b195 |
m.052_dz | film.film.actor | m.02nrdp |
ml-1m.link
item_id:token | entity_id:token |
---|---|
2694 | m.02hxhz |
2079 | m.0kvcr9 |