个性化音乐推荐系统设计与实现 下载本文

* 单曲管理:可以将歌曲播放、下载并且可以对它进行评分。

* 收集歌曲信息:收集每个歌曲的信息,比如收集歌曲的播放次数,评分后的歌曲的分数,歌曲的类型和歌手信息。将这些信息放入数据库中对系统音乐推荐做准备。

* 用户信息:新用户需要注册以后才能对音乐进行评分,并能查看、修改自己的登录信息。

* 音乐检索:注册用户可以将进行系统内的音乐搜索操作。

* 音乐推荐:系统将按照歌曲的评分进行协同过滤操后给用户筛选歌曲。

3.4.1 音乐上传设计

音乐上传功能:管理员对上传的音乐进行分类包括音乐地区的分类,音乐风格的分类,音乐类型的分类,歌手类型分类。

下面是音乐上传功能的设计。

管理员从管理员模块上传歌曲时从音乐地区,音乐风格,音乐类型,歌手类型中一一选择属性对该音乐进行描述,此时生成歌曲id和歌曲所对应的地区、风格、类型、歌手的名称并将它存入数据库。

用户可以在首页看到音乐地区、音乐风格、音乐类型和歌手类型,将鼠标移动到各自的栏目就会发现所对应的属性,点击属性的话会出现属性所对应的音乐。

3.4.2 单曲管理设计

用户可以从系统首页进入音乐播放页面播放歌曲,并可以将音乐下载;管理员可以从管理员模块进入系统并修改音乐。

3.4.3 收集歌曲信息设计

收集歌曲信息:对每一首歌曲的信息(歌曲地区、歌曲风格、歌曲类型、歌手、评分、播放量)进行收集并存入数据库。

收集歌曲信息功能如下。

处理:在数据库中查询并收集歌曲信息。

输出:歌曲编号、歌曲类型、歌曲地区、歌曲风格、歌手信息、播放次数、评分结果。

3.4.4 音乐检索设计

可以用歌手或者歌曲名来检索对应的音乐,本模块功能如下。 输入:歌手名,歌曲名。

处理:验证输入是否为空。获取输入数据不空,则在数据库中查询相关音乐的歌手或者歌名。

输出:对应的歌曲。

3.4.5 音乐推荐设计

音乐推荐系统功能:音乐推荐系统功能是根据用户喜欢的音乐来推荐其他类型音乐。

下面是音乐分类功能的设计。

登录用户从播放模块可以根据自己的喜好评分当前歌曲,评分类型有差劲、一般、喜欢和非常喜欢。每个类型对应的分数有差劲-2分,一般-3分,喜欢-4分和非常喜欢-5分。当用户选择了喜欢或非常喜欢的时候系统将用户信息和歌曲信息存入数据表,而当用户选择了差劲或一般的时候系统不会讲用户信息和歌曲信息存入数据表。当信息存入数据表后系统将执行协同过滤算法来过滤掉评分低的歌曲并将评分高的歌曲推荐给用户,用户可以在首页发现有个栏目叫做系统推荐的音乐,用户可以从这里收听其他类型的歌曲。

3.5数据库设计

MySQL[9]有一个强大的数据存储和查询相关聚集的功能,是一个小型的关系型数据库管理系统,MySQL被广泛应用在Internet上的中小型网站。因为它的尺寸小,高速度,整体的成本低,特别是对于许多中小型网站开源的特性,以减少站点的整体成本,所以将MySQL选择作为一个网站数据库。把它作为数据库平台。下面一节是音乐推荐系统模块的数据库表设计。

3.5.1 数据库概念结构设计(E-R图)

在系统中采用E-R图[10]来分析数据关系的。下面具体列出个性化音乐推荐系统中主要的实体图及E-R图。

歌曲信息表E-R图如图3-2所示:主要有歌曲ID、歌曲名称、地区、风格等基本数据。收集每一首歌曲的基本信息,以便于系统推荐歌曲。

音乐歌曲id歌曲名称地区URLURL风格 图3-2 歌曲信息实体图

用户基本信息表E-R图如图3-3所示:主要包括用户编号、用户名、用户密码,其中通过用户编号来区分不同的用户。

用户用户名用户编号用户密码 图3-3 用户信息实体图

歌手信息表E-R图如图3-4所示:主要包括歌手编号、名称、类型、性别、地区、乐团编号、组合编号。完整地记录每一位歌手、组合或乐团的基本信息。

