package Ġkr . by delta . ko ala . test Ċ Ċ import Ġcom . sun . j na . Platform Ċ import Ġkr . by delta . ko ala . POS Ċ import Ġkr . by delta . ko ala . Conversion Ċ import Ġkr . by delta . ko ala . Tag ger Spe k Ċ import Ġkr . by delta . ko ala . Tag Conversion Spe k Ċ import Ġkr . by delta . ko ala . ut agger . Tag ger Ċ import Ġkr . by delta . ko ala . ut agger . UT agger Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġjava . io . File Ċ import Ġjava . nio . charset . Charset Ċ Ċ private Ġvar ĠU TAG GER _ INIT : ĠU Tag ger ? Ġ= Ġnull Ċ Ċ private Ġfun Ġinit UT agger (): ĠU Tag ger Ġ{ ĊĠĠĠ Ġif Ġ( UT AG GER _ INIT Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġut agger Path Ġ= ĠFile ( System . getenv (" HOME "), Ġ" ut agger ") ĊĠĠĠĠĠĠĠ Ġval Ġbin Path Ġ= ĠFile ( ut agger Path , Ġ" bin ") ĊĠĠĠĠĠĠĠ Ġval ĠDIST RO _ IS _ UB UNT U : ĠBoolean Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprocess Ġ= ĠRuntime . get Runtime (). exec (" uname Ġ- a ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġprocess . inputStream . buffered Reader (). line Sequence (). join ToString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ubuntu " Ġin Ġoutput . toLowerCase () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlib Path Ġ= Ġif Ġ( Platform . is Windows () Ġ&& ĠPlatform . is 6 4 Bit ()) Ġ" ut agger - win 6 4 . dll " ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( Platform . is Linux ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( DIST RO _ IS _ UB UNT U ) Ġ" ut agger - ubuntu 1 8 0 4 . so " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ" ut agger - centos 7 . so " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġthrow ĠIllegalStateException (" Windows Ġ 6 4 bit , ĠUbuntu , ĠCentOS Ġê³Ħ ìĹ´ ĠìĻ ¸ ìĹĲëĬĶ ĠU Tag ger ĠAPI ê°Ģ Ġìłľê³µ ëĲĺ ì§Ģ ĠìķĬ ìĬµëĭĪëĭ¤ .") ĊĊĠĠĠĠĠĠĠ Ġ// ĠU Tag ger ĠëĿ¼ ìĿ´ ë¸Į ëŁ¬ ë¦¬ ĠìľĦ ì¹ĺ Ġì§Ģìłķ ĊĠĠĠĠĠĠĠ Ġval Ġlibrary Path Ġ= ĠFile ( bin Path , Ġlib Path ) ĊĠĠĠĠĠĠĠ Ġval Ġconfig Path Ġ= ĠFile ( ut agger Path , Ġ" H lx cfg . txt ") ĊĠĠĠĠĠĠĠ ĠU Tag ger . set Path ( library Path . toString (), Ġconfig Path . toString ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠëĿ¼ ìĿ´ ë¸Į ëŁ¬ ë¦¬ ĠìĦ¤ìłķ íĮĮ ìĿ¼ ĠìĪĺ ìłķ ĊĠĠĠĠĠĠĠ Ġval Ġcharset Ġ= ĠCharset . forName (" e uc - kr ") ĊĊĠĠĠĠĠĠĠ Ġval Ġlines To Write Ġ= Ġconfig Path . inputStream (). buffered Reader ( charset ). use Lines Ġ{ Ġlines Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlines . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . startsWith (" HL X _ DIR ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . replace (" HL X _ DIR Ġ../ ", Ġ" HL X _ DIR Ġ${ ut agger Path . absolute Path }/ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġwriter Ġ= Ġconfig Path . output Stream (). buffered Writer ( charset ) ĊĠĠĠĠĠĠĠ Ġwriter . write ( lines To Write . join ToString ("\ n ")) ĊĠĠĠĠĠĠĠ Ġwriter . close () ĊĊĠĠĠĠĠĠĠ Ġ// ĠU Tag ger ĠìĥĿìĦ± ĊĠĠĠĠĠĠĠ ĠU TAG GER _ INIT Ġ= ĠU Tag ger () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn ĠU TAG GER _ INIT !! Ċ } ĊĊ Ċ object ĠU Tag ger Test Ġ: ĠSpe k ( Tag ger Spe k ( ĊĠĠĠĠĠĠĠ Ġget Tag ger Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit UT agger () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT agger () ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġtag Sent By Orig Ġ= Ġ{ Ġstr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag ger Ġ= Ġinit UT agger () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Ġ= Ġtag ger . analyze ( str ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsurface Ġ= Ġoriginal !!. join ToString (" Ġ") Ġ{ Ġit . surface Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Ġ= Ġoriginal . join ToString (" Ġ") Ġ{ Ġw Ġ-> Ġw . m orp he mes . join ToString ("+ ") Ġ{ Ġ"${ it . surface }/${ it . tag }" Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsurface Ġto Ġtag ĊĠĠĠĠĠĠĠ Ġ}, Ġtag Para By Orig Ġ= Ġ{ Ġempty List () Ġ}, ĊĠĠĠĠĠĠĠ Ġtag Sent By Ko ala Ġ= Ġ{ Ġstr , Ġtag ger Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtagged Ġ= Ġtag ger . tag Sentence ( str ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Ġ= Ġtagged . join ToString (" Ġ") Ġ{ Ġw Ġ-> Ġw . join ToString ("+ ") Ġ{ Ġ"${ it . surface }/${ it . original Tag }" Ġ} Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtagged . surface String () Ġto Ġtag ĊĠĠĠĠĠĠĠ Ġ}, Ġis Sentence Splitter Implemented Ġ= Ġtrue )) ĊĊ Ċ // ĠDummy Ġtest Ġfor Ġtest Ġfiltering . Ċ object ĠU Tag ger Tag Conversion Test Ġ: ĠSpe k ( Tag Conversion Spe k ( ĊĠĠĠĠĠĠĠ Ġfrom Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) ĠPOS . valueOf ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠPOS . NA ĊĠĠĠĠĠĠĠ Ġ}, Ġto Ġ= Ġ{ Ġit . toString () Ġ}, ĊĠĠĠĠĠĠĠ Ġget Mapping Ġ= Ġ{ ĠlistOf ( Conversion ( it . toString ())) Ġ})) Ċ