package Ġv op Ċ Ċ import Ġcom . github . jav ap ar ser . Java Parser Ċ import Ġcom . github . jav ap ar ser . ast . body . Method Declaration Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcommon . FileUtils Ċ import Ġcommon . PATH _ DATA Ċ import Ġcommon . Stop words Ċ import Ġn lp . Pre Processor Ċ import Ġopen nlp . tools . cmdline . post ag . POS Model Loader Ċ import Ġopen nlp . tools . post ag . POST agger ME Ċ import Ġorg . t art ar us . snow ball . ext . english Stem mer Ċ import Ġv op . DataManager . Companion . to Pair List Ċ import Ġjava . io . File Ċ import Ġjava . nio . file . Paths Ċ Ċ class ĠData Manager Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠPOS Model Loader (). load ( File (" nlp / en - pos - max ent . bin ")) ĊĠĠĠĠĠĠĠ Ġval Ġtag ger Ġ= ĠPOST agger ME ( model ) ĊĠĠĠĠĠĠĠ Ġval Ġpair Bound Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġstem mer Ġ= Ġenglish Stem mer () ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( root : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsave File Ġ= ĠPaths . get ( PATH _ DATA , Ġ" v op ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot . path . substring After ("\\ Repository "). replace ("\\ ", Ġ"_ ") Ġ+ Ġ". json "). to File (); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsrc List : ĠMutable List < Source > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . read All Files Ext ( root , Ġ" java "). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsrc List . add ( Source ( it . path , Ġit . to Pair List ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Ġ= ĠProject ( root . path , Ġsrc List ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave File . print Writer (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . print ( Gson Builder (). set Pretty Print ing (). create (). toJson ( p )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġload () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠString . preprocessing () Ġ: ĠArray < String > ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstr Ġ= ĠPre Processor . reg Camel Case . replace ( this ," Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Ġ= ĠPre Processor . reg Html . replace ( str , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Ġ= Ġcom . sun . deploy . util . StringUtils . trim Whitespace ( str ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPre Processor . reg Non Al phanum . split ( str . toLowerCase ()). filter Ġ{ Ġit . length Ġ> Ġ 2 Ġ&& Ġit . length Ġ< Ġ 2 0 Ġ&& Ġ! Stop words . instance . contains ( it . toLowerCase ()) Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠString . to Pair List (): ĠList < Pair > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist : ĠMutable List < Pair > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwords Ġ= Ġthis . preprocessing () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtags Ġ= Ġtag ger . tag ( words ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprobs Ġ= Ġtag ger . probs () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġv Idx Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmax Pro bs Ġ= ĠDouble . MIN _ VALUE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtags . forEach Indexed Ġ{ Ġindex , Ġs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( s . startsWith (" VB ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( probs [ index ] Ġ> Ġmax Pro bs ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Pro bs Ġ= Ġprobs [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv Idx Ġ= Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( v Idx Ġ!= Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġv Idx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġwords [ v Idx ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( index Ġ- Ġ 2 Ġ>= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Pair ( s , Ġtags [ index - 2 ] Ġ+" Ġ"+ tags [ index - 1 ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Pair ( s , Ġtags [ index - 1 ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Pair ( s , Ġtags [ index - 2 ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Pair ( s , Ġtags [ index - 1 ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( index Ġ+ Ġ 2 Ġ< Ġtags . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Pair ( s , Ġtags [ index + 2 ] Ġ+" Ġ"+ tags [ index + 1 ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Pair ( s , Ġtags [ index + 1 ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Pair ( s , Ġtags [ index + 2 ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Pair ( s , Ġtags [ index + 1 ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ Ċ data Ġclass ĠPair ( val Ġverb : ĠString , Ġval Ġobj : ĠString ) Ċ data Ġclass ĠSource ( val Ġpath : ĠString , Ġval Ġv do List : ĠList < Pair >) Ċ data Ġclass ĠProject ( val Ġroot : ĠString , Ġval Ġsource List : ĠList < Source >) Ġ{ ĊĠĠĠ Ġfun Ġsave () Ġ{ ĊĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun ĠFile . to Pair List () Ġ: ĠList < Pair > Ċ { ĊĠĠĠ Ġval Ġparser Ġ= ĠJava Parser . parse ( this ) ĊĠĠĠ Ġval Ġpair List Ġ: ĠMutable List < Pair > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġparser . findAll ( Method Declaration :: class . java ). forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( it . name AsString . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach ĊĊĠĠĠĠĠĠĠ Ġval Ġpairs Ġ= Ġit . name AsString . to Pair List () ĊĊĠĠĠĠĠĠĠ Ġif ( pairs . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpair List . addAll ( it . name AsString . to Pair List ()) ĊĊĠĠĠĠĠĠĠ Ġif ( it . comment . isPresent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . comment . get (). toString (). lines () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map { Ġit . to Pair List () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpair List . addAll ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġpair List Ċ }