package Ġorg . jes per anc in ha . algorithms . we igh . term . frequency Ċ Ċ import Ġorg . jes per anc in ha . console . con sol er izer . console . Con sol er izer Composer Ċ import Ġorg . jes per anc in ha . console . con sol er izer . console . Con sol er izer Composer . title Ċ import Ġkotlin . math . sqrt Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġsentence 1 Ġ= ĊĠĠĠĠĠĠĠ Ġ" I Ġtravel led Ġin ĠGermany Ġusing Ġthe ĠDe ut sche ĠAut ob ah n . ĠI Ġlo ved Ġthe Ġviews Ġwhen Ġgoing Ġfrom ĠBer lin Ġto ĠK Ã¶ ln . ĠIt Ġis Ġa Ġconvenient Ġand Ġfast Ġway Ġto Ġtravel . ĠSome Ġfind Ġit Ġless Ġdangerous Ġthan Ġr iding Ġa Ġbi ke " ĊĠĠĠ Ġval Ġsentence 2 Ġ= ĊĠĠĠĠĠĠĠ Ġ" In ĠGermany Ġwe Ġcould Ġdrive Ġfast Ġand Ġfor Ġa Ġlong Ġtime Ġin Ġsome Ġof Ġthe ĠAut ob ah n . ĠWe Ġcould Ġexperience Ġviews Ġgoing Ġvery Ġfast . ĠIt Ġwas Ġconvenient Ġfor Ġsome Ġand Ġdangerous Ġfor Ġothers . ĠMany Ġlo ved Ġdriving Ġthere " ĊĊĠĠĠ ĠCon sol er izer Composer . out Space () ĊĠĠĠĠĠĠĠ Ġ. blue ( title (" Similarity Ġusing Ġthe ĠWe igh ĠTerm ĠFrequency ĠAlgorithm ")) ĊĠĠĠĠĠĠĠ Ġ. magenta (" Sentence Ġ 1 : Ġ% s ", Ġsentence 1 ) ĊĠĠĠĠĠĠĠ Ġ. magenta (" Sentence Ġ 2 : Ġ% s ", Ġsentence 2 ) ĊĠĠĠĠĠĠĠ Ġ. reset () ĊĊĠĠĠ Ġval Ġsimilarity Ġ= Ġfind Similarity ( sentence 1 , Ġsentence 2 ) ĊĠĠĠ ĠCon sol er izer Composer . out Space () ĊĠĠĠĠĠĠĠ Ġ. cyan (" The Ġsimilarity Ġis Ġ% s ", Ġsimilarity ) ĊĠĠĠ ĠCon sol er izer Composer . out Space () ĊĠĠĠĠĠĠĠ Ġ. cyan (" Our Ġsentences Ġas Ġ%. 2 f % s Ġsimilar Ġto Ġeach Ġother ", Ġsimilarity Ġ* Ġ 1 0 0 , Ġ" %% ") Ċ } Ċ Ċ fun Ġfind Similarity ( sentence 1 : ĠString , Ġsentence 2 : ĠString ): ĠDouble Ġ{ ĊĊĠĠĠ Ġval Ġwords 1 Ġ= Ġsentence 1 . replace (".", Ġ""). split (" Ġ") ĊĠĠĠ Ġval Ġwords 2 Ġ= Ġsentence 2 . replace (".", Ġ""). split (" Ġ") ĊĊĠĠĠ Ġval Ġall Words Ġ= Ġwords 1 . plus ( words 2 ). distinct (). sorted () ĊĊĠĠĠ Ġprintln ( words 1 ) ĊĠĠĠ Ġprintln ( words 2 ) ĊĠĠĠ ĠCon sol er izer Composer . out Space () ĊĠĠĠĠĠĠĠ Ġ. orange ( all Words ) ĊĊĠĠĠ Ġval Ġtf Ġ= Ġall Words . map Ġ{ ĊĠĠĠĠĠĠĠ Ġmutable ListOf ( it , Ġwords 1 . filter Ġ{ Ġword Ġ-> Ġword Ġ== Ġit Ġ}. count (), Ġwords 2 . filter Ġ{ Ġword Ġ-> Ġword Ġ== Ġit Ġ}. count ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdocument 1 : ĠList < Int > Ġ= Ġtf . map Ġ{ Ġit [ 1 ] Ġas ĠInt Ġ} ĊĠĠĠ Ġval Ġdocument 2 : ĠList < Int > Ġ= Ġtf . map Ġ{ Ġit [ 2 ] Ġas ĠInt Ġ} ĊĊĠĠĠ Ġtf . forEach Ġ{ ĊĠĠĠĠĠĠĠ ĠCon sol er izer Composer . out Space () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. yellow ("% s \ t % s \ t % s ", Ġ( it [ 0 ] Ġas ĠString ). pad Start ( 1 0 ), Ġit [ 1 ], Ġit [ 2 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġproduct Ġ= Ġmultiply ( document 1 , Ġdocument 2 ) ĊĠĠĠ Ġprintln ( product ) ĊĠĠĠ Ġval Ġlength 1 Ġ= Ġp Length ( document 1 ) ĊĠĠĠ Ġval Ġlength 2 Ġ= Ġp Length ( document 2 ) ĊĠĠĠ ĠCon sol er izer Composer . out Space () ĊĠĠĠĠĠĠĠ Ġ. green ( length 1 ) ĊĠĠĠ ĠCon sol er izer Composer . out Space () ĊĠĠĠĠĠĠĠ Ġ. green ( length 2 ) ĊĠĠĠ Ġreturn Ġproduct . toDouble () Ġ/ Ġ( length 1 Ġ* Ġlength 2 ). toDouble () Ċ } Ċ Ċ fun Ġp Length ( document 1 : ĠList < Int >): ĠLong Ġ{ ĊĠĠĠ Ġvar Ġtotal : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġfor Ġ( i Ġin Ġdocument 1 . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtotal Ġ+= Ġdocument 1 [ i ] Ġ* Ġdocument 1 [ i ] ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsqrt ( total . toDouble ()). to Long () Ċ } Ċ Ċ fun Ġmultiply ( document 1 : ĠList < Int >, Ġdocument 2 : ĠList < Int >): ĠLong Ġ{ ĊĠĠĠ Ġvar Ġtotal : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġfor Ġ( i Ġin Ġdocument 1 . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtotal Ġ+= Ġdocument 1 [ i ] Ġ* Ġdocument 2 [ i ] ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtotal Ċ } Ċ