加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用文本挖掘实现站点个性化推荐

发布时间:2021-01-12 13:18:47 所属栏目:大数据 来源:网络整理
导读:作者:韦玮,重庆韬翔收集科技有限公司(上海)董事长兼总司理,IT作家,CSDN社区专家。 ? 本文为韦玮原创文章,未经应承不得转载,点此查察作者有关《Python数据说明与发掘经典案例拭魅战》履历分享。 技能配景 一条信息是否可以或许让用户感乐趣,首要取决于这条

作者:韦玮,重庆韬翔收集科技有限公司(上海)董事长兼总司理,IT作家,CSDN社区专家。?
本文为韦玮原创文章,未经应承不得转载,点此查察作者有关《Python数据说明与发掘经典案例拭魅战》履历分享。

技能配景

一条信息是否可以或许让用户感乐趣,首要取决于这条信息的内容是否是用户存眷的内容。而将用户感乐趣的信息推送给对应的用户,可以更好地施展该信息的代价,不然,不只对应信息的代价无法有用施展,乃至会引起用户的情感,由于假如用户对这条信息不感乐趣,那么这条信息对付该用户来说就相等于垃圾信息。

此刻要害的题目是,怎样判定呈现有的信息中,哪些信息是用户感乐趣的信息,从而把这些用户也许感乐趣的信息推送给用户,这样对付用户来说,可以获取祈望的内容,对付企业来说,这可以更好地获取贸易好处。

好比,我们在行使今天头条的时辰,你会发明推送过来的文章根基上都是我们感乐趣的文章,这些文章都是本性化保举过来的。着实,假如我们可以将这项技能更好的操作,这可以改改观多规模。

可以想象,假如小嗣魅站点回收本性化保举技能,那么当读者在读一本小说的时辰,我们可以判定该读者的乐趣,并从小说库中选择出读者也许最感乐趣的小说,并将筛选出来的小说保举给该读者,那么此时,对付读者和网站来说是双赢的,好比就读者而言,节减了小说筛选的本钱,而且可以很利便地得到本身感乐趣的内容,就网站而言,将吻合的内容保举给吻合的用户,更有利于用户的付费。除此之外,本性化保举技能还可以应用到消息站点、商城、视泼魅站点等等方面。?
在本篇文章中,我们将为各人讲授怎样回收Python文本发掘技能实现本性化保举技能。

文本发掘技能(Text Mining)简介

文本发掘技能(Text Mining)是数据发掘技能中的一种,简朴来说,文本发掘技能就是对现有的一些文本信息举办说明、处理赏罚等,从而提取或计较出一些有代价的信息供我们行使的一种技能。

而在这篇文章中,我们首要用到文本发掘技能中的分词、文内情似度计较等技能,而文内情似度计较我们首要会回收TF-IDF算法,相干理论常识列位读者可以自行相识,本篇文章中首要会举办拭魅战的讲授。

将文本发掘技能应用于本性保举的思绪

那么,我们怎样将文本发掘技能应用于本性保举呢??
看起来这两者确实不太相干,但现实上这两者相关亲近。

好比,我们可以这样实现本性保举:?
1、起首,记任命户在网站中的举动,好比看了哪些文章、阅读了哪些小说等等举动。?
2、其次,将用户长时刻寓目标这些小说(以小嗣魅站点为例)数据提取出来,获得数据1(data1)。?
3、然后,将data1与站点内的全部小说数据别离举办文内情似度计较,最终筛选出相似度高的小说数据,好比取前两内情似度最高的小说,获得小说2(data2)、小说3(data3)。?
4、将data2、data3保举给该用户。由于这两本小说用户今朝长时刻阅读的小说相似度最高,以是一样平常这两本小说与用户手头上这本小说的气魄威风凛凛、范例会根基同等,以是,一样平常用户同样会对这两本小说感乐趣。?
5、对付其他用户,我们同样可以回收1-4的方法给其保举相似度高的小说。?
此时我们以小嗣魅站点为例讲授了用文本发掘技能实现本性化保举的思绪,我们可以看到,要害点在于文内情似度的计较,其他站点的实现思绪也可以参照该思绪举办。

焦点步调

此刻我们已经明晰了本性化保举需求的实现思绪,接下来我们清算一下实现的焦点步调。

我们可以回收以下步调举办(以小嗣魅站点为例,其他站点相同):?
1、读取站点中全部小说数据?
2、对要计较的多本小说数据别离举办分词?
3、对要计较的多本小说数据别离清算成指命名目,利便后续举办计较?
4、计较出词语的频率?
5、(可选)过滤掉频率低的词语?
6、通过语料库成立辞书?
7、读取用户当前存眷的小说的数据?
8、将用户当前存眷的小说的数据通过doc2bow转化为稀少向量?
9、对稀少向量举办进一步处理赏罚,获得新语料库?
10、将新语料库通过tfidfmodel举办处理赏罚,获得tfidf?
11、通过token2id获得特性数?
12、稀少矩阵相似度计较,从而成立索引?
13、别离获得用户当前存眷的小说与小说库中各小说的相似度功效?
14、提取出相似度高的小说,保举给该用户

实现进程

上面我们已经讲授了实践的焦点步调,接下来我们举办详细的实现,在此回收的开拓说话是Python,必要的第三方库有:jieba、gensim,必要提前行使pip安装好,如下:

pip install jieba
pip install genism

