基于内容的推荐系统与在饮食推荐方面的实践

目 录
摘要 I
目录 III
1 绪论 1
1.1课题研究的背景和意义 1
1.2国内外研究现状 2
1.3课题的主要工作以及论文结构 3
2 基于内容的推荐系统的概述 5
2.1 引言 5
2.2数据的收集和存储 5
2.3基于内容的推荐算法 6
2.4对推荐结果的评价 7
2.5 本章小结 8
3基于内容的菜谱推荐方法 9
3.1 引言 9
3.2对文本进行分词 9
3.3文本相似度计算 10
3.4基于同义词词林扩展的相似度计算 12
3.5推荐算法实验 15
3.6 本章小结 19
4推荐系统的搭建与评价 20
4.1 引言 20
4.2推荐系统架构 20
4.3推荐系统的功能 21
4.4对推荐结果的评价 24
4.5 本章小结 26
5推荐系统性能测试与展望 27
5.1 引言 27
5.2系统性能测试和优化 27
5.3对推荐系统的展望 30
5.4 本章小结 31
6 总结 32
参考文献 33
3 基于内容的菜谱推荐方法
3Content-based Recipes Recommended Method
3.1引言(Introduction)
要通过算法对菜谱进行推荐,就要研究菜谱结构化后的文本数据应该怎么处理。对于文本数据提取特征值,最常见的就是抽取其中的关键词,赋予一定的权重然后通过余弦相似度进行计算。
对现有的基于内容的推荐算法的研究,本文设计了一套适用于推荐菜谱的推荐方法。本章通过前面所定义的菜谱的属性,为每一项属性使用不同的方法抽取特征值计算相似度,最终再给每个相似度加权计算最终的相似度,排序后就是初步的推荐结果。
3.2对文本进行分词(To Characterize the Text)
对于结构化的菜谱数据,每一项属性的值都是一条文本,计算相似度所使用的最小粒度为单词。所以选择合适的分词工具对属性值进行分词就十分必要。除了分词的基本功能外,这个工具还要具有能够高效准确的分词,添加自定义词典以及过滤无用词等功能。其中高效准确的分词是基础,一个分词速度快的工具能够提高推荐的速度;添加自定义词典是为了避免分词的结果出现错误,载入词典的单词采用最长字符串匹配原则,一旦匹配到最长的单词就不会再往下细分;过滤无用词是为了将不需要的或者无意义的单词过滤掉,如:“的”,“啊”等停止词。本文选择的工具是国人开发的一款开源分词工具 ansj , 使用了
n-Gram+CRF+HMM 三种模型进行分词,分词能够达到每秒钟大约200 万字左右, 还支持自定义词典和过滤无用词。对于分词结果还标注了单词的词性,通过选择需要过滤的词性可以很方便的得到想要的分词结果集,本文转载自http://www.biyezuopin.vip/onews.asp?id=14490支持的词性由《现代汉语语料库加工规范——词语切分与词性标注》定义。通过 maven 可以很方便的引入工程进行管理,调用的 API 设计简单方便调用。
在实际使用过程中,需要先对要过滤的词性进行定义,以 Set的类型作为类的私有变量存储需要的词性。工程中调用API 的实际流程以图3-1 表示,
simDAO 用于和数据库进行连接,以原料类为例,里面的方法调用 split 中的
getFilterWord()方法进行分词。
下面我们以菜谱数据库中 id 为 2025 的“麻婆豆腐”为例,来讲如何对属性的文本进行分词。通过对“原料”属性进行分词,过滤保留的词性为各类名词,得到的结果为[牛肉:n 猪肉:n 葱:n 油:n 豆豉:n 花椒:n 粉:n 大蒜:n 酱油:n 豆腐:n 辣椒粉:n 精盐:n 鸡汤:n 菱:ng 粉:n 黄酒:n],基本符合我们对分词的想要的结果。
在实际工程中,还要对不正确的分词进行词典的添加和无用词的过滤,例如上面的“粉”就分词粒度太细,可以将该词加入无用词过滤。同时不同的属性也要保留不同的词性的单词,对于“原料”列只过滤名词,但是对于“做法”列则可能需要过滤名词,动词和形容词等。

<%--
  Created by IntelliJ IDEA.
  User: sunyang
  Date: 2016/12/8
  Time: 下午12:10
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册</title>
</head>
<body>
<form action="/UserRegist" method="post">
    <table align = "center" border="1" style="border-collapse: collapse;">
        <tr>
            <td colspan="2">用户注册</td>
        </tr>
        <tr>
            <td>用户名:</td>
            <td><input type="text" name="userName" /></td>
        </tr>
        <tr>
            <td>密码:</td>
            <td><input type="password" name="userPassword" /></td>
        </tr>
        <tr>
            <td class="tdstyle" colspan="2">
                <input type="submit" value="注册" />
            </td>
        </tr>
    </table>
</form>
</body>
</html>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值