计算机设计大赛-校赛展示

产品录屏展示


云朵开场白

BGM响起后,云朵出现
屏幕上巨大的“书蕴”
简单介绍项目

书中自有颜如玉,书中自有黄金屋。
大家好,我是书蕴的项目负责人陈睿。

书蕴,是基于书评内容的书籍推荐系统。
希望在信息泛滥的今天,我们能有效地为书籍爱好者提供一片阅读的净土,将阅读带进每个人的心里。

话不多说,我们先来看看书蕴本体。

用户收藏

用户画像(词云)

首先进入用户界面,每位用户都有自己的收藏夹。系统根据用户收藏书籍的标签集,生成一幅词云。

推荐

接下来是书蕴最为核心的推荐功能。不同与传统的推荐算法,我们的推荐系统是基于书评的文本内容。我们对书评内容训练出书籍的标签集,根据用户收藏书籍的标签集,在基于大量语料库下训练的标签库中计算标签集之间的距离,将距离最近的书籍推荐给用户。具体思路我会在后续的ppt中详细讲解。

搜索

搜索是书蕴的另一个特色。根据用户搜索的关键词,计算关键词到标签集的距离进行搜索,将距离最近的书籍呈现给用户。比如搜索科幻,那么出现的则是所有与其相关的书籍。

书籍详情页面

进入书籍三体来看看,这是书籍的详情页面,右上角是这本书籍训练出来得到的标签集的呈现,往下我们可以看到这本书的书评与标签集的匹配效果。

绑定豆瓣

我们的书籍推荐系统还有很多方便的功能,例如可以通过直接绑定用户的豆瓣id获取用户在豆瓣上收藏的书籍,免去了用户一本本收藏书籍的繁琐操作。

引语

那么接下来深入细节,从算法层面讲述我们是如何脱离传统的基于用户的协同过滤算法,从书评文本内容出发,实现智能推荐算法的。

ppt展示


我们脱离了传统推荐系统的基于用户的协同过滤算法,而是从书评文本内容出发,利用分类方法甄别有效评论、利用文本处理技术建立书籍的标签集、利用深度学习构建标签库,并基于此计算不同书籍的标签集之间的关联度,从而达到基于书评内容推荐书籍的目的。

开场白

首先提两个概念,这两个概念在接下来的陈述中会多次用到。
1.标签集。从系统的角度来看,书籍已经不再是一个对象实体,我们把书籍看作是由许多个关键词组成的标签集,它代表的某一本书。
2.标签库。概念与标签集类似,不同的是标签集是基于某一本书的所有书评;而标签库则是基于我们常用的自然语言构建,它代表的是我们日常使用的语言的全集。

目录

关于去除标签、去停用词、分词等文本预处理的细节这里不予赘述。让我们来看看智能推荐的核心算法。
从整体来看一共有这样四个步骤。接下来我会一一说明。

筛选关键词

首先要进行关键词的筛选。这一步主要是去找出书评中真正重要的词。

TF-IDF

通过信息检索中词频-逆词频的思想,我们可以计算某一本书籍的书评在所有书评中的TF-IDF值,并排序获取这本书的书评中相对重要的词。换句话说,我们认为这些词是更能够体现这本书的标签。
比如上图的例子,在我们所有书的书评中,三体与红楼梦这两本书的书评中相对重要的关键词如图所示。

形成标签集

找到了相对重要的关键词后,如何形成标签的集合呢?
这里我们并不只是简单的将关键词的整体作为一本书的标签集。因为TF-IDF找到的关键词,往往只在前20个词语上下较为重要,而存在部分重要的词可能无法被找到。所以这里我们额外使用了词向量的解决方案。

word2vec训练书评模型

word2vec是自然语言处理中将词语转换为向量表示的技术。我们将每一本书的书评输入到word2vec的三层神经网络中,使用连续词袋法获得每一本书的词向量。
如图所示的是三体这本书所有评论训练得到的词向量。

word2vec介绍

为什么要使用词向量呢?
如图使用的是一张word2vec非常有名的训练后的模型。根据词向量,我们可以看到China和Beijing的距离与Russia和Moscow的距离相差不多。
换句话说,中国之于北京,就相当于俄罗斯之于什么?给word2vec提供前三者,我们可以算出是莫斯科。

word2vec形成标签集

这里以《追风筝的人》举例,使用这本书的所有书评训练得到的模型如图,当我们输入词语“风筝”,会返回与风筝距离最近的10个词语。返回的结果以余弦值呈现。
据此,我们可以很快想到伪码,以第一步筛选得到的部分关键词加入到标签集实现冷启动,以word2vec去遍历标签集中的词语,取距离最近的前5个词加入到标签集。重复3次这个步骤。
建立的标签集以冷启动+迭代的方式扩展,取距离最近的前5个词决定了标签集的广度,重复3次过程则决定了标签集的深度。
最后是我们得到的标签集

建立标签库

接下来则需要建立标签库,找到标签集之间的关系

中文维基百科语料库 word2vec模型训练

这是中文维基百科语料库的训练结果,一共训练了80w个词
1.也的确可以通过词向量的完成北京之于中国,正如莫斯科之于俄罗斯 这样的计算。
标签集是每本书的小模型训练得到的结果,而标签库则是使用中文维基百科语料库训练得到的结果。
2.我们再拿前面的图举例子,在追风筝的人这本书里,和风筝距离接近的词语大多和书评相关,而在语料库中,距离接近的词则完全不一样。
因为风筝这个词,在书中的所表达的意义与在平时使用所蕴含的意义大相径庭。
这也是我们标签集训练结果正确性的理论依据。
标签集只有放在语料库中才能与其他书产生联系,从而找到书与书之间的关联度。

计算关联度

当我们抽取出标签集,构建好标签库之后,剩下的问题就是,如何确定标签集与标签集之间的距离。
在word2vec模型里,使用词向量可以很快计算得到单个词与单个词之间的距离,我们要解决的是确定多个词与多个词之间的距离

关联度计算方法

我们采用的是分治法模型,首先计算一个词到一个标签集的距离,然后根据标签的重要程度加权平均获得标签集到标签集的距离。
1在形成标签集到计算关联度之间一共有4个参数,分别决定了筛选关键词、形成标签集与计算关联度的好坏。
2这里的例子使用四本书,分别是三体、三体3、红楼梦与追风筝的人查看效果。期望的结果是三体与三体3的距离十分接近,三体与红楼梦之间的距离十分远。
这是我们实验过程中保留下来的部分数据,时间关系就不一一细说。经过不断的测试,最后发现冷启动使用前5的关键词,广度为5,深度为3,取标签-书距离取最大值前2时,可以获得最好的结果。

关联度计算在推荐系统中的应用

关联度计算的应用非常多,刚刚具体细说的是我们的核心算法推荐功能。
实际上通过词与标签集的关联度,我们可以实现出模糊搜索的功能。

thankyou

最后衷心的感谢各位专家的悉心聆听,
您的提问,是对我们最大的帮助。

你可能感兴趣的:(书蕴)