相关文章

一种运用标签知识网络的搜索应用系统

 |   

本文是18年写的一个将标签知识网络/标签知识图谱应用于搜索的专利,该种新型的召回方法既能保留了原来基于内容的召回算法中容易推出新物品,可解释性高等优点,并很好的克服其扩展性差的缺点。

背景

随着互联网技术和社会化网络的发展,每天有大量的信息包括文字资讯,图片,视频等发布到互联网上。传统的搜索技术已经无法满足用户对信息发现的需求,而个性化推荐系统正是为了解决信息过载问题应运而生。它能根据用户的兴趣和行为,向用户推荐所需要的信息,帮助用户在海量的信息中快速发现和满足,以此来提高用户对产品的黏性,提高用户留存,提高产品的竞争力。

目前常用的推荐算法有基于内容的召回算法,基于协同过滤的召回算法(基于用户的协同过滤和基于物品的协同过滤),基于模型学习的召回算法(从简单的逻辑回归模型到梯度提升树,再到深度学习)等。其中基于内容的召回算法是一种最普遍但又非常重要的推荐算法。它的关键点是标签体系的构建和挖掘,要先将推荐的物品(比如资讯,图片,视频等)分解为一系列的标签;然后根据用户对物品的行为(比如浏览,点击,购买等)将用户也描述为一系列的标签集合,这一系列的标签就是我们对用户特征的刻画,即用户画像;最后我们通过用户喜欢的标签来召回用户喜欢的物品。

本文在基于内容召回算法的基础上引入标签知识网络,设计一种基于标签知识网络的搜索应用系统,基于标签知识网络将用户和物品向量化,然后通过向量搜索来进行相似物品、相似用户、用户喜欢的物品的召回。

难点

基于内容的召回算法有较多优势,比如能从物品(item,下文item等同于物品)数据中可以挖掘很多有效信息,能够使得新物品被快速推出,有非常好的解释性。但是它也有如下缺点:

  1. 召回结果语义局限,扩展性差
    基于内容的召回算法都是通过标签来召回结果,但是由于标签固定,导致召回的结果很局限,而且延伸比较难。比如通过“孙悟空”这个标签只能召回和孙悟空相关的信息,像孙悟空三打白骨精,孙悟空大闹天宫等信息,但是很难召回有关猪八戒的信息(孙悟空和猪八戒西游记里的主角之一,是师兄弟关系),除非某个物品同时包含孙悟空和猪八戒两个标签。毕竟对于广大的西游迷而言,孙悟空和猪八戒缺一不可。
  2. 相似用户和相似物品挖掘精度较差
    推荐系统较少使用标签来挖掘相似用户和物品,主要因为标签太精细,扩展性差。物品的标签一般都是根据物品的文本信息使用机器来生成,因为面对海量的物品,人工标注成本太高。而简易模型不像知识专家有丰富的先验知识,无法辨别“刘德华”和“华仔”是否是同一语义的标签。

解决方法

针对上述难点,本专利设计一种基于标签知识网络的搜索应用系统。该方法在基于内容召回算法的基础上引入标签知识网络,使用标签网络的关系向量化表示用户和物品,基于向量搜索设计召回策略。此外对于标签间的相关性维度爆炸问题可以通过对标签知识网络的剪枝来解决。本系统既能保证内容算法召回结果的相关性,又能有效的解决标签召回结果语义局限,扩展性差的缺陷。

具体做法

基于标签知识网络的向量检索方法是在基于内容的召回算法基础上提出的一种新的召回方法。它复用了基于内容召回算法中用户和物品标签集的生成过程,并引入知识图谱和词向量(等同下文word2vec)模型构建标签知识网络,利用知识网络对用户和物品进行特征重新构建,最终使用向量搜索来进行相似用户,相似物品和用户偏好物品的挖掘和推荐。运用此方法,我们构建了一个应用系统,其包含5个模块:标签构建模块,用户建模模块,标签知识网络构建模块,用户物品特征构建模块和向量搜索模块。运用标签知识网络的搜索应用系统流程图如下所示:

