基于机器学习的搜索推荐系统

article/2025/9/18 12:32:14

目录
一. 引言 1
二. 准备 2
一. 软件工程语言选择 2
二. 服务器的选取 2
三. 搜索服务 5
一. 搜索服务软件目录结构 5
二. 搜索服务功能 6
三. SPARQL语句分析 7
四. 经验与收获 8
五. 不足 8
六. 所需配置的环境与包 8
四.推荐功能服务 9
一.功能介绍 9
二. 推荐服务的目录结构 11
三. 推荐服务的逻辑流程 11
四. SPARQL分析 12
五. 经验与收获 13
六. 不足 14
七. 环境组件 14
五.基于机器学习的推荐算法分析 15
一. 基于机器学习的推荐算法分析 15
二. User-based算法与Iter-based算法对比 15
三. Item-based算法详细过程 16
四. Surprise库的介绍 17
二. 准备
一.软件工程语言选择
世界上有非常多的软件编译语言,主流的有C,C++,JAVA,PYTHON,C#等等。每一种编译语言都有他们自己的特点,每一种编译语言都有他们自己的库和相关的编译工具。用什么样的语言来实现我们搜索和推荐服务是首先要考虑的。
搜索和推荐服务是一个对互联网信息资源进行搜索整理、分类,并储存在网络数据库中供用户查询的系统,包括信息收集,信息分类,和目标查询三个部分组成。
从使用者的角度看,搜索和推荐服务提供一个包含搜索输入框的页面,在搜索框中输入词汇,通过浏览器提交给搜索后台服务引擎后,搜索后台服务引擎就会返回跟用户输入的内容相关的信息列表。其实这样的搜索后台服务引擎涉及到很多领域的理论和技术:数字图书馆,数据库,信息检索,信息提取,人工智能,机器学习,自然语言处理,计算机语言学,统计数据分析,数据挖掘,计算机网络,分布式处理等等,具有综合性和挑战性。
在世界范围内,百度,GOOGLE,搜狗就是非常好的搜索引擎。通过学习这些搜索服务,我们发现他们都是通过Web来进行搜索服务的。
因此我们确定我们的搜索和推荐服务也应当是通过TCP方式,HTTP协议,以Web的方式进行搜索和推荐服务,通过Web来实现搜索和推荐的交互功能。
在实现Web这样的B/S架构时,我们发现两种语言适用于开发这样的服务程序。一个是Java语言,一个是Python语言。
在Java语言中有Tomcat服务来实现网页与后台的相互传参,运算;在Python语言中有Callimachus和Django来实现网页与后台逻辑的通讯。
通过对比Java和Python开发我们发现:
·Java开发所需要的JDK版本一旦安装完成,在同一台PC机上是需要通过卸载重新安装来实现;在Python中对于Python2.7和Python3,我们通过virtualenv和anaconda等虚拟容易来盛放不同的python版本只需要通过cmd(windows下)命令就可以实现。
·Java中的库主要都是对于类型转换,和网页servlet方式的库;在python中不仅包含于网页的相关库,他更强大的是有很多算法库,由于python属于脚本语言,所有他所支持和库所涉及的功能范围比java库要更加多。
·在Java中进行相关的SPARQL查询,需要安装jena,并将安装好的jena文件进行相应的环境变量配置;但是在python中对于sparqlwrapper,只需要通过cmd命令(pip install xxx)就可以静待电脑自动安装相应文件,而不需要配置相应的环境变量。
因此基于以上分析,我们最终选用python来作为我们的软件开发语言。
二.服务器的选取
一个好的关联数据开发平台有助于提高开发效率。Callimachus和Django都是这样的一种平台。
2.1 Callimachus
尽管Callimachus的开发者们将其定义为关联数据管理系统,但是将其视为关联数据的应用服务器更加合适。Callichus主要具备以下特征:
·模板系统能自动为OWL类(OWL class)的所有成员生成网页。严格来说,OWL类与RDF schema类本身或其子类并无二致(取决于所用的OWL配置文件)。简单起见,我们认为OWL类与RDF Schema类是等价的。
·在运行时检索数据,并将其转换为RDF格式。
·将SPARQL查询与URL关联起来,对查询进行参数化,并使用带有图标库(charting library)的查询结果。
·PURL(持久化URL)实现
·基于DocBook的结构化书写系统(structured writing system)包括可视化编辑环境。
简而言之,Callimachus支持使用关联数据进行导航,可视化,构建应用程序等操作。数据既可以保存在本地,也可以从万维网上采集,甚至可以在载入Callimachus时被转换为RDF。
2.2 Django
而Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,模板T和视图V。
Django 项目是一个Python定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心优势有:
·用于创建模型的对象关系映射
·为最终用户设计的完美管理界面
·一流的 URL 设计
·设计者友好的模板语言
·缓存系统。
Django是一个基于MVC构造的框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。它们各自的职责如下:
模型(Model),即数据存取层:
处理与数据相关的所有事务:如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
模板(Template),即业务逻辑层:
处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。一般将网页html和js文件存放在此层中。
视图(View),即表现层
存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。在view里面进行python后台处理,他将网页的响应数据拿到,同时也为网页发送请求。
从以上表述可以看出Django 视图不处理用户输入,而仅仅决定要展现哪些数据给用户,而Django 模板 仅仅决定如何展现Django视图指定的数据。或者说, Django将MVC中的视图进一步分解为 Django视图 和 Django模板两个部分,分别决定 “展现哪些数据” 和 “如何展现”,使得Django的模板可以根据需要随时替换,而不仅仅限制于内置的模板。
2.3 对比
通过使用Callimachus和Django两种服务器我们发现:
1.Django在后台可以植入各种py文件来作为算法和逻辑基础;在Callimachus所有的sparql操作统一下xhtml上div块中进行书写,也就是Callimachus将业务逻辑基本集成在网页上面编写。
2.系统稳定性:Django早在2005年的时候就已经开始使用,网上对于Djano开发时所遇到的问题都有全面的回答,维护起来非常方便;Callimachus是在近几年才推出来的关联数据管理器,他虽然针对关联数据有很好的执行能力,但是在网上不止是关于他运行时的一些解决问题,就连关于他的介绍都微乎其微,在Callimachus运行的时候所遇到的维护问题只能靠自己解决,稳定性不确定,属于试验阶段。
3.开发周期:Django因为有越来越多的人在使用,而且出来较早,对于Django的查询和学习资料较为广泛,开发时间短;Callimachus因为网上资料确实太少,仅有的介绍只是Callimachus的官网说明,本文转载自http://www.biyezuopin.vip/onews.asp?id=14698因此开发难度较大,学习周期长。
基于以上分析,我们最终选用Django服务器来实现我们的搜索和推荐服务。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>文章检索</title>
<link href="/static/Paper_search.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/static/Paper_search.js">
</script>
</head><body><dl>
<form action="test" method="post">{%csrf_token%}<dt>请填写搜索的相关信息</dt><dd><input id="name" name="paper_name" type="text" class="text" value="文章名字" /></dd><dd><input id="contact" name="paper_author" type="text" class="text" value="文章作者" /></dd><dd style="z-index: 2;"><div id="btn_come_from_drop_down" class="select_normal"></div><input id="come_from" name="come_from" type="text" class="text" value="作者籍贯" /><ul id="come_from_drop_down" class="area"><li class="active">北京</li><li>Maine</li><li>Prince_Edward_Island</li><li>Brooklyn</li><li>Thomas Leo Clancy</li></ul></dd><dd class="clear"><input id="gender" name="gender" type="hidden" /><h2>性别</h2><ul class="sex"><li id="gender_man" title="男" class="men_active"></li><li id="gender_woman" title="女" class="woman_normal"></li></ul></dd><dd><h2>就这样去:</h2><div class="btn"><input type="submit" value="提交" /></div></dd>
</form>
</dl></body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/IAIPgxiW.shtml

