幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

物以类聚人以群分,Gensim的Lda聚类算法构建个性化推荐

  众所周知,个性化推荐系统能够根据用户的兴趣、偏好等信息向用户推荐相关内容,使得用户更感兴趣,从而提升用户体验,提高用户粘度,之前我们曾经使用协同过滤算法构建过个性化推荐系统,但基于显式反馈的算法就会有一定的局限性,本次我们使用无监督的Lda文本聚类方式来构建文本的个性化推荐系统。推荐算法:协同过滤Lda聚类
  我们知道,协同过滤算法是一种基于用户的历史行为来推荐物品的算法。协同过滤算法利用用户之间的相似性来推荐物品,如果两个用户对某些物品的评分相似,则协同过滤算法会将这两个用户视为相似的,并向其中一个用户推荐另一个用户喜欢的物品。
  说白了,它基于用户的显式反馈,什么是显式反馈?举个例子,本如本篇文章,用户看了之后,可能会点赞,也可能会疯狂点踩,或者写一些关于文本的评论,当然评论内容可能是负面、正面或者中性,所有这些用户给出的行为,都是显式反馈,但如果用户没有反馈出这些行为,就只是看了看,协同过滤算法的效果就会变差。
  LDA聚类是一种文本聚类算法,它通过对文本进行主题建模来聚类文本。LDA聚类算法在聚类文本时,不考虑用户的历史行为,而是根据文本的内容和主题来聚类。
  说得通俗一点,协同过滤是一种主动推荐,系统根据用户历史行为来进行内容推荐,而LDA聚类则是一种被动推荐,在用户还没有产生用户行为时,就已经开始推荐动作。
  LDA聚类的主要目的是将文本分为几类,使得每类文本的主题尽可能相似。
  LDA聚类算法的工作流程大致如下:
  1。对文本进行预处理,去除停用词等。
  2。使用LDA模型对文本进行主题建模,得到文本的主题分布。
  3。将文本按照主题分布相似性进行聚类。
  4。将聚类结果作为类标签,对文本进行分类。
  大体上,LDA聚类算法是一种自动将文本分类的算法,它通过对文本进行主题建模,将文本按照主题相似性进行聚类,最终实现文本的分类。Python3。10实现
  实际应用层面,我们需要做的是让主题模型能够识别在文本里的主题,并且挖掘文本信息中隐式信息,并且在主题聚合、从非结构化文本中提取信息。
  首先安装分词以及聚类模型库:pip3installjiebapip3installgensim
  随后进行分词操作,这里以笔者的几篇文章为例子:importjiebaimportpandasaspdimportnumpyasnptitle1乾坤大挪移,如何将同步阻塞(sync)三方库包转换为异步非阻塞(async)模式?Python3。10实现。title2Generator(生成器),入门初基,Coroutine(原生协程),登峰造极,Python3。10并发异步编程async底层实现title3周而复始,往复循环,递归、尾递归算法与无限极层级结构的探究和使用(Golang1。18)title4彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战JWT和中间件(Middleware)的使用EP07content〔title1,title2,title3,title4〕分词contentS〔〕allwords〔〕forlineincontent:currentsegment〔wforwinjieba。cut(line)iflen(w)1〕forxincurrentsegment:allwords。append(x)iflen(currentsegment)1andcurrentsegment!r:contentS。append(currentsegment)分词结果转为DataFramedfcontentpd。DataFrame({contentS:contentS})print(allwords)
  可以看到,这里通过四篇文章标题构建分词列表,最后打印分词结果:〔乾坤,挪移,如何,同步,阻塞,sync,三方,库包,转换,异步,阻塞,async,模式,Python3。10,实现,Generator,生成器,入门,初基,Coroutine,原生,协程,登峰造极,Python3。10,并发,异步,编程,async,底层,实现,周而复始,往复,循环,递归,递归,算法,无限极,层级,结构,探究,使用,Golang1。18,彩虹,女神,长空,Go,语言,进阶,Go,语言,高性能,Web,框架,Iris,项目,实战,JWT,中间件,Middleware,使用,EP07〕
  接着就可以针对这些词进行聚类操作,我们可以先让ChatGPT帮我们进行聚类看看结果:
  可以看到,ChatGPT已经帮我们将分词结果进行聚类操作,分为两大类:Python和Golang。
  严谨起见,我们可以针对分词结果进行过滤操作,过滤内容是停用词,停用词是在文本分析、自然语言处理等应用中,用来过滤掉不需要的词的。通常来说,停用词是指在英文中的介词、代词、连接词等常用词,在中文中的助词、介词、连词等常用词:》),)(,)、(:一一’。。一。【}昉{},也‘’‘:一。。数数〕〔:。。。。。。。。。。。。。。。。。。。。。。{}。日〉】元吨:::?、。《》!,:;?,??()〔〕〔〕();subexpsupsubLex。。。。。。〉第二一番一直一个一些许多种有的是也就是说末末啊阿哎哎呀哎哟唉俺俺们按按照吧吧哒把罢了被本本着比比方比如鄙人彼彼此边别别的别说并并且不比不成不单不但不独不管不光不过不仅不拘不论不怕不然不如不特不惟不问不只朝朝着趁趁着乘冲除除此之外除非除了此此间此外从从而打待但但是当当着到得的的话等等等地第叮咚对对于多多少而而况而且而是而外而言而已尔后反过来反过来说反之非但非徒否则嘎嘎登该赶个各各个各位各种各自给根据跟故故此固然关于管归果然果真过哈哈哈呵和何何处何况何时嘿哼哼唷呼哧乎哗还是还有换句话说换言之或或是或者极了及及其及至即即便即或即令即若即使几几时己既既然既是继而加之假如假若假使鉴于将较较之叫接着结果借紧接着进而尽尽管经经过就就是就是说据具体地说具体说来开始开外靠咳可可见可是可以况且啦来来着离例如哩连连同两者了临另另外另一方面论嘛吗慢说漫说冒么每每当们莫若某某个某些拿哪哪边哪儿哪个哪里哪年哪怕哪天哪些哪样那那边那儿那个那会儿那里那么那么些那么样那时那些那样乃乃至呢能你你们您宁宁可宁肯宁愿哦呕啪达旁人呸凭凭借其其次其二其他其它其一其余其中起起见起见岂但恰恰相反前后前者且然而然后然则让人家任任何任凭如如此如果如何如其如若如上所述若若非若是啥上下尚且设若设使甚而甚么甚至省得时候什么什么样使得是是的首先谁谁知顺顺着似的虽虽然虽说虽则随随着所所以他他们他人它它们她她们倘倘或倘然倘若倘使腾替通过同同时哇万一往望为为何为了为什么为着喂嗡嗡我我们呜呜呼乌乎无论无宁毋宁嘻吓相对而言像向向着嘘呀焉沿沿着要要不要不然要不是要么要是也也罢也好一一般一旦一方面一来一切一样一则依依照矣以以便以及以免以至以至于以致抑或因因此因而因为哟用由由此可见由于有有的有关有些又于于是于是乎与与此同时与否与其越是云云哉再说再者在在下咱咱们则怎怎么怎么办怎么样怎样咋照照着者这这边这儿这个这会儿这就是说这里这么这么点儿这么些这么样这时这些这样正如吱之之类之所以之一只是只限只要只有至至于诸位着着呢自自从自个儿自各儿自己自家自身综上所述总的来看总的来说总的说来总而言之总之纵纵令纵然纵使遵照作为兮呃呗咚咦喏啐喔唷嗬嗯嗳
  这里使用哈工大的停用词列表。
  首先加载停用词列表,然后进行过滤操作:去除停用词defdropstopwords(contents,stopwords):contentsclean〔〕allwords〔〕forlineincontents:lineclean〔〕forwordinline:ifwordinstopwords:continuelineclean。append(word)allwords。append(word)contentsclean。append(lineclean)returncontentsclean,allwords停用词加载stopwordspd。readtable(stopwords。txt,names〔stopword〕,quoting3)contentsdfcontent。contentS。values。tolist()contentsclean,allwordsdropstopwords(contents,stopwords)
  接着交给Gensim进行聚类操作:fromgensimimportcorpora,models,similaritiesimportgensimdictionarycorpora。Dictionary(contentsclean)corpus〔dictionary。doc2bow(sentence)forsentenceincontentsclean〕ldagensim。models。ldamodel。LdaModel(corpuscorpus,id2worddictionary,numtopics2,randomstate3)print(lda。printtopics(numtopics2,numwords4))fore,valuesinenumerate(lda。inference(corpus)〔0〕):print(content〔e〕)foree,valueinenumerate(values):print(分类d推断值。2f(ee,value))
  这里使用LdaModel模型进行训练,分类设置(numtopics)为2种,随机种子(randomstate)为3,在训练机器学习模型时,很多模型的训练过程都会涉及到随机数的生成,例如随机梯度下降法(SGD)就是一种随机梯度下降的优化算法。在训练过程中,如果不设置randomstate参数,则每次训练结果可能都不同。而设置randomstate参数后,每次训练结果都会相同,这就方便了我们在调参时对比模型的效果。如果想要让每次训练的结果都随机,可以将randomstate参数设置为None。
  程序返回:〔〔乾坤,挪移,同步,阻塞,sync,三方,库包,转换,异步,阻塞,async,模式,Python3。10,实现〕,〔Generator,生成器,入门,初基,Coroutine,原生,协程,登峰造极,Python3。10,并发,异步,编程,async,底层,实现〕,〔周而复始,往复,循环,递归,递归,算法,无限极,层级,结构,探究,使用,Golang1。18〕,〔彩虹,女神,长空,Go,语言,进阶,Go,语言,高性能,Web,框架,Iris,项目,实战,JWT,中间件,Middleware,使用,EP07〕〕乾坤大挪移,如何将同步阻塞(sync)三方库包转换为异步非阻塞(async)模式?Python3。10实现。分类0推断值0。57分类1推断值14。43Generator(生成器),入门初基,Coroutine(原生协程),登峰造极,Python3。10并发异步编程async底层实现分类0推断值0。58分类1推断值15。42周而复始,往复循环,递归、尾递归算法与无限极层级结构的探究和使用(Golang1。18)分类0推断值12。38分类1推断值0。62彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战JWT和中间件(Middleware)的使用EP07分类0推断值19。19分类1推断值0。81
  可以看到,结果和ChatGPT聚类结果一致,前两篇为一种分类,后两篇为另外一种分类。
  随后可以将聚类结果保存为模型文件:lda。save(mymodel。model)
  以后有新的文章发布,直接对新的文章进行分类推测即可:fromgensim。modelsimportldamodelimportpandasaspdimportjiebafromgensimimportcorporadoc0巧如范金,精比琢玉,一分钟高效打造精美详实的Go语言技术简历(Golang1。18)加载模型ldaldamodel。LdaModel。load(mymodel。model)content〔doc0〕分词contentS〔〕forlineincontent:currentsegment〔wforwinjieba。cut(line)iflen(w)1〕iflen(currentsegment)1andcurrentsegment!r:contentS。append(currentsegment)分词结果转为DataFramedfcontentpd。DataFrame({contentS:contentS})去除停用词defdropstopwords(contents,stopwords):contentsclean〔〕allwords〔〕forlineincontents:lineclean〔〕forwordinline:ifwordinstopwords:continuelineclean。append(word)allwords。append(word)contentsclean。append(lineclean)returncontentsclean,allwords停用词加载stopwordspd。readtable(stopwords。txt,names〔stopword〕,quoting3)contentsdfcontent。contentS。values。tolist()contentsclean,allwordsdropstopwords(contents,stopwords)dictionarycorpora。Dictionary(contentsclean)word〔wforwinjieba。cut(doc0)〕bowdictionary。doc2bow(word)print(lda。getdocumenttopics(bow))
  程序返回:nlpchineseopthomebrewbinpython3。10Usersliuyuewodfanworknlpchinesenewtext。pyBuildingprefixdictfromthedefaultdictionary。。。Loadingmodelfromcachevarfolders5xgpftd0654bv7zvzyv39449rc0000gpTjieba。cacheLoadingmodelcost0。264seconds。Prefixdicthasbeenbuiltsuccessfully。〔(0,0。038379338),(1,0。9616206)〕
  这里显示文章推断结果为分类2,也就是Golang类型的文章。
  完整调用逻辑:importjiebaimportpandasaspdimportnumpyasnpfromgensim。modelsimportldamodelfromgensimimportcorpora,models,similaritiesimportgensimclassLdaRec:definit(self,cotent:list)None:self。contentcontentself。contentsclean〔〕self。ldaNonedeftesttext(self,content:str):self。ldaldamodel。LdaModel。load(mymodel。model)self。content〔content〕分词contentS〔〕forlineinself。content:currentsegment〔wforwinjieba。cut(line)iflen(w)1〕iflen(currentsegment)1andcurrentsegment!r:contentS。append(currentsegment)分词结果转为DataFramedfcontentpd。DataFrame({contentS:contentS})contentsdfcontent。contentS。values。tolist()dictionarycorpora。Dictionary(contents)word〔wforwinjieba。cut(content)〕bowdictionary。doc2bow(word)print(self。lda。getdocumenttopics(bow))训练deftrain(self,numtopics2,randomstate3):dictionarycorpora。Dictionary(self。contentsclean)corpus〔dictionary。doc2bow(sentence)forsentenceinself。contentsclean〕self。ldagensim。models。ldamodel。LdaModel(corpuscorpus,id2worddictionary,numtopicsnumtopics,randomstaterandomstate)fore,valuesinenumerate(self。lda。inference(corpus)〔0〕):print(self。content〔e〕)foree,valueinenumerate(values):print(分类d推断值。2f(ee,value))过滤停用词defdropstopwords(self,contents,stopwords):contentsclean〔〕forlineincontents:lineclean〔〕forwordinline:ifwordinstopwords:continuelineclean。append(word)contentsclean。append(lineclean)returncontentscleandefcutword(self)list:分词contentS〔〕forlineinself。content:currentsegment〔wforwinjieba。cut(line)iflen(w)1〕iflen(currentsegment)1andcurrentsegment!r:contentS。append(currentsegment)分词结果转为DataFramedfcontentpd。DataFrame({contentS:contentS})停用词列表stopwordspd。readtable(stopwords。txt,names〔stopword〕,quoting3)contentsdfcontent。contentS。values。tolist()stopwordsstopwords。stopword。values。tolist()self。contentscleanself。dropstopwords(contents,stopwords)ifnamemain:title1乾坤大挪移,如何将同步阻塞(sync)三方库包转换为异步非阻塞(async)模式?Python3。10实现。title2Generator(生成器),入门初基,Coroutine(原生协程),登峰造极,Python3。10并发异步编程async底层实现title3周而复始,往复循环,递归、尾递归算法与无限极层级结构的探究和使用(Golang1。18)title4彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战JWT和中间件(Middleware)的使用EP07content〔title1,title2,title3,title4〕lrLdaRec(content)lr。cutword()lr。train()lr。lda。save(mymodel。model)lr。testtext(巧如范金,精比琢玉,一分钟高效打造精美详实的Go语言技术简历(Golang1。18))
  至此,基于聚类的推荐系统构建完毕,每一篇文章只需要通过既有分类模型进行训练,推断分类之后,给用户推送同一分类下的文章即可,截止本文发布,该分类模型已经在本站进行落地实践:
  结语
  金无足赤,LDA聚类算法也不是万能的,LDA聚类算法有许多超参数,包括主题个数、学习率、迭代次数等,这些参数的设置对结果有很大影响,但是很难确定最优参数,同时聚类算法的时间复杂度是O(n2)级别的,在处理大规模文本数据时,计算速度较慢,反之,在样本数据较少的情况下,模型的泛化能力较差。最后,奉上项目地址,与君共觞:https:github。comzcxey2911LdaGensimRecommendedSystemPython310

