基于知识图谱的中国流行音乐智能搜索项目

本文内容:本文主要是对项目背景、项目中使用的项目技术以及系统的设计进行简单的介绍。

 

目录

一、项目背景

二、相关技术综述

1. 知识图谱

2. 图数据库Neo4j

3. 基于用户的协同过滤推荐技术

4. 爬虫技术(Scrapy爬虫框架)

5. 前后端相关技术

(1)Django框架

(2)JQuery

(3)Bootstrap

(4)Echarts

三、系统设计

1. 开发工具

2. 系统架构


一、项目背景

项目的总体目标是为中国流行音乐爱好者开发一款流行音乐检索和推荐系统,用户可以进行歌手信息以及音乐信息的搜素,同时可根据用户喜爱的音乐为用户推荐适合的音乐。

系统使用爬虫技术(Scrapy框架)从网易云音乐平台爬取音乐信息作为知识图谱的初始数据源,然后将筛选和整理后的数据信息存储到Neo4j图数据库中,使用Bootstrap框架同时使用JQuery框架进行Web界面的开发,通过Django构建项目,实现一个具有友好交互的B/S模式的音乐智能搜索系统。

二、相关技术综述

1. 知识图谱

知识图谱是用于表示实体之间的关系的,使用知识图谱可以对现实世界中的概念或事物进行关系描述,知识图谱中结点表示的是实体,边代表的是实体之间的关系。由于知识图谱使用结点和关系来反映人类世界中的一切物质及其相互关系,所以使用知识图谱可以更直观的进行数据的处理。

2. 图数据库Neo4j

Neo4j是一个图数据库,它是开源的且具有高性能、支持大数量级的特点,Neo4j中的数据信息存储在互联网络而不是本地,Neo4j中的节点、关系、属性、标签和数据浏览器是该图数据库的主要构建块。节点(Nodes)可以看成现实世界中的一切实体或概念,在Neo4j中用圆表示,它包含属性,属性用键值对表示。关系(Relationships)是指现实世界中实体与实体的关系,在Neo4j图数据库中使用有方向的箭头来表示,它包含具有键值对的属性。属性(Properties)用于对图中的节点和关系进行描述,它使用键值对表示信息。标签(Label)可以看成是与一组节点或关系相关联的公共名称。Neo4j数据浏览器用于执行CQL命令并查看数据库中信息。

Neo4j具有如下的特点和优势:

  • 数据的插入查询等操作简单直观。
  • 提供的与图有关遍历方法性能高且方便。
  • 开源,支持大量数据的开发,应用范围广泛。
  • 兼容ACID特性。

3. 基于用户的协同过滤推荐技术

推荐算法分为很多种,基于用户的系统过滤推荐是其中最为广泛使用的方法,它的主要原理是根据兴趣相似度高的用户的爱好对当前用户的爱好进行预测。通俗来说,当想要给某一用户X进行他可能会喜欢的物品推荐时,首先要根据用户X喜欢的物品,找到与其偏好最为相似的用户集,分析用户集合喜爱的物品信息,把物品信息中用户X从未接触过的物品推荐给该用户。例如,假设用户X喜爱物品m、n,用户Y喜欢物品m、n、x、y,那么我们可以推断出用户X对物品x、y也有可能比较喜欢。

4. 爬虫技术(Scrapy爬虫框架)

Scrapy是一个功能强大且使用简单的爬虫框架,它由六大组件构成,可以用于数据的获取和数据中有价值信息的挖掘等。Engine(引擎)对Scrapy各个模块之间的数据流进行控制,并根据条件触发事件。Downloader(下载器)在Engine的控制下根据请求对网页源码进行下载。Scheduler(调度器)的主要作用是对爬取请求进行调度以使程序有序的进行下去。Middleware(中间件)包括Downloader Middleware和Spider Middleware,前者实现引擎、调度器和下载器间用户可配置的控制,例如对请求或响应进行新增等,后者对请求和爬取项进行再处理。

使用Scrapy的基本项目流程为:

  • 使用命令行创建Scrapy项目。
  • 定义程序需要提取的Item数据项。
  • 编写Spider和Pipeline。
  • 运行程序并提取Item,将提取到的Item存储到本地。

5. 前后端相关技术

(1)Django框架

Django是一个Web应用框架,它是开源的且使用Python语言进行编写,基于MVC的体系结构。在使用Django的项目中,业务逻辑控制器获取的用户输入信息,是Django通过框架进行自行处理的,所以模型、模板和视图对于Django框架而言更为重要,这称为MTV框架或架构模式。其中模板中包含HTML文件并负责把HTML展示给用户,模型负责完成业务对象和数据库之间的映射,视图负责控制系统的业务逻辑。使用Django框架,开发人员只需要少量代码的编写工作就能够完成一个网站的快速搭建。

(2)JQuery

JQuery是一个JavaScript函数库,该函数库非常轻巧的且拥有各种各样功能的插件。

JQuery具有如下优势:

  • 轻量级,JQuery非常小巧但拥有方便的插件扩展及多种多样的插件。
  • 具有强大的CSS选择器。
  • 对常用的DOM操作进行了封装,大大简化了操作。
  • 拥有可以信赖的事件处理机制,使用JQuery进行操作简单可靠。
  • 完善的Ajax,JQuery将Ajax封装到函数中,简化了开发人员的操作。
  • 具有良好的兼容性。

(3)Bootstrap

Bootstrap是一个前端框架,它主要用于快速开发Web应用。Bootstrap基于HTML、CSS、JavaScript,它拥有各式各样的组件,可利用这些组件快速完成一个功能完备且界面美观网站的开发部署。

Bootstrap有如下优势和特点:

  • 移动设备优先。
  • 兼容性强。
  • 组件丰富。
  • 界面美观、操作简单。
  • 响应式设计。
  • 开源。

(4)Echarts

Echarts是百度开源的数据可视化工具,功能强大,使用方便。

三、系统设计

1. 开发工具

系统开发中用到的工具主要有:

  • 开发语言:Python。
  • 开发环境:Anaconda。
  • 数据库:Neo4j。
  • Web前端:Bootstrap、JQuery、Ajax。
  • Web后台:Django。
  • 其它库:Py2neo。

2. 系统架构

由于系统主体基于MVC架构模式,所以将系统分为视图层、业务逻辑层、数据访问层、数据层四层。数据层用Neo4j图数据库存储知识图谱的结点和关系,用来为用户在前端的请求提供数据信息,包括艺人信息、歌曲信息和推荐服务的数据信息。数据访问层主要是使用Py2neo库对Neo4j数据库进行操作,并向业务逻辑层提供服务。业务逻辑层的作用主要包括对视图层的控制以及推荐系统的实现。视图层是展示给用户的Web页面,包括:歌手信息搜索界面、关系可视化界面、歌曲推荐界面。

系统的架构图如图3-1所示。

基于知识图谱的中国流行音乐智能搜索项目_第1张图片 图3-1 系统架构图

 

你可能感兴趣的:(知识图谱,django,neo4j,推荐系统,python)