歌手歌手类型地区姓名性别组合编号歌手编号乐团编号 图3-4 歌手信息实体图

每一个管理员可以管理多个用户和歌曲,同时用户信息、歌曲类别、歌曲信息可以被多个管理员管理。用户可以收藏多首歌曲。每个模块之间的E-R图如图3-5所示。

1MN11用户管理员歌曲管理收藏管理歌曲N 图3-5 实体-关系图

3.5.2 音乐推荐系统数据库表设计

此表是音乐地区数据表,用于分类音乐地区。其中包含音乐地区编号AreaID,不可重复,必须填写;音乐地区名称AreaName,必须填写。

音乐地区编号AreaID是音乐信息表的外键。由于不同音乐有不同地区,设计“音乐地区数据表”如表3-1所示。

表3-1音乐地区数据表(表名:t_music_area) 字段名类型长度描述说明

AreaID int 11 音乐地区编号主键,自动增加 AreaName varchar 255 音乐地区名称非空

此表是音乐风格数据表,用于分类音乐风格。其中包含音乐风格编号StyleID,不可重复,必须填写;音乐风格名称StyleName,必须填写。

音乐风格编号StyleID是音乐信息表的外键。由于不同音乐有不同风格,设计“音乐风格数据表”如表3-2所示。

表3-2音乐风格数据表(表名:t_music_style) 字段名类型长度描述说明

StyleID int 11 音乐风格编号主键,自动增加 StyleName varchar 255 音乐风格名称非空

此表是音乐类型数据表,用于分类音乐类型。其中包含音乐类型编号TypeID,不可重复,必须填写;音乐类型名称TypeName,必须填写。

音乐类型编号TypeID是音乐信息表的外键。由于不同音乐有不同类型,设计“音乐类型数据表”如表3-3所示。

表3-3音乐类型数据表(表名:t_music_type) 字段名类型长度描述说明

TypeID int 11 音乐类型编号主键,自动增加 TypeName varchar 255 音乐类型名称非空

此表是管理员信息的数据表,用于记录管理员登录信息。此表包含管理员编号SysuserID;管理员用户名SysuserName;管理员密码Userpassword。

由于不同管理员有不同个人信息,设计“管理员数据表”如表3-4所示。 表3-4管理员数据表(表名:t-sysuser) 字段名类型长度描述说明

SysuserID int 11 管理员编号主键,自动增加 SysuserName int 11 管理员用户名非空 SysuserPassword varchar 150 管理员密码非空

此表是用户信息的数据表,用于记录用户登录信息。此表包含用户名编号UserID;用户名UName;用户地址UserAddress;邮箱地址UserEmail;用户

生日UserBirth;用户性别UserGender;用户姓名UserName:用户密码UserPasswd;用户电话UserCell。

由于不同用户有不同个人信息,设计“用户数据表”如表3-5所示。 表3-5用户信息数据表(表名:t_user) 字段名类型长度描述说明

UserID int 11 用户编号主键, 自动增加 UName varchar 20 用户昵称非空

UserAddress varchar 100 用户地址外键引用“音乐地区数据表” UserBirth varchar 10 用户生日 UserEmail varchar 50 用户邮箱 UserGender int 11 用户性别 UserName varchar 20 用户姓名非空 UserPasswd varchar 150 用户密码 UserCell varchar 255 用户电话

此表是筛选结果数据表,用于筛选用于喜欢的音乐。其中包含筛选结果编号ResultID,不可重复,自动增加;音乐编号MusicID,不可重复;用户编号UserID,不可重复。

由于不同用户有不同筛选结果,设计“筛选结果表”如表3-6所示。 字段名类型长度描述说明

ResultID int 11 筛选结果编号主键,自动增加 MusicID varchar 255 音乐编号外键引用“音乐信息表” UserID int 11 用户编号外键引用“用户信息数据表” 表3-6 筛选结果表(表名:t_filtling_result)

此表是音乐信息数据表,用于收集音乐信息。其中包含音乐编号MusicID;不可重复;音乐路径Filepath;音乐点击量Hits;歌词Lyrics;音乐名称Name;歌手Singer;音乐地区编号AreaID;音乐风格编号StyleID;音乐类型编号TypeID;用户喜欢次数Likes;音乐评分Score。

由于不同音乐有不同信息,设计“音乐信息表”如表3-7所示。 表3-7 音乐信息表(表名:t_music)