毕业论文基于LBSN的个性化社交推荐系统的设计与实现Word文档格式.docx
- 文档编号:18999778
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:49
- 大小:711.67KB
毕业论文基于LBSN的个性化社交推荐系统的设计与实现Word文档格式.docx
《毕业论文基于LBSN的个性化社交推荐系统的设计与实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《毕业论文基于LBSN的个性化社交推荐系统的设计与实现Word文档格式.docx(49页珍藏版)》请在冰豆网上搜索。
社交网络;
个性化推荐
DesignandImplementationofLBSN-BasedPersonalizedSocialRecommendationSystem
Abstract
LBSN(Location-basedSocialNetwork)isakindofsocialnetwork.Differentfromtraditionalsocialnetworks,onthebasisofcontactamongpeople,LBSNcanalsotrackandsharelocationinformationofpeople.Inrecentyears,socialnetworkshavebecomeincreasinglyactiveandpopular,butitscorecontentisstilllimitedinthevirtualworld,peoplesharenewsandchatwithfriendsonline.But,withthedevelopmentofwirelessnetworksandpositioningtechniques,itismucheasiertodetermineandsharethelocationinformationofpeopleinmovement.Afteraddingaspatialdimension,thesocialnetworksinvirtualworldwillbereturnedtotherealworld.LBSN-BasedpersonalizedsocialrecommendationsystemprovIDesanewmodeltosocialnetworksonthebasisoftheexistingfriendsrecommendedmode,allowinguserstomoreeffectivelyfindfriendswhohassimilarinterestsandhabitswiththeirown.
ThesystemusesB/Sarchitecture,beingconsistedofAndroidclient,WEBclientandtheserver,andusetheSinamicroblogAPIaspartofthedatasourcesofthesystem.Mostofthefunctionofthesystemiscompletedbytheoperationtothedatabaseontheserver,whiletheclientisforsendingrequestsandreceivingdata.InAndroidclientthereareseveralcompletemodulesincludingfriendsmanagement,locationview,personalizedrecommendationandset,intheWEBclientthefunctionsofadministratorsareimplemented.
Inthispaper,aftertheseveralprocessofanalysisforsystemsdemand,design,detaileddesignandimplementationofthesystem,thedesignanddevelopmentofthesystemtaskiscompleted,aLBSNpersonalizedsocialrecommendationsystemisimplemented.Atlast,Isummarizedthework,pointsouttheshortcomingsandpartsinneedofimprovementinthesystem.
Keywords:
LBSN;
socialnetwork;
personalizedsocialrecommendation
第1章引言
课题研究的背景和来源
随着互联网行业的发展和普及,人们上网的需求越来越追求个性化,多样化。
社交网络这一网络应用越来越受到大家的欢迎,几乎所有的互联网用户都拥有至少一个社交网络账号,国外的Twitter,Facebook,国内的新浪微博都拥有了海量的用户数。
可以说,社交网络已经成为了当今时代最主要的信息获取和沟通渠道,我们已经迈进了社交网络时代。
社交网络的名词最早出现于1954年,经过多年的发展,社交网络大体经历了这样一个发展过程:
早期概念化阶段;
结交陌生人阶段;
娱乐化阶段;
社交图阶段;
云社交阶段。
但直到现在,它存在的问题也仍然很显著,其中最突出的就是市场的集中化,几个特大的社交网站基本占据了市场,而在本质上讲现在的主流社交网络同化严重,缺乏创新。
社交网络的根本和核心在于交友,而眼下的社交应用的推荐好友方式主要局限于六度分割理论。
用户在社交网络上能接触到的或者被推荐的,都是来自自己已有好友的社交圈,很难接触到其他的大多数社交圈中的用户。
其意义在于以现有的小型社交圈为基础向外扩展,不断扩大,来认识更多“朋友”的“朋友”。
[6]这种推荐模式较为单一和同化,而并不能真正为用户带来个性化的交友体验。
LBSN(Location-basedSocialNetwork,基于位置的社会网络)作为一种新型的社交网络,与传统的社交网络不同,基于位置的社交网络中,核心概念就是用户和用户的位置,这恰恰体现了虚拟的社交和真实物理世界之间的关系,通过将用户线上和线下的活动相融合,可以提供真实有效的数据和随时随地的服务,已经成为社交网络研究中一种非常热门的研究方向[7]。
以上可以看出,现有的社交网络和推荐模式并不能完全满足用户们的需求,基于LBSN的个性化社交推荐系统能够为社交网络用户提供全新的社交模式.
课题研究成果应用的实际意义
本文研究的主要目的是实现一个基于LBSN的个性化社交推荐系统。
由前文的分析可以得出结论,LBSN(Location-basedSocialNetwork,基于位置的社会网络)作为一种新型的社交网络,思维社交网络探索出了新的方向,为好友的推荐问题提供了一个很好的解决方案。
随着现代信息通信和位置感知技术的发展,LBSN用户采集位置信息的能力也大大增强,各类大型社交应用每天都在产生数以亿计的位置签到数据,这些数据和轨迹体现的是用户们在现实生活中的各种活动,对这些数据进行挖掘分析,可以定量的估算出人们的生活喜好特征,进而从更深层次的角度去分析人们的生活模式,行为特征[8]因此,基于位置信息的社交应用能够更大程度的满足用户的兴趣,为用户提供更真实,更个性化的社交服务[9]。
通过基于位置信息的社交网络及推荐系统,人们的日常生活轨迹有了新的功能和意义,每一条轨迹每一次签到都蕴含了丰富的信息,反映的是用户的生活习惯和日常[10]事实上,人们对位置信息的挖掘已经取得了一定得成果,用户也很享受位置社交给他们带来的新的乐趣,但是现在市场上的位置社交应用对位置信息的挖掘和分析还并不够深入,随着LBSN技术的深入探索和发展,将位置信息真正挖掘彻底,用户得到的体验一定更加丰富[11]。
本课题研究的系统,就是实现一个简单的基于LBSN的个性化社交推荐系统,其中包括了一些常见的社交应用的功能,并通过分析用户的签到记录等位置信息,为用户提供个性化的好友和地点推荐。
开发出的Android客户端可以投入市场供用户使用,获得基于LBSN的社交新体验。
本文的内容及主要工作
本文首先简单介绍了设计和实现系统的一些相关技术,然后结合设计和实现的过程,详细描述了系统的功能,结构,并且实现了一个基于LBSN的个性化社交推荐系统的基本功能。
各章的内容组织如下:
第2章介绍了系统设计和实现过程中使用的技术和相关API,包括Laravel框架,新浪微博API,高德地图API等;
第3章分析了系统的开发环境,对系统进行需求分析,明确了系统所需要具有的功能
第4章对系统进行总体设计,并对客户端、服务层、Web服务层等进行详细设计,对系统的各个功能模块进行了详细设计,介绍了系统的数据库表;
第5章对系统的服务端和客户端各个模块的详细设计和实现进行了介绍,阐述了整个系统的工作流程。
第6章介绍了设计和实现完成后,对系统进行测试的情况,确保了系统预期设计的指标。
第7章结论部分是对整个论文工作的总结以及下一步工作的展望,指出我们工作中有待改进的地方,同时指明了下一步的研究方向。
第2章相关技术简介
Android
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
Android操作系统最初由AndyRubin开发,主要支持手机。
2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。
2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。
全世界采用Android系统的设备数量已经达到10亿台。
[1]
Android平台最大的优势就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。
显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,Android已经快速地成为了一个成熟的平台。
Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个Activity类(class)负责创建视窗(window),一个活动中的Activity就是在foreground(前景)模式,背景运行的程序叫做Service。
两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。
如果运行中的Activity全部画面被其他Activity取代时,该Activity便被停止(stopped),甚至被系统清除(kill)。
[2]
View等同于J2ME的Displayable,程序人员可以通过View类与“XMLlayout”档将UI放置在视窗上,Android1.5的版本可以利用View打造出所谓的WIDgets,其实WIDget只是View的一种,所以可以使用xml来设计layout,HTC的AndroidHero手机即含有大量的wIDget。
至于ViewGroup是各种layout的基础抽象类(abstractclass),ViewGroup之内还可以有ViewGroup。
View的构造函数不需要再Activity中调用,但是Displayable的是必须的,在Activity中,要通过findViewByID()来从XML中取得View,Android的View类的显示很大程度上是从XML中读取的。
View与事件(event)息息相关,两者之间通过Listener结合在一起,每一个View都可以注册一个eventlistener,例如:
当View要处理用户触碰(touch)的事件时,就要向Android框架注册View.OnClickListener。
另外还有Image等同于J2ME的BitMap。
操作系统与应用程序的沟通桥梁,并用分为两层:
函数层(Library)和虚拟机(VirtualMachine)。
Bionic是Android改良libc的版本。
Android同时包含了Webkit,所谓的Webkit就是AppleSafari浏览器背后的引擎。
Surfaceflinger是就2D或3D的内容显示到屏幕上。
Android使用工具链(Toolchain)为Google自制的BionicLibc。
Android采用OpenCORE作为基础多媒体框架。
OpenCORE可分7大块:
PVPlayer、PVAuthor、Codec、PacketVIDeoMultimediaFramework(PVMF)、OperatingSystemCompatibilityLibrary(OSCL)、Common、OpenMAX。
Android使用skia为核心图形引擎,搭配OpenGL/ES。
skia与LinuxCairo功能相当,但相较于LinuxCairo,skia功能还只是阳春型的。
2005年Skia公司被Google收购,2007年初,SkiaGL源码被公开,目前Skia也是GoogleChrome的图形引擎。
Android的多媒体数据库采用SQLite数据库系统。
数据库又分为共用数据库及私用数据库。
用户可通过ContentResolver类(Column)取得共用数据库。
Android的中间层多以Java实现,并且采用特殊的Dalvik虚拟机(DalvikVirtualMachine)。
Dalvik虚拟机是一种“暂存器型态”(RegisterBased)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。
Dalvik虚拟机可以有多个实例(instance),每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。
Dalvik虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。
Android的HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。
HAL的目的是为了把Androidframework与Linuxkernel隔开,让Android不至过度依赖Linuxkernel,以达成kernelindependent的概念,也让Androidframework的开发能在不考量驱动程序实现的前提下进行发展。
HALstub是一种代理人(proxy)的概念,stub是以*.so档的形式存在。
Stub向HAL“提供”操作函数(operations),并由Androidruntime向HAL取得stub的operations,再callback这些操作函数。
HAL里包含了许多的stub(代理人)。
Runtime只要说明“类型”,即moduleID,就可以取得操作函数。
Android是运行于Linuxkernel之上,但并不是GNU/Linux。
因为在一般GNU/Linux里支持的功能,Android大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。
Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。
Android为了达到商业应用,必须移除被GNUGPL授权证所约束的部份,例如Android将驱动程序移到userspace,使得Linuxdriver与Linuxkernel彻底分开。
bionic/libc/kernel/并非标准的kernelheaderfiles。
Android的kernelheader是利用工具由Linuxkernelheader所产生的,这样做是为了保留常数、数据结构与宏。
目前Android的Linuxkernel控制包括安全(Security),存储器管理(MemoryManagemeat),程序管理(ProcessManagement),网络堆栈(NetworkStack),驱动程序模型(DriverModel)等。
下载Android源码之前,先要安装其构建工具Repo来初始化源码。
Repo是Android用来辅助Git工作的一个工具。
PHP及Laravel框架
系统的服务端由PHP语言的Laravel框架编写。
PHP(外文名:
PHP:
HypertextPreprocessor,中文名:
“超文本预处理器”)是一种通用开源脚本语言。
语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。
PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。
它可以比CGI或者Perl更快速地执行动态网页。
用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
[3]
PHP的特性包括:
1.PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。
2.PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,
PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;
PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。
3.PHP支持几乎所有流行的数据库以及操作系统。
4.最重要的是PHP可以用C、C++进行程序的扩展。
PHP的优势也有很多,开放源代码,所有的PHP源代码事实上都可以得到;
免费性,和其它技术相比,PHP本身免费且是开源代码;
快捷性,程序开发快,运行快,技术本身学习快。
嵌入于HTML:
因为PHP可以被嵌入于HTML语言,它相对于其他语言。
编辑简单,实用性强,更适合初学者;
跨平台性强,由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS、MacOS、Android等平台;
效率高,PHP消耗相当少的系统资源;
图像处理,用PHP动态创建图像,PHP图像处理默认使用GD2。
且也可以配置为使用imagemagick进行图像处理;
面向对象,在php4,php5中,面向对象方面都有了很大的改进,php完全可以用来开发大型商业程序;
专业专注,PHP支持脚本语言为主,同为类C语言。
[4]
和其他开发语言一样,PHP中也有很多实用的框架供开发者实用。
PHP框架是非常有用的工具,可以帮助开发者构建干净整洁和结构化的web开发,同时也加快了创建和维护web应用的速度。
在PHP开发中,选择合适的框架有助于加快软件开发,节约宝贵的项目时间,让开发者专注于功能的实现上。
一直以来php框架被广泛利用,而根据最新的调查显示,Laravel是PHP框架中最流行的一个,被称为“巨匠级PHP开发框架”。
Laravel是一套简洁、优雅的PHPWeb开发框架,代码简洁、富于表达力。
它的主要技术特点如下[5]:
1、在Laravel中已经具有了一套高级的PHPActiveRecord实现--EloquentORM。
它能方便的将“约束(constraints)”应用到关系的双方,这样你就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。
Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。
2、应用逻辑(ApplicationLogic)可以在控制器(controllers)中实现,也可以直接集成到路由(route)声明中,并且语法和Sinatra框架类似。
Laravel的设计理念是:
给开发者以最大的灵活性,既能创建非常小的网站也能构建大型的企业应用。
3、反向路由(ReverseRouting)赋予你通过路由(routes)名称创建链接(URI)的能力。
只需使用路由名称(routename),Laravel就会自动帮你创建正确的URI。
这样你就可以随时改变你的路由(routes),Laravel会帮你自动更新所有相关的链接。
4、自动加载类(ClassAuto-loading)简化了类(class)的加载工作,以后就可以不用去维护自动加载配置表和非必须的组件加载工作了。
当你想加载任何库(library)或模型(model)时,立即使用就行了,Laravel会自动帮你加载需要的文件。
5、视图组装器(ViewComposers)本质上就是一段代码,这段代码在视图(View)加载时会自动执行。
最好的例子就是博客中的侧边随机文章推荐,“视图组装器”中包含了加载随机文章推荐的逻辑,这样,你只需要加载内容区域的视图(view)就行了,其它的事情Laravel会帮你自动完成。
6、迁移(Migrations)就像是版本控制(versioncontrol)工具,不过,它管理的是数据库范式,并且直接集成在了Laravel中。
你可以使用“Artisan”命令行工具生成、执行“迁移”指令。
当你的小组成员改变了数据库范式的时候,你就可以轻松的通过版本控制工具更新当前工程,然后执行“迁移"
指令即可,好了,即可完成对数据的更新。
新浪微博API
新浪微博是一个由新浪网推出,提供微型博客服务类的社交网站。
经过多年的发展,新浪微博在国内社交领域的地位无可撼动,已融入到大众日常生活中,且具有用户群体大、粘性高的显著特点。
随着网络环境和移动终端功能的不断完善,微博用户随时随地获取、分享信息的需求激增,同时也为移动应用创造了无限的想象和发展空间。
而微博开放平台(WeiboOpenPlatform)是基于微博海量用户和强大的传播能力,接入第三方合作伙伴服务,向用户提供丰富应用和完善服务的开放平台。
微博开放平台为开发者提供了超过200个数据接口,包括微博内容、评论、用户、关系、话题等信息,API日均调用量超过330亿次。
不限语言、不限平台的自由接入,不收取任何费用。
可以帮助开发者在通过认证后快速获取需要的微博数据,调用需要
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业论文 基于 LBSN 个性化 社交 推荐 系统 设计 实现