基于JavaSSM的新闻推荐系统

发布于:2022-12-18 ⋅ 阅读:(384) ⋅ 点赞:(0)

目 录
1 环境搭建 4
1.1 新建工程 4
1.2 引入spring+springmvc 5
1.3 引入mysql+mybatis 6
2 主要技术实现 11
2.1 算法实现 11
2.2 计算TF 13
3 数据库 16
3.1 用户表(users) 16
3.2 用户token表(users_token) 17
3.3 新闻表(news) 17
3.4 新闻类别表(news_type) 18
4 主要功能 19
4.1 用户管理 19
4.1.1 注册、登录(管理员、普通用户) 19
4.1.2 修改用户信息(管理员、普通用户) 19
4.1.3 删除用户信息(管理员) 20
4.1.4 获取用户信息(管理员、普通用户) 20
4.1.5 管理员获取普通用户信息(管理员) 20
4.1.6 获取用户信息列表(管理员) 20
4.2 新闻管理 21
4.2.1 添加新闻类别(管理员) 21
4.2.2 获取新闻类别列表 21
4.2.3 添加新闻(管理员) 22
4.2.4 删除新闻(管理员) 22
4.2.5 获取新闻列表(普通用户/管理员) 23
4.2.6 获取新闻内容(普通用户/管理员) 23
4.2.7 查看历史记录(普通用户/管理员) 24
4.2.8 搜索新闻(普通用户/管理员) 24
4.2.9 推荐新闻(普通用户/管理员) 24
5 版本历史 25
2 主要技术实现
2.1 算法实现
TF-IDF算法

其实这个是两个词的组合,可以拆分为TF和IDF。

TF(Term Frequency,缩写为TF)也就是词频啦,即一个词在文中出现的次数,统计出来就是词频TF,显而易见,一个词在文章中出现很多次,那么这个词肯定有着很大的作用,但是我们自己实践的话,肯定会看到你统计出来的TF 大都是一些这样的词:‘的’,‘是’这样的词,本文转载自http://www.biyezuopin.vip/onews.asp?id=15106这样的词显然对我们的分析和统计没有什么帮助,反而有的时候会干扰我们的统计,当然我们需要把这些没有用的词给去掉,现在有很多可以去除这些词的方法,比如使用一些停用词的语料库等。

假设我们把它们都过滤掉了,只考虑剩下的有实际意义的词。这样又会遇到了另一个问题,我们可能发现"中国"、“蜜蜂”、"养殖"这三个词的出现次数一样多。这是不是意味着,作为关键词,它们的重要性是一样的?

显然不是这样。因为"中国"是很常见的词,相对而言,"蜜蜂"和"养殖"不那么常见。如果这三个词在一篇文章的出现次数一样多,有理由认为,“蜜蜂"和"养殖"的重要程度要大于"中国”,也就是说,在关键词排序上面,"蜜蜂"和"养殖"应该排在"中国"的前面。

所以,我们需要一个重要性调整系数,衡量一个词是不是常见词。如果某个词比较少见,但是它在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词。

用统计学语言表达,就是在词频的基础上,要对每个词分配一个"重要性"权重。最常见的词(“的”、“是”、“在”)给予最小的权重,较常见的词(“中国”)给予较小的权重,较少见的词(“蜜蜂”、“养殖”)给予较大的权重。这个权重叫做"逆文档频率"(Inverse Document Frequency,缩写为IDF),它的大小与一个词的常见程度成反比。

知道了"词频"(TF)和"逆文档频率"(IDF)以后,将这两个值相乘,就得到了一个词的TF-IDF值。某个词对文章的重要性越高,它的TF-IDF值就越大。所以,排在最前面的几个词,就是这篇文章的关键词。

<!DOCTYPE html>  
<html lang="en">  
<head>  
	<meta name="Content-type" content="text/html; charset=UTF-8"><!--  无效:Chrome会乱码-->
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"><!-- 有效-->
   <!--  <meta name="X-UA-Compatible" content="IE=9;IE=8;IE=7;IE=EDGE">-->
   <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
    <title>Login</title>  
    <link rel="stylesheet" type="text/css" href="Login.css"/>  
</head>  
<body>  
			
			

    <div id="login">  
        <h1>新闻推荐系统</h1>  
        
        <form action="userLogin" method="get">  
			<div style="text-align:center;">
				<input type="radio" name="level" value="1">管理员
				<input type="radio" name="level" value="2">普通用户
			</div>
			
            <input class="info" type="text" required="required" placeholder="用户名" name="username"></input>  
            <input class="info" type="password" required="required" placeholder="密码" name="password"></input>  
            <button class="but" type="submit" style="text-align">登录</button> 
           <div style="text-align:center;"> 
		   	<a id="btnForgetPwd" href="forgetpwd" target="_blank" style="" class="but2">忘记密码</a>
            <a  class="but2" href="regist.html" target="_blank" style="margin-left:10px;">立即注册</a></div>
            </div>
        </form>  
    </div>  
    
</body>  
</html>  

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


网站公告

今日签到

点亮在社区的每一天
去签到