从 MAG 数据集构建 DKN 模型训练数据

这篇文章将带你了解如何从 MAG (Microsoft Academic Graph) 数据集构建 DKN (Deep Knowledge-aware Network) 模型的训练数据。DKN 是一种用于推荐系统的深度学习模型,它可以利用知识图谱来提升推荐效果。

数据准备:论文相关文件

首先,我们需要准备论文相关文件。在 DKN 中,论文数据格式如下:

[Newsid] [w1,w2,w3...wk] [e1,e2,e3...ek]

其中,Newsid 代表论文的 ID,w1,w2,w3...wk 代表论文中每个词的索引,e1,e2,e3...ek 代表论文中每个实体的索引。词和实体是相互对应的。

例如,一篇论文的标题为:

One Health approach in the South East Asia region: opportunities and challenges

那么,标题词的索引可以是:

101,56,23,14,1,69,256,887,365,32,11,567

标题实体的索引可以是:

10,10,0,0,0,45,45,45,0,0,0,0

前两个实体索引为 10,表示这两个词对应同一个实体。词和实体的索引是从 1 到 n 和 m 进行哈希的,其中 n 和 m 分别代表不同词和实体的数量。

构建论文特征文件

  1. 词和实体哈希:首先,我们需要对词和实体进行哈希,将每个词和实体映射到一个唯一的索引。
  2. 论文内容表示:为了简化,在本教程中,我们只使用论文标题来表示论文内容。当然,你也可以使用论文摘要和正文来更全面地表示论文内容。
  3. 特征长度固定:每个论文特征的长度应该固定为 k (max_word_size_per_paper)。如果论文中的词数超过 k,我们将截断论文,只保留前 k 个词。如果词数少于 k,我们将用 0 填充到 k 个词。

构建知识图谱文件

接下来,我们需要构建知识图谱文件。知识图谱由三元组组成,每个三元组表示一个事实:

head, tail, relation

例如,一个三元组可以表示:

"COVID-19", "Respiratory disease", "is_a"

表示 COVID-19 是一种呼吸道疾病。

构建用户相关文件

接下来,我们需要准备用户相关文件。我们的第一个任务是用户到论文的推荐。对于每个用户,我们收集他/她引用的所有论文,并按时间顺序排列。然后,推荐任务可以被描述为:给定用户的引用历史,预测他/她将来会引用哪些论文。

构建 DKN 训练数据文件

DKN 模型需要以下几个文件作为输入:

  • 训练/验证/测试文件:每个文件中的每一行代表一个实例。Impressionid 用于评估一个印象会话内的性能,因此它只在评估时使用,在训练数据中可以设置为 0。格式如下:
[label] [userid] [CandidateNews



例如:

1 train_U1 N1%0
  • 用户历史文件:每个文件中的每一行代表一个用户的引用历史。你需要在配置文件中设置 his_size 参数,该参数表示我们使用的用户点击历史的最大数量。如果用户的点击历史超过 his_size,我们将自动保留最后 his_size 个用户的点击历史。如果用户的点击历史少于 his_size,我们将自动用 0 填充到 his_size 个。格式如下:
[Userid] [newsid1,newsid2...]

例如:

train_U1 N1,N2

DKN 将推荐任务视为一个二元分类问题。我们根据项目的流行度对负样本进行采样。

构建 item-to-item 推荐数据集

我们的第二个推荐场景是关于 item-to-item 推荐。给定一篇论文,我们可以推荐一系列相关的论文供用户引用。

这里我们使用监督学习方法来训练这个模型。每个实例是一个 的元组。Label = 1 表示这对论文高度相关;否则 label 将为 0。

正样本的构建方式如下:

  1. 论文 A 和 B 在它们的引用列表中有很多重叠;
  2. 论文 A 和 B 被许多其他论文共同引用;
  3. 论文 A 和 B 由同一个作者(第一作者)在 12 个月内发表。

总结

本文介绍了如何从 MAG 数据集构建 DKN 模型的训练数据。通过对论文、知识图谱和用户行为数据的处理,我们可以生成 DKN 模型所需的训练数据,并进一步进行模型训练和评估。

参考文献

发表评论