• 收藏
  • 加入书签
添加成功
收藏成功
分享

基于标签的信息推荐研究

赖志伟 段元梅
  
一起电力科技
2022年7期
湖南科技学院 信息工程学院 湖南 永州 425199

摘要

推荐系统可以帮助用户快速发展有价值的信息。通过分析用户的历史行为,研究用户偏好,对用户兴趣建模,从而主动给用户推荐能够满足他们兴趣的信息。本质上,推荐系统是解决用户个性化信息获取的问题。在海量信息的情况下,用户容易迷失目标,本文阐述的推荐方法主动筛选信息,将基础数据与算法模型进行结合,帮助其确定目标,最终达到智能化推荐。高质量的推荐会使用户对系统产生依赖,建立长期稳定的关系,提高用户忠诚度。

关键词:标签;信息推荐;VSM

Abstract

Recommendation systems can help users develop valuable information quickly. By analyzing users' historical behaviors, studying users' preferences and modeling users' interests, we can actively recommend information that can meet their interests to users. In essence, recommendation system is to solve the problem of user personalized information acquisition. In the case of massive information, users are easy to lose their goals. The recommendation method described in this paper actively filters information and combines basic data with algorithm model to help them determine goals and finally achieve intelligent recommendation. High quality recommendation will make users depend on the system, establish long-term stable relationship and improve user loyalty.

Key words:

label; Information recommendation; VSM.

1 背景及意义

随着互联网规模的不断扩大,分类目录网站也只能覆盖少量的热门网站,越来越不能满足用户的需求,因此搜索引擎诞生了。搜索引擎可以让用户搜索关键词来找到自己所需要的信息,但是,搜索的前提就是用户要主动提供准确的关键词,但是如果用户无法准确的描述自己需求的关键词时,搜索引擎就无能为力了。而推荐系统不同,它不需要用户提供明确的需求,甚至连用户主动提出需求都不需要。推荐系统通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足它们兴趣和需求的内容。先总体来说,一个完整的推荐系统一般存在三个参与方:用户、内容提供者和提供推荐系统的网站。首先,推荐系统要满足用户的需求,给用户推荐那些让他们感兴趣的内容;其次,推荐系统要让内容提供者的内容都能被推荐给对其感兴趣的用户;最后,好的推荐系统设计,能够让推荐系统本身收集到高质量的用户反馈,不断提高推荐的质量,提高推荐系统的效益。

2 需求分析

当前系统的目标是实时向用户个性化推荐文章,一方面需要再推荐效率上达到准实时性要求,另一个方面需要做到千人千面的个性化推荐,并且能够做到随时间动态调整推荐策略。推荐模型以独立的模型运行,与现有信息推荐通过接口方式进行通信,以减少系统间的耦合性。

推荐系统方便用户及时获取个性化资讯的,减少用户浏览、检索信息的时间,并提供更好的阅读体验,从而增加用户黏性。例如,推荐新闻可基于内容的协同过滤推荐算法来实现,其中数据包括用户属性特征、浏览历史和新闻内容等,从而解决新闻量过大时给用户带来的信息过载和迷航问题。

对于常见“冷启动”问题,它是指网站刚刚成立,用户和新闻内容较少,用户的行为数据更少,所以协同过滤算法往往无效。需要设计相关算法缓解此问题,可以使用热门内容作为推荐结果,逐渐收集用户行为数据,不断完善推荐结果,吸引更多用户注册,从而形成良性循环。

3数据预处理

数据预处理是指在主要的处理以前对数据进行的一些处理。现实世界中数据大体上都是不完整,不一致的脏数据,无法直接进行数据挖掘,或挖掘结果差强人意。为了提高数据挖掘的质量产生了数据预处理技术。如果你拿到一个新数据集并打算模拟其中蕴藏的规律,你很容易直接在上面跑算法,然而这样做是错误的。第一步应该是理解数据本身,先从单变量统计分布的假设开始,如果效果不佳,再逐渐增加分析的复杂度。诸如中位数和箱线图这样的重要统计方法会让你轻松得到关于这些数据的一个大概的分布,这有助于你理解那些在真正分析前要修复的潜在问题。