花海双号打进巅峰榜前十,妖刀稳坐榜首,君诏成最高分对抗路KPL秋季赛已经全部结束,目前挑战者杯的正赛还没有开启,很多职业选手都在这短暂的休赛期内选择直播补时长,打巅峰赛和排位赛保持手感。虽然巅峰赛战绩并不能代表选手的综合实力,但也能……最亮的恒星,你知道是哪颗吗?能找到它吗?傍晚,暮色降临,群星闪耀。星空里最亮的恒星,你知道是哪颗吗?冬季夜晚,南面星空里,有三颗很容易看到的璀璨恒星,三星连线,为等边三角形。称为冬季大三角。这三颗星……今日谷雨雨生百谷,最美陵州四月天!谷雨春光晓,山川黛色青叶间鸣戴胜,泽水长浮萍今天,我们迎来了二十四节气的第六个节气谷雨谷雨蕴含雨生百谷之意谷雨是反映降水现象的节气……2022年6月23日今日鸡蛋价格今天北方掉价区域增加,走货也正常,南方粉蛋连续几天走货都偏好,受北方影响,稳定偏多,部分小涨,两头码数缺货,中间有货也不愁买,情绪好转。在南方走货偏强的情况下,东莞昨天抄……好心态,是治愈一切的良药好心态,是治愈一切的良药。俗话说良药苦口利于病也是这个道理,养好你的心态,比任何养生都有用。人生就是一个不断努力的过程。如果上天没给你想要的,不代表努力没意义,只是……生活小确幸栀子花开时清香醉游人四季生态园内栀子花已开。栀子花最大的特点在于花香,无论是种植于公园中还是摆放在室内,其悠悠清香会弥漫每个角落。在美化室外室内空间的同时,又充满诗意与美感。栀子为灌木,嫩枝……聪明投资者的3大特质,快来看看你拥有吗?每个人在开始投资后,都希望自己要么能买到市场上的牛基牛股,搭上高速列车一路躺赢;要么能准确预判市场走势,卖在最高点,买在最低点。但在实际操作中,基民们往往容易在追涨时信心……智能锁跌破千元背后数千家企业混战,价格屠夫小米击穿底价智能锁跌破了1000元自从家里的锁6月中旬变得不好使后,90后白领高敏就琢磨着要换一把智能锁,以后再也不怕忘记带钥匙了。在高敏的印象里,一把智能锁得需要三四千元,之……贝弗利喊话联盟明年给我安排一场圣诞大战!我发现他又换女友了本年度的圣诞大战如期举行,这一天联盟安排了5场比赛,分别是老鹰VS尼克斯、凯尔特人VS雄鹿、勇士vs太阳、篮网vs湖人、独行侠vs爵士。熟悉NBA的老炮应该知道圣诞大战就……吕德华激情OB,助力神鸡营完虐剑仙听安,总决赛与韩涵队伍碰撞12月25日,王者荣耀KPL秋季赛总决赛正式开战。很多网友都非常期待这次的比赛,武汉eStarPro与广州TTG对战,最终E星以绝对优势拿到了冠军。而为了这场总决赛,虎牙推出的……更换新手机在头条看世界昨天就说在换手机,现在换一个手机真的是太恼火了。因为现在手机里面的东西真的是太多了,很多APP,很多的账号需要去登录更换。手机里面的东西太多了,长……38岁贾玲靠有趣的灵魂,活出了漂亮的人生,肥胖界的开心果38岁贾玲身材臃肿圆滚滚,她的脸已经圆到不能再圆,下巴的肉也堆积在一起逐渐变成了三层,现在基本已经看不到脖子了。肚子凸出来,两条腿也胖成了萝卜腿,就是这膀大腰圆的体型,却一直备……
糖醋排骨详细的做法糖醋排骨糖醋排骨到底是直接下锅炖,还是用油炸呢?许多人都搞错了,看完视频你们就懂了。排骨先用冷水下锅焯水,煮个2分钟捞出来清洗干净。油热下锅放2个姜片,小火慢慢的煸炒,炒至表面微……澳门赛消息!中国名将32淘汰日本冠军,日本男单首轮或全军覆没今天和球迷们聊一聊澳门冠军赛的最新消息。目前澳门冠军赛正在如火如荼的进行中,在首轮的比赛中,日本男单就遭遇重创,目前日本男单已经有3人被淘汰出局遭遇一轮游。在近期的比赛中……做米酒,最忌糯米蒸熟后就撒酒曲,教你一招,口感香醇,酒香四溢作为一个武汉人,米酒、醪糟应该是从小就开始接触,而且还是大家在吃早餐时必不可少的小吃或者是饮品。武汉人爱喝米酒,但喝法可以很简单,也可以相对复杂,比如直接用开水冲米酒。在……不止是影像,全新vivoX80系列强劲性能表现,给你电竞体验近年来,游戏厂商推出各种大型手游,游戏开放更高画质与更高帧率模式。为了有更沉浸流畅的游戏体验,许多用户在购机时会关注手机的处理器、散热、充电速率等表现。最近vivo推出全新旗舰……黑暗光年攻略怎么提升攻击力黑暗光年攻略怎么提升攻击力小伙伴们,大家好,今天给大家带来的是热门传奇手游《黑暗光年》的攻略。今天咱们就来教大家怎么快速提升攻击力。攻击力在黑暗光年中是实力的象征,……POP服装设计网恋夏水果狂欢女装图案流行趋势灵感Inspiration那个叫提摩西查拉梅盛世美颜少年在《请以你的名字呼唤我》带给我们美好深刻的夏日之恋,赚足了眼泪。同时影片展现了20世纪80年代的意大利乡间盛夏美景……新手机充电刚拿到新手机的你,是不是心情可雀跃了?这样摸那样擦,多按几次键都感觉心疼?生怕弄坏了,下面我们来总结一些给新手机第一次充电的知识。当它第一次电量濒危时,你的顾虑就更多了啥……打通最后一公里,华容这个地方也有共享电单车了!4月13日上午,首批100辆共享电单车在红莲湖旅游度假区正式投放,进一步优化公共交通体系,满足居民绿色出行需求。一排排崭新的共享电单车整齐地……小米13Ultra年轻人的第一台相机?目前来看它可能有这个自正当大家都在讨论4月要发布的新机都在紧张预热,而小米这边却一点也不急的时候,小米13Ultra正式定档4月18日晚19点发布,和预想中的4月中旬差不多。而该机的每一次预热……武汉女大学生用时装告白城市,作品即将亮相中国国际大学生时装周4月12日,武汉纺织大学服装学院2019级服装表演二班学生张怀玉,正在进一步打磨时装楼启,为2023中国国际大学生时装周做准备。此前,这套时装已经亮相学校2023年时装周。……卢靖姗携女出发录制浪姐4,时尚优雅,婆婆在一旁帮忙照料!卢靖姗是一位备受瞩目和受欢迎的女演员,也是一个体贴温柔的母亲。4月11日,她和女儿一同现身机场,出发前往录制《浪姐4》的节目。穿着米色短风衣搭配白色连衣裙的卢靖姗,显得非……阳气入筋,百病不侵,张仲景补阳方,大补全身阳气,除一身寒湿人们常说:阳气入筋,百病不侵,阳气就是人体的小太阳,能够温暖四肢,筋骨,肌肉,一个人只有阳气足了,才能经络畅通,百病不侵,如果阳气虚弱,我们就会百病丛生,所以阳气是人体健康的根……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网