起首我们假设一下景象(为了担保前后同等,同样以小嗣魅站点为例,其他范例站点参考即可),若是此刻我们的处事器中有3本小说,别离是盗墓条记(处事器中文件名为dmbj.html)、老九门(处事器中文件名为ljm.html)、鬼吹灯(处事器中文件名为gcd.html),此刻读者正在看盗墓条记,必要我们从老九门与鬼吹灯中(插手小说库中小说更多,计较要领也是一样的)保举一内情似度高的小说给读者。

起首,我们必要读取站点中除读者当前正在阅读的这本小说之外的全部小说数据(虽然也可以把读者正在阅读的这本小说读取一下,只不外这样的话后头的功效必要去除相似度为1的小说数据),如下所示:

import urllib.request
 #读取老九门这本小说
d1=urllib.request.urlopen("http://127.0.0.1/ljm.html").read().decode("utf-8","ignore")
#读取鬼吹灯这本小说
d2=urllib"http://127.0.0.1/gcd.html")"ignore")

读取了小说数据之后,接下来我们必要对要计较的多本小说数据别离举办分词,在这里,我们会行使jieba库举办分词处理赏罚,如下所示:

import jieba
data1=jieba.cut(d1)
data2=jieba.cut(d2)

分词之后,我们必要对要计较的多本小说数据别离清算成指命名目,利便后续举办计较,如下所示:

data11=""
for item in data1:
    data11+=item+" "
data21=item in data2:
    data21+=" "
docs=[data11,data21]

随后,我们必要计较出各词语的频数,如下所示:

tall=[[w1 for w1 in doc.split()]
        for doc in docs]
from collections import defaultdict
frequency=defaultdict(int)
text in tall:
    token in text:
        frequency[token]+=1

统计出频数之后,我们可以过滤掉频率低的词语,虽然这是在词语许多的环境下,假如原来就词语量有限,好比小说的内容很是少,那么此时我们就不必要过滤了。也就是说,是否必要过滤,首要取决于词语量的巨细,若词语量大,连过滤之后说明服从会更高,若词语量过小,显然不该该再过滤,不然过滤之后的词语就更少了。详细过滤的方法如下,因为这几本小说的词语量很大,以是频数在25以下的词语我们都过滤掉了:

tall=[[token text if frequency[token]>25]
        text in tall]

举办了词语的过滤之后,我们必要通过语料库成立辞书,详细如下所示:

dictionary=corpora.Dictionary(tall)

接下来,我们必要读取用户当前存眷的小说的数据,因为适才我们假设的景象中,用户正在读盗墓条记这本小说,以是此时我们必要加载盗墓条记这本小说的数据,详细如下所示:

thisnoveldata=urllib"http://127.0.0.1/dmbj.html")"ignore")
data3=jieba.cut(thisnoveldata)
data31=""
for item in data3:
    data31+=item+" "
this_novel=data31

读取了用户当前存眷的小说数据之后,我们可以将用户当前存眷的小说的数据通过doc2bow转化为稀少向量,详细如下所示:

new_vec=dictionary.doc2bow(this_novel.split())

随后,我们可以对稀少向量举办进一步处理赏罚,获得新语料库,如下所示:

corpus=[dictionary.doc2bow(text)  获得新语料库之后,我们可以将新语料库通过tfidfmodel举办处理赏罚,获得tfidf:

tfidf=models.TfidfModel(corpus)

然后,可以通过token2id获得特性数,如下所示:

num=len(dictionary.token2id.keys())

获得特性数之后,通过SparseMatrixSimilarity举办稀少矩阵相似度计较,从而成立索引:

index = similarities.SparseMatrixSimilarity(tfidf[corpus],num_features=num)

接下来,我们别离获得用户当前存眷的小说与小说库中各小说的相似度功效:

sim=index[tfidf[new_vec]]

此时,sim中就包括了对应的相似度计较功效,我们可以通过print(sim) 将该功效打印出来,获得的功效如下所示:

================= RESTART: D:我的解说Python dmbj.py =================

Warning (from warnings module):
  File "D:Python35libsite-packagesgensimutils.py",line 840
    warnings.warn("detected Windows; aliasing chunkize to chunkize_serial")
UserWarning: detected Windows; aliasing chunkize to chunkize_serial

Warning (from warnings module):
  File "D:UsersmeAppDataLocalTempjieba.cache
Loading model cost 0.823 seconds.
Prefix dict has been built succesfully.
[ 0.12281458  0.36768654]

可以看到,此时盗墓条记跟老九门的相似度为0.12,鬼吹灯的相似度为0.37。?
最后,我们可以提取出相似度高的小说,保举给该用户,显然此时我们会将鬼吹灯这本小说推送给当前的读者。

写在后头的话

在这篇文章中,我们以小嗣魅站点为例对本性化保举举办了过细的讲授,其他范例的站点也可以参照这种要领来实现本性化保举,好比消息网站可以计较站点全部消息用户当前花较长时刻阅读的消息的相似度,从而举办本性化保举。

在电商网站或视频网站中,假如要回收这种方法实现本性化保举,因为文本资料较量缺乏,以是此时我们可以将对应视频可能对应商品的评述信息或描写信息作为文本资料举办计较,方可办理文本资料缺乏的题目。

同时,这篇文章中只是给出了本性化保举的个中一种办理方案,实现本性化保举尚有多种多样的方案,在此,但愿可以或许抛砖引玉,让各人对本性化保举题目有一个较好的思索。

点此查察作者有关《Python数据说明与发掘经典案例拭魅战》履历分享。

图片描写

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读