专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

物以类聚人以群分,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

双站齐发深圳惠州再添新站3月8日,蔚来超充站深圳环球数码大厦和蔚来目充站惠州安墩水美温泉度假区一同上线,双站齐发。新的站点将为车主们的便捷生活添砖加瓦,让补能更无忧。蔚来超充站深圳环球数码大厦本站位于深圳死诸葛吓坏活仲达五丈原之战之所以流传下来,被后人津津乐道,就是因为诸葛亮的奇谋。他真是天下奇才,一个连死都能算到的人,不得不叫人佩服。我要上头条公元231年,诸葛亮第四次北伐,蜀军粮尽退兵。在之后1992年,反间谍处处长叛国9年,却因一个垃圾桶暴露身份在阅读本文之前,诚邀您点一个关注,既方便您参与讨论,又能给您带来不一样的参与感,感谢支持!这名间谍为了钱出卖祖国9年,最后却因一个垃圾桶暴露身份。1992年,从事间谍工作多年的埃姆k8s之harbor私有镜像仓库部署一安装dockercompose下载地址httpsgithub。comdockercomposereleases文件下载下来是个二进制文件,加x权限放到usrbin目录下rootn该不该封禁辛巴据快手平台显示,3月8日晚辛巴的直播间被官方封禁,封禁理由是不符合社会规范。该不该封禁辛巴?如果辛巴继续卖像燕窝之类的假货当然可以封禁。如果辛巴违反国家政策和公序良俗当然可以封禁。ChatGPT掀起的究竟是风暴,还是福音?近期,ChatGPT掀起全球风潮。面对这股潮流,腾讯也做出了相关举措成立了混元助手项目组。该项目组将联合腾讯内部多方团队,通过强化学习算法,打造全新升级版本的智能助手。ChatGP路易威登评选最杰出的韩国女明星NewJeans,ITZY,还是TWICE?头条创作挑战赛随着Kpop和韩剧影响力的日渐扩大,各种韩国女明星被邀请参加路易威登等奢侈时尚品牌的活动。除了音乐活动,许多韩国流行音乐女偶像还涉足时尚行业。她们经常被邀请参加著名设前胸后背的痘痘全没了!学会三个除螨方法在家就能去除后背痘!前胸后背的痘痘全没了!学会三个除螨方法在家就能去除后背痘!后背长痘也有好几年了!一开始只是皮肤有点发痒,慢慢的前胸后背开始大面积长痘,皮肤摸起来特别粗糙,看起来油腻腻的很恶心,有时想对自己说的话每一次对自己失去信心的时候,我都会想起这些话。找个自己喜欢的地方,安静下来。你可以成为你想成为的任何人,因为你是独一无二的。不要让任何人告诉你你不能实现梦想,因为你拥有无限的潜力。刘波34岁出轨许晴,40岁逃亡日本,53岁客死他乡,结局早已注定选择比努力更重要,人生一世,无时无刻不在做出选择,或此或彼,正因为有千百次的选择,才有了万千不一的结局,也才有多姿百态的人生选择,是真知灼见的睿智和远见。学会选择就是学会审时度势扬你曾被哪个句子治愈过?1。别慌,月亮也在大海某处迷茫。2。你三四月做的事,七八月自有答案。3。若结局非你所愿,就在尘埃落定前奋力一搏。4。人生,总会有不期而遇的温暖,和生生不息的希望。5。像猫一样,只取
NBA赛前预测!快船VS独行侠伦纳德缺阵,乔治带队大战东契奇比赛时间11月16日800赛事分析快船队快船在今天的比赛中战胜了弱旅火箭队!其实快船最近的状态还是不错,除了开局几场打的很差之外,进入了11月份球队的战绩是6胜2负,输的两场是输给Spring整合MyBatis之底层原理作者波哥审校孙淑娟如果老铁们对Spring框架足够熟悉,整合MyBatis其实很容易理解,当然这里假定老铁们也已经熟悉了MyBatis框架。在我们正常的应用开发过程中,使用MyBa天猫双11绿色物流报告快递包装回收量同比增长5011月15日,菜鸟发布天猫双11绿色物流报告,截至14日,参与绿色物流的消费者人次同比增加5,快递从业人员同比增加30。同时整个双11周期的快递包装回收量也将达到600万个,同比增TME陷入困境,梁柱无棋可下北京时间11月15日,腾讯音乐(TME)公布2022年第三季度未经审计财报,据财报显示腾讯音乐三季度营收为73。7亿元,同比下降5。6归属于公司股东的净利润为10。6亿元,同比增长通过抓包深入分析HTTPSHttps介绍https其实是在http上加了一层(SSLTSL)加密协议,根据维基百科的解释超文本传输安全协议(英语HyperTextTransferProtocolSecure周鸿祎的进击360数科将在港上市!互金还有前途吗?摘要增收不增利(欢迎关注闺蜜财经)撰文蜜妹儿编辑凯按这是闺蜜财经第1167篇原创稿件在美国纳斯达克上市近4年,360数科正式扣响港交所的大门。11月14日,据相关网站披露,360数科研人员开发出具三维景深感知的人工遥感触觉器件近日,中国科学院深圳先进技术研究院先进集成技术研究所神经工程研究中心与德国马克思普朗克聚合物研究所有机电子研究团队合作,在科学进展(ScienceAdvances)上,发表了题为A曝后置四摄华为Mate60Pro,华为Mate50跌至大米价快快欢呼疯抢曝光华为Mate60Pro新机采用了后置四摄的设计,后置四摄集成在一个和华为Mate50Pro有些类似的圆环模块里面,不过摄像头的排列方式做了一定的调整,这样的设计不仅延续了Mat意难平只要你不放手,我陪你,一直不管别人有多好,我想要的只有你。读者里有篇牵手就是一辈子,一位妈妈和儿子说,你喜欢这个女生,牵手了就是一辈子。既简单,浪漫地决定。什么都有的年代里,任何东新征程再出发丨全国人大代表党永富摸清土壤家底守护土壤安全编者按启航新征程,一起向未来。党的二十大擘画了以中国式现代化推进中华民族伟大复兴的宏伟蓝图,吹响了全面建设社会主义现代化国家的强劲号角。河南省人大系统干部职工各级人大代表豪情满怀,人民币对美元中间价上调逾千点,在岸和离岸人民币汇率均走高来源广州日报客户端11月14日,中国外汇交易中心发布数据显示,人民币对美元中间价上调1008点,至7。0899,这一调幅创2005年7月22日以来最大。记者关注到,当日在岸人民币对
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网