运用标签知识网络的搜索应用系统流程图
各模块的具体功能介绍如下:

  1. 标签构建模块
    该模块是对推荐物品的文本信息进行标签提取,是基于内容召回算法中不可或缺的一环。首先将物品中的标题,描述等文本进行中文分词,然后根据各个词的词性、出现频率、是否是无用词等特征进行综合打分,保留分数较高的词作为待推荐物品的标签。表格1给出了物品标签集示例(描述太长未列出,标签中的词一定在标题或描述中出现过):

    编号标题标签
    1西游记师徒四人西天取经孙悟空,猪八戒,沙悟净,唐僧
    2孙悟空大闹天宫孙悟空、玉帝
    3猪八戒娶媳妇猪八戒、高老庄
    4孙悟空三打白骨精孙悟空、白骨精
    5猪八戒的前世今生猪八戒、天蓬元帅、九齿钉耙
  2. 用户建模模块
    该模块是根据用户对物品的历史行为分析出用户偏好的标签,也是基于内容召回算法中用户画像的构建部分。它会分析用户一段时间内点击过的所有物品,并将物品所有的标签进行加权合并,权重和行为的时间相关,时间越早权重越低,计算公式为: $$ score(tag) = \sum_{i=1}^{i<N} InItem(tag) * \frac{1}{1 + \log |t_{cur} - t_{ck}|} $$ 其中 $N$ 表示用户点击过的 item 个数,表示点击的 item 是否包含标签 tag ,包含返回 1,不包含返回 0,$t_{cur}$ 表示当前时间戳,$t_{ck}$ 表示用户点击时的时间戳。最后取分数足够高的标签作为用户的偏好标签。

  3. 标签知识网络构建模块
    该模块结合现有的知识图谱和 Word2vec 模型构建标签知识网络。标签知识网络是以标签为节点,标签之间的关联度为边的复杂网络,该网络先用物品标签集为语料利用 Word2vec 模型生成各个标签的词向量,并用词向量间的余弦相似值作为标签间的关联权重,以此生成标签关联网络,接着结合现有的知识图谱对标签关联网络进行修正完善,形成最终的标签知识网络。其流程如下:

    1. 将物品标签集当作语料(物品为文章,标签为词),使用 Word2vec 模型生成每个标签的向量
    2. 通过余弦相似值计算标签间的相似度 $W_{tag}$,生成标签关联网络 $G_{tag}=<V_{tag},E_{tag}>$
    3. 将现有知识图谱中实体与实体之间的关系转换成关联权重 $W_{graph}$,生成知识网络 $G_k=<V_k,E_k>$,并将两个网络以标签关联网络的节点为基础进行合并生成标签知识网络 $G=<V,E>$。其中,$V=V_{tag},E=E_{tag}+E’,E’ \in E_k$, $E'$ 中的关联权重 $W_e=W_{tag}+W_{graph}$。
    4. 使用剪枝法对边集合进行剪枝,将相似度 $W_e$ 低于 $W_{threshold}$ 的边全部去掉,得到 $E_{cut}, E_{cut} \in E$。 用上面表格中的物品标签集可以构建如下图的标签知识网络:
      标签知识网络
  4. 用户和物品特征构建模块
    该模块用来生成用户和物品的特征向量。这二者的构建都依赖于标签。每个标签的向量为 $T$,$T$ 的向量维度为 $E_{cut}$ 中边的个数,其中和标签节点直接相连的边的取值为 $W_e$,其它的为 0。按照上图所示,标签孙悟空的特征向量 $T=[w_{e1},w_{e2},w_{e3},w_{e4},w_{e5},w_{e6},w_{e7},w_{e8}]$。其中 $W_{e2}=W_{e3}=W_{e4}=0$。物品的向量 $I$ 为该物品所包含标签向量的加权和,即 $$ I=\sum_{i=1}^{i<N} \frac{1}{N} T_i $$ 其中 $N$ 表示物品包含的标签数,$T_i$ 表示第 i 个标签的向量。 用户的向量 $U$ 为该用户通过用户行为计算得出的偏好标签的加权和,即 $$ U=\sum_{i=1}^{i<K} W_i * T_i $$ 其中 $K$ 表示用户喜欢的标签数,$W_i$ 表示用户对第 i 个标签的喜欢程度,$T_i$ 表示第 i 个标签的向量。

  5. 向量搜索模块 该模块用于特征向量的检索召回,该特征向量包括标签,物品,用户。它是通过计算向量 $a,b$ 之间的余弦相似值 $cos\theta$ 来挑选 topn 个候选值。$cos\theta$ 的计算公式为: $$ cos\theta = \frac{a * b}{|a| * |b|} $$ 通过该模块我们可以做如下召回:

    • 物品召回相关物品,即物品之间的相似度
    • 用户召回相关用户,即用户之间的相似度
    • 用户召回相关物品,即用户和物品的相似度

总结

  1. 基于标签知识网络的向量检索方法是在基于内容的召回算法基础上提出的一种新的召回方法,它保留了原来算法中容易推出新物品,可解释性高等优点,并很好的克服其扩展性差的缺点
  2. 标签知识网络的构建以标签关联网络为基础,并用已有的知识图谱进行修正完善,使得标签知识网络更具有针对性和可信度。
  3. 基于标签知识网络生成用户和物品的特征向量,并使用向量搜索来完成召回,除了能增加用户召回相关物品的相关性和多样性,还使得相似用户和相似物品的挖掘更加精确。
技术茶话会
< 前一篇