相关文章

超好用的搜索引擎推荐

搜索引擎是我们信息资料搜集的最重要的渠道之一,用搜索引擎查找信息资料需要使用恰当的关键词和一些搜索技巧。目前国内主要的搜集引擎有如下10个,近期还有较多行业 型搜索冒出来,需找专业型行业资料可以使用行业型搜索引擎。 由于每个搜索引擎都有一定的局限性,可以把要…

搜索推荐相关

搜索算法 Learning to Rank方法&#xff1a; 1、单文档方法&#xff1a;根据query判断每个item的相似度 2、文档对方法&#xff1a;确定文档对的前后顺序 3、文档列表法&#xff1a;确定所有文档的先后顺序 Item&#xff1a;垂域、意图、语义相似性、item的热度、用户的搜索日…

推荐一个搜索引擎

yandex是一个俄罗斯搜索引擎。 https://yandex.com/ 最近很忙&#xff0c;月更。 水下文章。

ES-搜索推荐

1. 概述 搜索一般都会要求具有“搜索推荐”或者叫“搜索补全”的功能&#xff0c;即在用户输入搜索的过程中&#xff0c;进行自动补全或者纠错。以此来提高搜索文档的匹配精准度&#xff0c;进而提升用户的搜索体验&#xff0c;这就是Suggest。 ##四种Suggester 2. term sugge…