某制造业相关的资讯类网站刚刚上线,目前数据量并不多,其中的文章为现有管理人员录入的或从网站爬取的,存于MSSQL数据中。经过爬虫抓取的数据包括HTML标签,需要将其转化为纯文本的形式,转化方法可用html2text组件,核心调用代码如下。

import html2text

html = open(html_content).read()

clean_text = html2text.html2text(html)

也可以采用BeautifulSoup组件进行内容提取与转换,BeautifulSoup原用于网页内容的抓取,它已成为和lxml、html6lib一样出色的解释器,为用户提供不同的解析策略或较快的相应速度。

4 内容分析

内容分析的主要任务是提取每一篇资讯的特征词,作为当前资讯的特征,然后构建向量空间模型(VSM),将特征词投射到向量空间中,在向量空间中建立词词之间的位置关系,从而确定资讯与特征词之间的相似度关系。在信息检索时,可以利用用户标签进行检索与之相近的资讯,从而实现向某一用户进行信息推荐的目的。

首先,从news_list .csv中循环读取资讯的编号、标题和纯文本内容,将标题与内容合并之后,过滤特殊字符,然后进行关键词提取,采用结巴分词套件中的方法,将关键词由空格分隔存为文本,每一行是一篇资讯。保存资讯关键词的同时,将资讯编号同步保存,按照行的索引顺序建立关联,即第n行的资讯关键词所对应的资讯编号是在new_article_ids.txt的第n行内容。资讯文本和编号保存完成之后,通过TextSimilar类建立向量空间模型,并将模型保存,如果下次运行时,模型已经存在,则直接加载模型,不需要重复构建。TextSimilar类主要负责向量空间模型的构建、关键词检索和增量更新的实现。

首先,引入必要的组件包,这些组件包分别用来VSM的构建和相似度计算,并设置相关变量,作为文本内容和资讯编号的存储路径,设置日志的标记等级。其中在训练方法中,首先对文本内容进行预处理,即读取文本,利用相关方法建立词典,并利用词典的相关方法构建语料,并将语料序列化存为文件供后续直接加载使用。然后调用相关方法进行语料特征提取,得到特征词。训练完成之后,即可调用相关方法查询某一资讯对应的文档向量,实现方法是将代表资讯的特征词列表输入到词典的相关方法中,建立词袋变量,并通过查询其TF-IDF的特征值,在相关模型中进行定位即可确定这篇资讯的文档向量值。

随着时间的增加,每天都会有大量的新资讯进入到系统中,设计的方法就是为了实现增量更新VSM实现,与训练过程相似,也是先建立新资讯的词袋值,加入到词典,并基于新词典建立新的语料,加入成功后,再调用模型的相关方法进行保存。

5基于协同过滤推荐

协同过滤是利用集体智慧的一个典型方法。要理解什么是协同过滤,首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想。协同过滤一般是在海量的用户中发掘出一小部分和你品位比较类似的,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的其他东西组织成一个排序的目录作为推荐给你。当然其中有一个核心的问题:如何确定一个用户是不是和你有相似的品位。如何将邻居们的喜好组织成一个排序的目录。

协同过滤相对于集体智慧而言,它从一定程度上保留了个体的特征,就是你的品位偏好,所以它更多可以作为个性化推荐的算法思想。可以想象,这种推荐策略在 Web 2.0 的长尾中是很重要的,将大众流行的东西推荐给长尾中的人怎么可能得到好的效果,这也回到推荐系统的一个核心问题:了解你的用户,然后才能给出更好的推荐。

(1)收集用户偏好

要从用户的行为和偏好中发现规律,并基于此给予推荐,如何收集用户的偏好信息成为系统推荐效果最基础的决定因素。用户有很多方式向系统提供自己的偏好信息,而且不同的应用也可能大不相同。在一般应用中,我们提取的用户行为一般都多于一种,关于如何组合这些不同的用户行为,基本上有以下两种方式。第一,将不同的行为分组。一般为“查看”行为,然后基于不同的行为,计算不同的用户/资讯相似度。类似于当当网或者 Amazon 给出的 “查看了资讯的人还查看了 ...”第二,加权操作。根据不同行为反映用户喜好的程度将它们进行加权,得到用户对于资讯的总体喜好。一般来说,显式的用户反馈比隐式的权值大,但比较稀疏,毕竟进行显示反馈的用户是少数;同时相对于“查看”行为反映用户喜好的程度更大,但这也因应用而异。

