package Ġcom . l ond og ard . text gen . search Ċ Ċ import Ġcom . l ond og ard . text gen . language models . Language Model Ċ import Ġcom . l ond og ard . text gen . smoothing . Sm oothing Ċ import Ġkotlin . math . ln Ċ Ċ /** ĠPerhaps Ġa Ġstep Ġfunction Ġwould Ġmake Ġsense ? Ġ*/ Ċ open Ġclass ĠBe am Search ( private Ġval Ġbe ams : ĠInt ) Ġ: ĠSearch Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġsearch ( ĊĠĠĠĠĠĠĠ Ġnum Return Sequences : ĠInt , ĊĠĠĠĠĠĠĠ Ġnum Tokens : ĠInt , ĊĠĠĠĠĠĠĠ Ġn gram : ĠInt , ĊĠĠĠĠĠĠĠ Ġlanguage Model : ĠLanguage Model , ĊĠĠĠĠĠĠĠ Ġsmoothing : ĠSm oothing , ĊĠĠĠĠĠĠĠ Ġseed : ĠList < Int > ĊĠĠĠ Ġ): ĠList < List < Int >> Ġ= ĊĠĠĠĠĠĠĠ Ġ( 0 .. num Tokens ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fold ( sequence Of ( seed Ġto Ġ 0 . 0 )) Ġ{ Ġacc , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġacc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġ( seq , Ġscore ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmoothing ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. prob abilities Top K ( language Model , Ġseq , Ġbe ams ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( index , Ġprob ) Ġ-> Ġseq Ġ+ ĠlistOf ( index ) Ġto Ġscore Ġ- Ġln ( prob ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġ(_, Ġscore ) Ġ-> Ġscore Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( be ams ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. take ( num Return Sequences ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( seq , Ġ_) Ġ-> Ġseq Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () Ċ }