ul, li, a怎么用

<style type"text/css"> *{margin:0; padding:0;font-size:14px} body{padding-top:20px} ul,li{list-style: none} ul{background: yellow;} li{float:left; width:60px; height:50px;}//width:60px后加,不然ie li会比a宽 a{display:inline-block;padding:0 3…

html用ul li制作导航条

制作的导航条如图所示&#xff1a; 当鼠标滑过每个导航的时候&#xff0c;背景会变换颜色。技术点&#xff1a;将超链接a标签&#xff0c;转换成block标签&#xff0c;从而设置鼠标滑过时的背景色。代码如下所示&#xff1a; <html ><head><meta charset"…

HTML中的列表ol ul

<!DOCTYPE html> <html lang"en"> <head><title>列表</title> </head> <body><h3 style"background-color: rgb(102, 165, 165);">畅销图书榜</h3><hr/><!-- 有序列表 ol --><ol>…

ul及ol标签list-style-type介绍

ul及ol标签list-style-type介绍 1.ul/ol标签样式介绍 a.不设置ul中标签类型&#xff08;默认&#xff09;&#xff1a; 不设置ol中标签类型&#xff08;默认&#xff09;&#xff1a; b.设置方法代码&#xff1a; 在html中设置或者在CSS样式中设置 <style>#kl{list-s…

ul li 实例

之前使用过很多次的 ul li&#xff0c;不过都怎么规范&#xff0c;今天学习到一个整合“p、span、a”等标签的ul li实例&#xff0c;防止忘记&#xff0c;记录一下。 html代码 <span style"white-space:pre"> </span><li><h2>发明专利</h…

html中列表标签ul、ol、 dl的使用和介绍

一、UL列表介绍 ul 是无需列表&#xff0c;li列表里面的一条值&#xff0c;例如 <ul><li>中国</li><li>四川</li><li>成都</li></ul> 效果如下&#xff1a; 可以改变前面li的样式&#xff0c;通过给ul添加样式&#xff0c;其…

ul好看的li列表样式

以下是实际效果截图&#xff1a; 示例代码如下&#xff1a; <!DOCTYPE html> <html> <head> <style> .other-item-title{margin:10px 20px;padding:5px;line-height:30px;font-weight:400;border-bottom:1px solid #e8e9e7;color:#383937;position:re…

ul和ol的区别以及经验总结