收集了用户行为数据,我们还需要对数据进行一定的预处理,其中最核心的工作就是:减噪和归一化。用户行为数据是用户在使用应用过程中产生的,它可能存在大量的噪音和用户的误操作,我们可以通过经典的数据挖掘算法过滤掉行为数据中的噪音,这样可以是我们的分析更加精确。如前面讲到的,在计算用户对资讯的喜好程度时,可能需要对不同的行为数据进行加权。但可以想象,不同行为的数据取值可能相差很大,比如,如何将各个行为的数据统一在一个相同的取值范围中,从而使得加权求和得到的总体喜好更加精确,就需要我们进行归一化处理。最简单的归一化处理,就是将各类数据除以此类中的最大值,以保证归一化后的数据取值在 [0,1] 范围中。进行的预处理后,根据不同应用的行为分析方法,可以选择分组或者加权处理,之后我们可以得到一个用户偏好的二维矩阵,一维是用户列表,另一维是资讯列表,值是用户对资讯的偏好,一般是 [0,1] 或者 [-1, 1] 的浮点数值。

(2)找到相似的用户或资讯

当已经对用户行为进行分析得到用户喜好后,我们可以根据用户喜好计算相似用户和资讯,然后基于相似用户或者资讯进行推荐,这就是最典型的 CF 的两个分支:基于用户的 CF 和基于资讯的 CF。这两种方法都需要计算相似度,下面我们先看看最基本的几种计算相似度的方法。关于相似度的计算,现有的几种基本方法都是基于向量(Vector)的,其实也就是计算两个向量的距离,距离越近相似度越大。在推荐的场景中,在用户 - 资讯偏好的二维矩阵中,我们可以将一个用户对所有资讯的偏好作为一个向量来计算用户之间的相似度,或者将所有用户对某个资讯的偏好作为一个向量来计算资讯之间的相似度。

(3)豆瓣的标签数据

用户用标签来描述对物品的看法,因此标签是联系用户和物品的纽带,也是反应用户兴趣的重要数据源,如何利用用户的标签数据提高个性化推荐结果的质量是推荐系统研究的重要课题。豆瓣很好地利用了标签数据,它将标签系统融入到了整个产品线中。首先,在每本书的页面上,豆瓣都提供了一个叫做“豆瓣成员常用标签”的应用,它给出了这本书上用户最常打的标签。同时,在用户给书做评价时,豆瓣也会让用户给图书打标签。最后,在最终的个性化推荐结果里,豆瓣利用标签将用户的推荐结果做了聚类,显示了对不同标签下用户的推荐结果,从而增加了推荐的多样性和可解释性。一个用户标签行为的数据集一般由一个三元组的集合表示,其中记录(u, i, b) 表示 用户u 给 物品i 打上了 标签b。当然,用户的真实标签行为数据远远比三元组表示的要复杂,比如用户打标签的时间、用户的属性数据、物品的属性数据等。但是为了集中讨论标签数据,只考虑上面定义的三元组形式的数据,即用户的每一次打标签行为都用一个三元组(用户、物品、标签)表示。

在本文资讯推荐中,只要拿到了用户标签行为数据,相信大家都可以想到一个最简单的个性化推荐算法。这个算法的描述如下所示。统计每个用户最常用的标签。对于每个标签,统计被打过这个标签次数最多的资讯。对于一个用户,首先找到他常用的标签,然后找到具有这些标签的最热门资讯推荐给这个用户。

6 结语

本文针对标签设计的信息推荐方法能够根据用户的兴趣给用户推荐资讯信息。其中的协同过滤推荐是在网站用户数量不断增加的前提下,首先设置的用来实现推荐的方法。该方法构建了用户偏好矩阵和用户相似度度量。

7参考资料

[1]马晓悦, 马昊. 考虑标签情绪信息的图书资源个性化推荐方法研究[J]. 情报理论与实践, 2020, 43(9):10.

[2]李红梅, 刁兴春, 曹建军,等. 基于潜在标签挖掘和细粒度偏好的个性化标签推荐[J]. 计算机应用研究, 2020(1):6.

[3]刘庆军, 张绍瑞, 罗军,等. 基于标签的信息推荐方法,装置,设备及存储介质:, CN112632390A[P]. 2021.

*本文暂不支持打印功能

monitor