第04课最简单推荐算法基于内容的_第1页
第04课最简单推荐算法基于内容的_第2页
第04课最简单推荐算法基于内容的_第3页
第04课最简单推荐算法基于内容的_第4页
第04课最简单推荐算法基于内容的_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第04课:最简单算法基于内容的在第03课中解基于内容步学习。的算法逻辑,以及的示计算逻辑之后可以直通过工程示来进一工程逻辑Spark 2.0 之后,用再构建 Sparkcontext ,以创建一个复合多功能替代,可以正常的从 HDFS文件,也可以从 Hive 中获取 DataFrame 等。v a ls p a r kSe s. bu il d e r() = Sp a r kSed )/ / ssppaarrkk任名称. a pame ( . e n a b l eHi v e Suppo r t () . g e t Or Cr ea t e () 那三个表可以先 load 到 Hive

2、中,然后 Spark 直从中 形成 DataFrame。/ /从h i v e中,获取r a ti ng评分数据集, 终终形形成成如如下下格格式式数数据据 v a l mov i eAvgRa t e = s p a r kSe s s i os q l ( se l ec t mov i ev i e , a vg_ r a t e ), r o nd ( a vg (r a t e ) , 1 )a s a vg_ r a t efr om t x . t x_ r a ti ng s g r oup by f =(f . g e t ( 0 ) , f . g e t ( 1 ) ov

3、i e i d ) . r dd .ma p/ /获取的基本属性数据,包包括括影,名称,以及ggeennrree类类别v a l mov i e sDa t a = s p a r kSe ss i or ddl ( s e l ec t mov i e i d , titl e , g e n r efr om t x . t x_mov i e s ) ./ /获取t a g s数据,这取到所有的v a lt a g sDa t a = s p a r kSel ( s e l ec t mov i e i d , t a g fr om t x . t x_ t a g s ) . r

4、dd先对 tag 进处很多 tag 其实说的是同一个东西,需要进一定程度上的合并,这样才能让 tag 加的合(读到可能有读者意见bloods、blood 其实都是想说个只是一个实验案而已,搞这么复杂),举个简单子,blood、很腥,但是同的人使用的词同的(这点大伙儿可以自由查看实验数据),所以需要进一定程上的合并。t a gHiveSparknv a lt a g s S t a nd a r d i zeTmp = t a g s S t a nd a r d i ze . c o ll ec t () v a lt a g s S imi = t a g s S t a nd a r d

5、i ze .ma pf =v a rr e t Ta g = f . _2i f(f . _2 . t oS t r i ng . s p lit ( ) . s i ze = 1 )v a rv a ls imi Tmp = t a g s TmpS t a nd = t a g s S t a nd a r d i zeTmp. f ilt e r( _ . _2 . t oS t r i ng . s p li t ( ) . s i ze ! = 1 ). f ilt e r(f . _2 . t oS t r i ng . s i ze v a lf l a gi f(f l a g

6、 r e t Ta g= g e t Ed it S i ze (f . _2 . t oS t r i ng , t a gTmp . _2 . t o= 1 ) = t a gTmp . _2 r ea k () r i ng(f . _1 , r e t Ta g ) , 1 ) e l s e (f . _1 , f . _2 ) , 1 )其中,getEditSize 是计算两个词的编辑距离当编辑距离在一阈值的时候,进两个词的合并,具体逻辑见代码。d e f g e t Ed it S i ze ( s t r 1 : S t r i ng , s t r 2 : S t r i n

7、g ) : i f( s t r 2 . s i ze s t r 1 . s i ze ) 0 e l s e / /计数v a rc oun t = 0v a ll oop = n ew Br ea k s/ /以较短的s t r 2为中心,进遍历,并逐个比较字符=v a l v a rf o rl e ng t hS t r 2 = s t r 2 . g e t By t e s () . l e ng t hi(= 0i =( 1继续对 tag 进处,统计频度个作为对应的 tag 属性。v a l mov i eTa g = t a g s S imi . f =(f . _1 ,

8、f . _2 ff =(ff1 . _2 , ff . _ )ceByKe y ( _+_g r oupBy ( k=k . _1 . _1 ) .ma p . t oL i. s o r t By ( _ . r e v e. t a k e ( 10 ) . t oMa p )接下来处的 HanLP 进、份和名称,这个会简单点儿,进分词处的话,怎么简单怎么来,直接使用第三方作为分结果,直接停用词。tagv a l mov i e sGe n r e s T itl eYea r = mov i e sDa t a .ma pf =v a l v a l v a l v a lv a lmo

9、v i e i d = f . g e t ( 0 ) titl e = f . g e t ( 1 )g e n r e s = f . g e t ( 2 ) . t oS t r i ng . s p lit ( | ) . t oL i s t . t a k e ( 1 ) titl eWo r l d s = Ha nLP . e x t r ac t Ke ywo r d ( titl e . t oS t r i n10y ea r = mov i eYea r Re g e x .mov i eYea r Re g ( titl e . t oS t r i ng )t oL

10、 i s t(mov i e i d , ( g e n r e s , titl eWo r l d s , y ea r) 取份的正则函数如下,是个 Java 写的精通工具类(Scala 和混写,简直无美妙)。p ac k a g e u til s ;impo r tj a v a . u til . r e g e x .Ma t c h e r ; impo r tj a v a . u til . r e g e x . Pa tt e r n ;/ * De s c : 抽取份公式* /pub li c c l a ss mov i eYea r Re g e x p r i v

11、 a t epub li ci c S t r i ng modu l eTyp e = . * ( 0 - 9 0 - 9 0 - 9 ) ) . * ;i c vo i d ma i n ( S t r i ng s ) ea r Re g ( Go l d e nEy eSy s t em. ou t .l n (mov i( 199 ) ) ;pub li ci cr e t Yea rmov i eYea Re g ( S t r i ng s t r ) = 1994 ;Pa tt e r n p a tt e r nType = PMa t c h e r ma t c h e

12、r Type = p a tp il e (mod l eTyp e ) ;Type .ma t c h( s t r) ;wh il e(ma t c h e r Ty r e t Yea rr e t u r n r e t Ye r ;f i nd () epe(ma t c h e r Typ e . g r oup ( 1 ) ;通过 join 进数据合并,生成一个为核心属性集合。v a l mov i eCf =t e n t= mov i eTa g . j o(mov i eAvgRa t e ) . j oov i e sGe n r e s T itl eYea r) .m

13、a p/ (mov i e ,(f . _1 , f . _2 . _i s t , titl eL, y ea r , g e n r eL i s t , r a t e )_2 . _2 , f . _2 . _2 . _3 , f . _2 . _2 . _1 , f . _2 . _1 . _2 )相似计算开始之前,还记得之前说的吗,可以进候选集,先根据一些规则裁剪一下候选集。idJavav a l mov i eCon t e n t Ba s e = mov i eCon t e n t .ma pf =v a l v a l v a l v a l v a l v a lv a

14、 lc u rr e n tMo i v e I d = f . _1 c u rr e n t Ta gL i s t = f . _2c u rr e n t T itl eWo r l dL i s t = c u rr e n t Yea r = f . _4c u rr e n t Ge n r eL i s t = f . _5/ ( t a g , s c o r e ) f . _3c u rr e n t Ra t e = f . _6 . a s I n s t a n ceOf j a v a .ma t h . B i gDec ima l . doVa l u e (

15、) ma ndMov i e s = mov i eCon e t e n t Tmp .ma pff =v a l v a l v a l v a l v a lt a gS imi = g e t Co s Ta g s ( c u rr e n t Ta gL i s t , ff . _2 )titl e S imi = g e t Co s L i s t ( c u rr e n t T itl eWo r l dL s t , ff .)g e n r e S imi = g e t Co s L i s t ( c u rr e n t Ge n r eL i s t , f_

16、5 )y ea r S imir a t e S imi= g e t Yea r S imi ( c u rr e n t Yea r , ff . _4 )= g e t Ra t e S imi (ff . _6 . a s I n s t a n ceOf j a v at h B gDec ima l . doub l eVa l u e () v a l0 . 2* r a t e S imis c o r e =0 . 4*g e n r e S imi + 0 . 25* t a gS i i + 0 . 1r S imi + 0 . 05* titl e S imi(ff .

17、 _1 , s c o r e ) . t oL i s t . s o r t By ( k=k . _2 ) . r e v e r s e . t a k e ( 20 )( c udMov i ie . f l a tMa p (f = f . _2 .ma p ( k= (f . _1 , k _1 , k . _2 ) .ma p (f =Row. _1 , f . _2 , f . _3 ) 最后,将结果存入 Hive 中,Hive 中提前建好结果表/先进Da t a F r ame格式化v a ls c h ema S t r i ng2 = mov i e i d mov i

18、v a ls c h emaCon t e n t Ba s e =r u c t ype ( s crddo r e g2 . s p lit ( )(f i e l dName . e qu a l s ( s c o r e ) Doub l eTyp e.ma p (f i e l dName=S t r u c t F if i e l dName , i fe l s eS t r i ngTyp e , t r u e ) ) ) v a l mov i eCon t e n t Ba s e a t a F r ame maCon t e n t Ba s e )/ /将结果存入h i v e , 需要先进临时表= s pe. c r ea t eDa t a F r ame (mov i eCon t e n t Ba s e , s c h e建v a lu s e r Ta gTmpTme = mit e _ ce n t _b a s e _ tmp v a lu s e r Ta gTaeName = m8 .mit e _ c on t e n t _b a s e _ r ec o e r TempTa b l e ( u s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论