一.ul是无序列表 网页中最为常见的列表&#xff0c;各个列表项之间为并列关系&#xff0c;没有顺序级别之分&#xff0c;如导航栏&#xff0c;新闻话题展示区等。 默认示例表现为&#xff08;默认带有实心圆&#xff09;&#xff1a; <ul><li>无序列表项1</li&g…

ul元素的使用

为了使网页更易读、排序有序、条理清晰&#xff0c;所以我们要学会ul元素——无序列表 效果图&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>元素的使用</title> </head&g…

为什么我们需要带上类型后缀?U/UL/ULL/L/LL

类型后缀 给变量赋值的时候分两个阶段。 第一步&#xff0c;如果没有指定字面量的类型&#xff0c;C99会找到一个能容纳字面量值的最小的带符号类型&#xff08;int / long int / long long int&#xff09;。 第二步&#xff0c;转换成左边变量类型并赋值。 long i 0xffff;…

IMX6ULL与IMX6UL异同(主要是优化了其成本:安全功能减低,优化功耗EMC SIM模块删除等与但和I.MX6UltraLite芯片是PIN-2-PIN兼容的)

I.MX6ULL相对于I.MX6UltraLite来说&#xff0c;主要是优化了其成本。与I.MX6UltraLite芯片是PIN-2-PIN兼容的&#xff0c;使的I.MX6ULL很容易在IMX6UL上重用&#xff0c;主要更改如下。 1. 增加了EPD显示支持与EPDC/PXP的低端电子阅读器&#xff0c;相对于6sl7d系列也是一个低…

论文阅读笔记(1)——《Ultra-Low Latency (ULL) Networks: The IEEE TSN and IETF DetNet Standards and Related 5G》

《超低延迟 (ULL) 网络&#xff1a;IEEE TSN 和 IETF DetNet 标准及相关 5G ULL 研究》 DOI&#xff1a;10.1109/COMST.2018.2869350 前言 IEEE 802.1 时间敏感网络 (TSN) 标准和相关研究旨在为 ULL 网络提供链路层支持&#xff0c;而新兴的 IETF 确定性网络 (DetNet) 标准则…

机器学习十大算法简介

本文对机器学习的常用算法进行常识性的认识&#xff0c;介绍这些算法是什么以及如何应用&#xff08;主要是针对分类问题&#xff09;以及对单个算法的理解的简介。本文要介绍的十大算法如下&#xff1a;①决策树&#xff1b;②随机森林&#xff1b;③逻辑回归&#xff1b;④SV…

常见的机器学习算法与人工神经网络

目录 1. 邻近算法K-NearesNeighbor (KNN) 1.1 KNN算法核心思想 1.2 KNN算法步骤 1.3 KNN预测分类 2. 图神经网络Graph Neural Networks (GNN) 2.1图的基本定义 2.2 图神经网络模型 3. 卷积神经网络Convolutional Neural Network (CNN) 3.1 CNN的结构 3.2 卷积 3.3 卷…

【KELM预测】基于粒子群算法改进核极限学习机(KELM)分类算法 matlab源码

一、核极限学习机 本文将介绍一种新的SLFN的算法&#xff0c;极限学习机&#xff0c;该算法将随机产生输入层和隐含层间的连接权值和隐含层神经元的阈值&#xff0c;且在训练过程中无需调整&#xff0c;只需要设置隐含层的神经元的个数&#xff0c;便可以获得唯一最优解&#x…

机器学习算法[9]--集成方法之XGBoost原理详解及XGBoost库实现

机器学习 1. XGBoost1.1 原理1.1.1 算法解析1.1.2 算法流程 1.2 XGBoost库实现 1. XGBoost 1.1 原理 XGBoost(Extreme Gradient Boosting)通过串行的方式迭代训练多个相互依赖的决策树回归模型&#xff0c;最后综合多个简单模型共同作用产生输出&#xff0c;在GBDT作出全面优…