From d63876f642d6a6e9e43d20b5f6f83b03b58291a2 Mon Sep 17 00:00:00 2001 From: cxchu Date: Tue, 14 Mar 2017 15:21:08 +0100 Subject: [PATCH] Update KB Organization: Clustering --- jars/javatools-1.0.0.jar | Bin 0 -> 409973 bytes jars/json-simple-1.1.1.jar | Bin 0 -> 23737 bytes .../howtokb/clustering/ActivityCachedSim.java | 37 ++ .../clustering/ActivityComponentSim.java | 86 ++++ .../howtokb/clustering/DataForClustering.java | 202 ++++++++ .../HeuristicBottomupClustering.java | 199 ++++++++ .../HeuristicTopDownClustering.java | 147 ++++++ ...uristicTopDownClusteringDynamicSparse.java | 154 ++++++ .../clustering/IBottomUpClustering.java | 8 + .../kb/howtokb/clustering/ISimilarity.java | 17 + .../clustering/ITopDownClustering.java | 28 ++ .../clustering/SimpleClusterSimilarity.java | 171 +++++++ .../clustering/SimplePruningSimilarity.java | 141 ++++++ .../basicobj/ActivityWordsCategory.java | 58 +++ .../clustering/basicobj/BasicDataPt.java | 6 + .../clustering/basicobj/CSKCluster.java | 85 ++++ .../clustering/basicobj/CSKSimpleCluster.java | 23 + .../howtokb/clustering/basicobj/Instance.java | 40 ++ .../sim/ActivityWordCategorySim.java | 83 ++++ .../clustering/sim/CategorySimilarity.java | 174 +++++++ .../howtokb/clustering/sim/Coefficient.java | 53 ++ .../clustering/sim/SimilarityComputation.java | 312 ++++++++++++ .../clustering/sim/StringSimilarity.java | 224 +++++++++ .../clustering/sim/w2v/Word2VecRunner.java | 451 ++++++++++++++++++ .../sim/w2v/Word2VecSimilarity.java | 174 +++++++ src/main/java/kb/howtokb/global/Global.java | 121 +++-- .../extractor/TextToOpenIEResult.java | 9 +- ...ivity.java => TextToWikiHowTaskFrame.java} | 18 +- .../howtokb/tools/InformationExtraction.java | 43 +- .../kb/howtokb/tools/NormalizationText.java | 55 ++- .../kb/howtokb/tools/StructureConverter.java | 26 + .../utils/AdjacencyBackedSparseMatrix.java | 31 ++ .../java/kb/howtokb/utils/BijectiveMap.java | 49 ++ src/main/java/kb/howtokb/utils/IDMap.java | 25 + .../kb/howtokb/utils/SQLiteJDBCConnector.java | 91 ++++ .../java/kb/howtokb/utils/SortedMultiMap.java | 356 ++++++++++++++ .../kb/howtokb/utils/SparseSimMatrix.java | 34 ++ ...t.java => TextToWikiHowTaskFrameTest.java} | 68 +-- .../HeuristicBottomUpClusteringTest.java | 58 +++ ...ticTopDownClusteringDynamicSparseTest.java | 41 ++ .../HeuristicTopDownClusteringTest.java | 51 ++ 41 files changed, 3822 insertions(+), 127 deletions(-) create mode 100644 jars/javatools-1.0.0.jar create mode 100644 jars/json-simple-1.1.1.jar create mode 100644 src/main/java/kb/howtokb/clustering/ActivityCachedSim.java create mode 100644 src/main/java/kb/howtokb/clustering/ActivityComponentSim.java create mode 100644 src/main/java/kb/howtokb/clustering/DataForClustering.java create mode 100644 src/main/java/kb/howtokb/clustering/HeuristicBottomupClustering.java create mode 100644 src/main/java/kb/howtokb/clustering/HeuristicTopDownClustering.java create mode 100644 src/main/java/kb/howtokb/clustering/HeuristicTopDownClusteringDynamicSparse.java create mode 100644 src/main/java/kb/howtokb/clustering/IBottomUpClustering.java create mode 100644 src/main/java/kb/howtokb/clustering/ISimilarity.java create mode 100644 src/main/java/kb/howtokb/clustering/ITopDownClustering.java create mode 100644 src/main/java/kb/howtokb/clustering/SimpleClusterSimilarity.java create mode 100644 src/main/java/kb/howtokb/clustering/SimplePruningSimilarity.java create mode 100644 src/main/java/kb/howtokb/clustering/basicobj/ActivityWordsCategory.java create mode 100644 src/main/java/kb/howtokb/clustering/basicobj/BasicDataPt.java create mode 100644 src/main/java/kb/howtokb/clustering/basicobj/CSKCluster.java create mode 100644 src/main/java/kb/howtokb/clustering/basicobj/CSKSimpleCluster.java create mode 100644 src/main/java/kb/howtokb/clustering/basicobj/Instance.java create mode 100644 src/main/java/kb/howtokb/clustering/sim/ActivityWordCategorySim.java create mode 100644 src/main/java/kb/howtokb/clustering/sim/CategorySimilarity.java create mode 100644 src/main/java/kb/howtokb/clustering/sim/Coefficient.java create mode 100644 src/main/java/kb/howtokb/clustering/sim/SimilarityComputation.java create mode 100644 src/main/java/kb/howtokb/clustering/sim/StringSimilarity.java create mode 100644 src/main/java/kb/howtokb/clustering/sim/w2v/Word2VecRunner.java create mode 100644 src/main/java/kb/howtokb/clustering/sim/w2v/Word2VecSimilarity.java rename src/main/java/kb/howtokb/taskframe/extractor/{TextToActivity.java => TextToWikiHowTaskFrame.java} (98%) create mode 100644 src/main/java/kb/howtokb/tools/StructureConverter.java create mode 100644 src/main/java/kb/howtokb/utils/AdjacencyBackedSparseMatrix.java create mode 100644 src/main/java/kb/howtokb/utils/BijectiveMap.java create mode 100644 src/main/java/kb/howtokb/utils/IDMap.java create mode 100644 src/main/java/kb/howtokb/utils/SQLiteJDBCConnector.java create mode 100644 src/main/java/kb/howtokb/utils/SortedMultiMap.java create mode 100644 src/main/java/kb/howtokb/utils/SparseSimMatrix.java rename src/test/java/kb/howtokb/{TextToActivityTest.java => TextToWikiHowTaskFrameTest.java} (59%) create mode 100644 src/test/java/kb/howtokb/clustering/HeuristicBottomUpClusteringTest.java create mode 100644 src/test/java/kb/howtokb/clustering/HeuristicTopDownClusteringDynamicSparseTest.java create mode 100644 src/test/java/kb/howtokb/clustering/HeuristicTopDownClusteringTest.java diff --git a/jars/javatools-1.0.0.jar b/jars/javatools-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..2664384977cccfa5cdb473a4b0a5218aa089dd4b GIT binary patch literal 409973 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
-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 ?^cue ze_?~e#D1wOWlS2<{tCE4J+$ekmXe|Nd5wj1U0%P5$ly28EF$x+0|GoO_|RI zW*Xs_psU}=2+N9)?59_P)pbGP*Gd3A@x4_s^C>+Ru_+YdV`v%PpXVfQV)ueYmdvLi z7L%L?k`{PWnu>>H`J`>AApwcv%)eJ+fr|xS2>AL+zD{J=I|{8-MvQWZ#TR zjkXyl*TWro(M*RJu|M_`c2INV#rxy!4Xf1qNH-tlTRV=V;X-k zVzG&sETjtF@9C7lKSPPKyt>VTY$k-|ARv_07vksqZR@HHWHWDYGng#lk6Z8Pi z6vO`Djw4sjvPB>enTf7qA+(@lsc0;%Dxuw8Jf>__RW=TYurFYpku)Jg--xe4Y2ct& z>A|b30Ff#Z*`O$X(e4c8i_9A)KtftVnr_8-+^byr-6J%z3ZTieD;`|srdbB?&a86K z2=aPVH|a{bSkPPLH6I_^Y08K3L>THmu@_$-ptw6y`4kTM1UDV@Rv0S|#x;y-8;{iI z^26OOz67SeMrW0EXG-HS@v$TGZ6R8zo{-XgtNS)m{LO8~MOQU^vGJYYIOz&Ue1DDy z<3;kwZUW|ReKxpk-${(=X#2$%-Yl^NWI8?ky%Fnj+&_^kOQyt$=)O_5c?@5sEt_d+ z;)#}Boj`vqdFcI(wR?=1?mCU}uy~_t>^OM$ZHGcP;|z}LsLyqr7@*E1*M?}QM+cHJ z(@y^ACZ6EMl^Vib;#v@f9;zHMA*)3ht2{wz-$O?l*KE3OtsFT_wl4o5Rv6mb3w10n zcciorq2ur^zNKVQp)#Cv1P(JlBfr%rv-KI6kdi6Wh*$30Z}J5Mfx)X#E|oDU z3%TUfmi2Rm?Jr5w-``LN$BK;E4y@m2GwKgPRXD>w`)DN_yX2NMVy@ZwC1u3>eYt4H z7M^&?!$u|w-&ag>?We^&I%o$~dY$F2hL5Cr`Lep#Qh!IWJw-d+80p^>)$Z>&-GFQN z2W$6hR`sgjn~ueIC2>tK%A1aOkn)%+U+@iaGphM{k0yx7TH+R0eWXhd2l(8BuW^>Y*{N2OR zxv7Or&R)JwJ!Lx(9ckak;Z`(%|A0AFKVQ{Mk>f9`32Pl(z>mXc^vtcTn~H0k{Hn2A zc<=p9C1qz|ckJh^0uEV*&cqH1<U1Qha2I3;8Gg{}yQf0nDSVVf=qy3bfIe%lrRLkHvoh=Ku74TDbWA-y&wH zwyHM1Bu-G1;tCE?2#+M?TBYBH_ulqT&m*;%T3R+EJl9MQ8&uh53kb{zplP*{n=VYHJ(?lEs^q(y&Y@OWGl_GM7BGSgKm7}k#^kN0}~6IT^s7C@HSH~PR$Ch zZS!GHrTs|huMY8oB@Gvg$pgsm>s^RHHm`s zW}bb=H+5+x#Gf$264nTY_u8{1(Khd~3$)Q@HZRrKUG;N94fyu?TNb{5WU=7}PNXqp z$Bvom$0?tE)(?MONm005^?^Myw7Q-G?OC2#N|FJgwr{-@0%Vzq_pG!m7B^PG#rA7))$sJv*8BbG_!NGr@ zpDFuzTfKnDx30$$_Y@-@O{%OWjO$Ji0fPqaHq8pu)|rYC$}WRhTw0g}2h1D@{l0F@ z1XCc?(OD|=5jTE7ZaeF^D~d@l zG?f#W*lYZ77!0mLyoZNbJXeP%hp}#3qE|F9gkjV`B3ZqyQ_-UQR)6b-PWa)TF>k;9 zQD+nvM}P6un5SQ1wP>+TcJ0pbtX+ls!IeaE$VVp3=yy-?i1x`}DJ57H;~|f-xmTE@ zQb#j{4F+&S!(gnnP-8t7=E_oKyje)SAK*XKdt0XfdH`98mk1iKSMuP(-&Z(Yn#j>M z(1CKkFBqwk7)Z(RyU!1CEXu5)O)rd5;`_R*n+dWu_(09Ci_eyh&}Tci7v4d+FYsmX zAzHp-!>J<7L(=%<4z2Y^6kJoxq8yqw#wPXx>zcNTJgAe--_vf57raxS5#R2Us*(he zP6a<~?f0bXrGLiE{Qc&7asYQA&z!v(*O~6`>w-b)kI&W3nyFRd{rL|BdusyIid)u9 z*hlXDb>t(mljD_WPZH=iDVWd*qqnnYFL{XRZF4XPr$tp zT6+ma=QnG&R7$-0z?C~^s`%e=QQt;JqJIB>rbHYjku<9?DrH}sV z@AFtsA=G6j9AbkzSzZpSEr$)>v$DQRDYlf89nRL^DY8^6FF!Wc_4F~sxxD=K_qKQD z(yw=>$H`mYSAXQ$OLr>!di5hUXr;0G5AD3^1d(2oA)*7J!keM+SOqDaYtZT3ItJ=a zwxrafS5$wdH8NdwRavbz@RKvR=tF4BVY5@RR_|(dDUH}^U7wCigHr{C40EPsssPD_ z5T{9l+I;J!6ZEik?CAQ8M0j0|p(l5WF}6Jtq1f z;42m@@8LV7?Cn^fu9&7gK2=uqRMZTBNJ#?x48h9IHQ;Ws9KEY(IQCK-8VIbW$5rKm z83_RWyE{WP^At*j2|sgt|Gl1X(yr24Az;wufQk6d-BpYo-<`fpgD>cKFW$YI)|oah zqW||J;tjC(s2(l{$S^?Hud``CUR4o8a1mC;PMxK*4YY9e>9CrmP3@EIY+m%++yDtS#o$5=xLS_iofmsC zk9JPtN`A^;3)|7=UJQ7`*Snu5JTCGqcrCy72YSinN&wd?NZ3=a2fl!e3|;V9D|ah^ zmPUr{aW)7q5u-#E&0L=k;sC>B<@A!Ij0_%57HTnZqhtuY$}=Maae8Awn^?`I!szzZ zg4U2ydBL;l>Z=}~f`XoYspSdZjgQ>|qbGYdh&715ZYI`ZzUV$jA1lu+V{&?!bhz<8 zc7NSIh&;&vFAkZQ8!`qoq-|x(avq&8)YtLwcu){?N=;FU&7`U+pD5YoSzmKlXcfO@ z2)GNk8Pj=N^5P{SZ-+P+#!b`W&4DbIxyM!Tsbc`Hy+lS1I|PcQ%tS_ZMEI@Bm>exT zboSIVEOAOFIkj8-<-Pdd2CvK<}?(;=9HrFP+0&Ss@gJTA)dQ(kV zp67Q??C`EI6fEpdjOmjarll4Vdb!ayg%zF8PW)2ll@iI7v9jbw@UzwHXNCbUfkd>K zPfo{om6-;tP7|aew4iaiz%=r>*1;E1W-Ov-bg|Wc0p0%|LI1V_y2&>N#r*}we_vMo z-O~OOd|5$66wWNpo*WDiSA6O=H6p3ZTaAM|ja zIWlVVgQ5V}*50Gh@t>rY)J`VfqHn3y6wkji04Q+43yS+_SHjExf#k@n=4sPCN%)l(ORG?s%-Wj`GcVE3CIFm zAOA0&@tK{O<1;sXuepMgqKgg0M*O}u+>&C z_eJ=Z`@UDn_P3!Uy!U+~XqQ;LzFFN_+OGU56zZa_ehiP(#m~N6iNNKXHS2>=U%-7Rd+I7q{une z*Z;eCxrJQmniaFOE=p}rBcvy-d?MNIf0^Ia&z;n>)AC-qw>W@+yv01j>#ZNDk~MV8 zI~&|~Fb1;zwBsfZIBqtD^9x!&rCC+`?YE`x4EL=+;j-0JY#Ev7>>3?+3jRY0=C{mo z$cYe){iis#+JvZt; z-``HYdNWPB!jn#qx{A1DI>z8vLz(412CTF`FNVGdRP;VABTDxJA zGhUMzQUrI9Fz2>Ytp`IX9`F^(8S4Obw=2~9{ZjQ#%$&jU&f4-mr>fP)*SIT+&X=9| zdP=v1w$;JfnRVP&e^7qKg7skyE*Jn7m%y(2b3TWKoc72QmCsv7mK%f(7p)ilOOXcx zZMu&Y(6mhcoT+r_0F}bGhNKPe3?em7|3-Q1v@2B6EhTWb2v|ZfwXtQYd79m@7hOGy zY)Dg}Om19(XOd?Yr+;yEDtdlg(p!lWU2JlGa0w@o@VS*4@}FD#Ion@Z1qu%s@FXIpp;C)MZga=11`DhbYM1CToYeb zKA}H@CA8$tb7no(+LY4Yye&fdLuiyYJH$`ffYR60qazKv|Iq)@BBqUQ3EAPgw%+J( zjVyI1xhLUPi~)YdF3JGjhCQ4bQ5e)cVgzpZ_ODS7z7~ySuqqK_kX&un>z&xbVHso* z1c~(I1S5@1u2|jv)nr!sMONa?V810-J;v92i55!s8E1Yx_MYz4%F1@eZ2oyp%_-g> zrzQ{VeP#CWE7;3F_MYv+PmQl`-WB%@S&HA{4{n3cjex!lzWnl{#?EKlGZ{_-T3RQG zD&4?W;n4<6JU6IJma@3)VB81zzx$-W%gWE+mX+5ibHUWOuPOaB)keg)EQd8d%ZAhw z{rg8Q<52gOR&{v;aUxO}4#Eu!|vi&7cd`fW1sr zEXk*-%J$WQ1xg0Rn;o4vE1{&$np$ql52<>Q@C1^{brHG<-nLqH2x9_?+D+A&Eu$lp z1h>==NM}#5=$(;a%?p{UM~<`@g4O#86aZ3WlZQy$D}YclphGDlewMa2 zse)lpD|_&5`xSE#kM0NuU^fsiH+saDqybq!KX&?1R%n8kBG??+sI#-1{GtaJcr1*X;AdLo8e{afm*bzuEK8 z4ZW0AWu{$hs|)h&3CY^fBB?{@J6AJ5UNA8Hi^W@gsitMgkBqW=?a7_fmhJ|>I88v= z3}k&@-gZ_4kw&6=@Ems>QpfyJQ3QN1yRQX6M z2hBJfpUY?`T)u)xy827wEjJ9BDTr^~vo)$|9fy*I21%Ac=;^FPb=eTSy#9y=P&vbl zRt)m{-+n1-73-^CLRfVpm7ef&{V6b>xA`9Q-8hBxUd)?X&5Ecr&dC>SO4p;>6b?<+ zj@t$a9&S0k<5{ZzQF+UZY0!QAu#;jV{yQpMo3jj(w{YY+_?#k=WjA!R?=u;bc1s(K zYg_4{@TRvgWQHw%aXX>6-==@>jxx^ao&6zpO4QEDAGAmSokUpN#!R*fB1E=Jc`6DY z=dT=WHGb({sC#9 zSGU-;HU3Q%pHFxwdW8Xdn5QbaD0K&OEl$?7b=zydVWF=X?K=xL_}RZzoHj56GDxN0 z)*EksuuXbxd#*RBvOv=H9x&F{^nFJRgv?-~Wa>*F0xLYsX$V$|6ms>QA}oNfZg|@3 zFm*AhWzQLkUBfRZqX!Oy?DJvK47MZz)MO^>E59_;-AzK?l=GPprcsTWIC*l9y~oZA zLiLVMQ$^K!u+Twi7?ub%Vsymy;)P4FPG0deqU@ksP)pa_b{m5mB6kdSH?GDT;%$k1 z0x+B0@PB9u6$;HEWZW^W8oEHby49hYD^&7M*)z!5l>VzHmF%o>;*fovbn;(96wJGy zG4JOksPy^FOjYS%5rh5TITeq_BxokBEj6pX@VrfO`fHf?N{dV3wfSaln*arw&Q9`a zAY((qbm2SFOu0~WfLQ!#0))c>NKdL#tYE@uBJU+N%x*O^Y}C{Uvim4 z^l%ReMi)?$A$2~V*AOdlAF>N~Qp*G5W6$fHI8_qtwH_rAcpU$@9U!>j>_gCNO#Q&< zpo+h;#3Ra^3Njf#!4#KlL(9V_%_iP$>f`80qDaGuagLVMLG(C%md-`r)DfUtf`QtB286#FuN2y92?BI%b!3sLDA)~#}HJ;+tHtnD#_My+x74&)OT`={%G92WR z@*Sn!8<(va7S_+I;#R9hmHNb-0!X!eG#_Rw9ngxRtMaC;MYT0%dfk~;%6)bCChw7){rjtOLs&es(pZ5p*(uYc+-lw& zD2e83Ezh&7gGWr~v)kK+iMn>Fs38FhHlO&FQ-+B{c=9SAdJ~e>KLtb*X?x&zO&Pqz zwA-hA4wi=xRFSIfleJ~2o zVo{DHc?4&;vZ$OLjv`N6`wUZKsv7(Y_vlUHWD{xepg6*{xKb+dKweXb=7{vi3a#mj zMr~nLMQ4mJ>$7NH8nq{IjZIC4FstVuQD&D4FlnZeEOG3yI>E-#lRk;C*>MZ54`!^_ zi?kUuwPR)K;O#7_j%az=LigMKVKmoKog!09F)Hr-n^tsyp}es!@pQSbkM-H|VpxUa zPeU;?0FT$;Pswt*QaubW{qYE9?qOEenGXf9q8PQ@)QKyWk6G_RGc;ZwbadEe2%!nr z_2PI69b8TWA&*freYe3PjcvO0>B5Ovqy>Hp@Ob$R2?V$aDq#t3^ z)xOyvds1jQyT(g!(ATGFpETG&76+0a`ys8>Aq1TnMsTZmCC9XW&e z2&DJqO?&{t(()3dt+j1l``Y(l;Hd(#T|D3%W6bVsVpb?&CUQV~;Q-_Qeg!Lu3mlaA zr56wDolOtXQr)1jX)i8%Wl?}>uWnue=Vt9peg^H9jj+2B{BeMuWgUebj{`*!2)%HR zc6NV4o1vdX`29)AqPHi=^W3s%;ezGRia$k*PVoPW$nuOp{1ClhOy$2pQA?EjEh7q* z|7nLMt`C=@|C!p#3OU~@&!RULyunV&!KB1{V!F>5-z_H~9m!Y|a)C5fm^#lfH$!EY znE7IVIJIa3@z2<0-$JDvg}97W;a;sGe1-(Hoyj$}6q-+WCY2&~z;Y>9^6_p~?@um~@qI6p38QX~lT&WJ2BSC2Up?QO5j<5>_ zQn(bi{&@#;xVx|*6@MiY(;+$d*m-7H1a-Y|iFwFLak@>auhmf#XP~7Lx?`b%x=5xC zB3S6Rz{3s|p;y`E(TH@{W&IecjjD6Xtd#hdIUHCfus{vwc4nSh3MGSkYv3**Od<&- zDF?kR3uFuAGzF`P&?UduOjUqshiW%Uh#X9UEC?`|7VI?S7mA-TS;11>4-Vu6l9bdB zsp!8liI(=Ii`2H`_E33Fi@6~R)#L3-z@O#lMok&*k$`roBshOE8@+T$lavI%%9RPC zM{AJ=Kfb5Z;9*@3EgiUA&2l;>JB_ zXH0nU?(KD@;3<`5900xlJEqE1oL<>U`-jl)VJKwas~^~LjJxI2i^XiHJN{RFnsgDQ z_pfwGtq3gJNV8SwwGrs+kC713e&(SIb2q%6YLCWbw-V~Iw(>|a@V0YAK4l1Z*x644 zcNB7P`G&QESWf@7tx^&|NyEIgGS*+_Ra;~#8F*#G#Q;++`QCQLY zbAD&L66)avH-%<5QU>bLgIhLwXosj+nu@NLYGYfZI$v}l`CyZ#SXk8V1A;DA>XmOC z95K8nM-%#;E`kJnRU@w>b7B%K!+wsG_&qj%K0`)FpJ0@PXN?)%I<{OcJw@*U!_smD zb=3iRpi(nx`9WcwV#wak+NC7;!zMuyPT7>g5X9-pNvtAj>4DiPM(77r$#(BVgTAoE zG&&|qp+>oAU%31u#Jd@RItMO65E%0_(9J=B{4dse6<$#Y)a7@|XHm|41wJRAif~(Q zl}XFgJJB$_jDi<^&O5B^R zuK)4#yBB3?_LCGD*Qa=qExziw3k^C!E<)>2My!{y*vq&C+-VfywoM%y7)Hl8Tqvw7 z%F+3V7Fl@~wI_D6UAvW{uKN{PwJ^xbS2?_x>%wC%6lF(9pr{wx2p)owazH27wK8;* zX@m7A3lE5KEIa4GPdAUgiU{8UW7Y$E3eI6ZtcdGIwTIC#xCGBQ9yoB zFc6>@$s*oC&0I7n!re4>Q)JgQ4Rur%ZFQs@Wu*=alW*6zvW2^24n_gyfXMy;TOTBK z;?riv`M^n`qA@<|um?e@#?pk5l`%QGzOx2|44)$(SQNgCl|(2Zpl6y>t2_x!ia1r& z2}QzL3TrU*5=~~<15KlzKM1WGhTo00XN*M~xVXvD)qdY|-$Xrq+QXG1pUL`y%|mqr z?W01QI6Z=*x~lg9Lar`UqYxP%q|Ih%AKc}%39O}@sHogkzb(L`e#NcSGTIgbpmJ_) zOf->Ska-~kK+wn2j-jE~wDm{o(M7p>mqxu$IuWZ?L*n(X9`MikR) z83i~OTEYiFfLUXbXMf9S?q|75Q98mrN?8#1v#sUcST{I)x-_~?tLnwvuzMV8rq-g3 zP#XA{0zz4Y$LY@oB}Aubrgot%&F{x+LIWz`CPkM;WS-JARZ)?hjS(PkT?B!eCFS)Y z`JWF|g&`p0RN1|zD-dZE-gkH9-OOZZlsr%JO$Quz-O7iPv(BBK=Pb6U;m5u~r~zjq z4mKtBcdUL>8naK`F!!4TK?*{2lwATG>;pu6K}3GM1i*#DA7;R_C8T;nB=;sCFTTV* zQ=5XyxJ||p$ZXW9=4eSDE3J+nxkq73UMAk4;ebN1F?%|W?E4)8Q{40Fr=-fP?VrfN z1eK9D%)<+aX-1a!BUUiFC^F%u`TV}eBiaqs?$3xrnR$XCw+GoxOp58hE3sy z;Xxsk9gPSZTt+D1tAP-y|CcC6E#}-@>S>rwHl5~n{ZDom(FBlCZodvL4b-cTRB1BB z{di}mo`7s+1%!OWJmPJc%IqA%k~T9aJ_F~4p)ggh z)=g&)i3c#Awc)X-XqAs~&$@71m$Zt1+R1VRvCpkWxHz=R*zg14zQAgSU?l8XY0pIJL5rcX zNg5XI18Yi|#wDXObdawn8+p?a>s;fcDkd@_gj@-#5J9bcLCghMNR@(xVsgtUq1m2v zx^h#8xoEn3Ld(YGYTiCRjJc8+i;}<=yPdDNx>G!wVy%HDs5*8#anlDN<$Xs-| zBi)CKk5%(3XlR)9L-A>1xrtC5|Ih$SHC-~7gs5@k9|;99vC6Zt{VJ&5GVYpiJPz^E zJqdZ_ZBf&;jJTwjm}XRQzrqkh^N(G7va@*|4V!G}!n}%q{(+c0I|Z^-MGV}Ae^q5V zW@yNwTSY3F1${uY4iB5Wo64xbI#bvc51Zcy@E$FsEP7@}bZGdsD^236&fC13M+gKX zRHIUESJgf{9uj8f&i0yE7+vQFz;btNRnGbPIR`@38fNam_`jrqzdFUuooo;gaQ?|Fuq!?Y%tj>DhG&q?cGt<%cBW=Fq?#5~j?w=sDBwEtX2mXCt!k68<= z&ANoOEq?8XtFAv$83Gr*VyG!j>wh5NDn#BH1FzUh*s57RP8W4f%g$ukt1`2?c zWw?z^ZB4=rv1>NgNb&-GKP+w^m0g%uhCm}5Pt2qrn?$og?Ur{*a9}n&#}9?w9TQx$ z`vj+V7Aus}>?v|rMo>V$KJUsgAE$*Qzsrzy(pLu|j3d=iBPf2xcpJ~IG-eKa`d5BK z7ZYSXUll*UY^T@hZv4U%?RR)^nBg^VrNU_D&?191WwO$o5?q+HZg6f@CmKUf_E0#p z6*HOBvdT29IU= z^r*ADL-Zm4*^0$7;*$bKe4oQi|6(aIN8A(~^(i)H)S=9+8@1eTuMjwMM=F20QjoZt zt1c_l%}~&2b0Xn}rjDCoI;1_w@AodeqB$|VVz1F2Zkf)_uj{yO6Ao}kF4o~V%TjL7 z9AJ<$Sv2UvI!mgEZc7ND+Xw=dOsfsMzihKN@g7*X)(nrX7aUmd0=wgC=UjtS5t{Te zC5m{3OQI@p1{u{o+>Z1IF{PCgyzII08rpBj&{^xe2<1rz6V;-6@81}i4mtv6LZM51 ztV{l&>oL|% zy+*Bh&)8qI8xfGk_2{IGO!&N#E$jQ_4C~TT_qHv1#TKu&uB<0MyQ^p)G=uqeG-IGb zyYWuVE?#r#bwaR0l7m%j8)tzd*`qBRpa`(XhbN`)HL&iyZ-clbj8$IAl%$EOnGQEV zicfM!GXb=hZ+W&Df}A^1D;)+Vna5YuzzVq9Q{f<+=!cE=m#M|D`!7t|B3YSG-(GiL zJp5ljV_;Ff5bF}2P}m||;gs7{d9#}a;Ei;?(b=i)?qw%Y2S-USiaJ%XUDwx zw0_4lY?X03o6L)x>zNGy0P;^xf&kx>c{7J>dPqC*ycvxj!uU$H4wHsJys??cB{CGI zx!>)~=SH4Mw)?G5(w`>NtXB`_9=~s6xkld%ldrlf?AU$4Q44ersi`)9Uf2Y~>Bl ztx|A1Y?FpDlaspIqO zlFdX>eQolI51=-(`Xs0j;k#vcr_}?Z4nLt!_v;Ei%ke(!4;g zq&|!_gp)QCmG3){y|#<(NPBGOC0BPt+_Te8l6le{@m?!6w!YsL+4o=oF{EHdmyS0U zleD>=7bI=c4}RZVUt^9bnXr$$FQGq*lf%qiMaPnAlDC-LplIluhracCjftuL9K=Vk zX6e!pZ4@qSwKQuFj8Y+KiZimHB1FA>1z?We6mBz`>3=hccpXH~ZmGk4*iawk0pIq< z!IUypl3}y7?=GEu7j4VO9lOK)Zd$^q-$SsGdAu;y{3>lWtWYdTl>)Z?BErKJK`M|m zIdPxil*&`5^^4@sdR+7<5w<71dyHXGn4#1-?B!FM?$eP3d7L>$Oc8tS$glM%fWaNj zVs^$<_+#`Ftk`o2R-=Qfiq}dwWk-Rslg$Il;KK-`?Or@yor>3GJi3YavWmkknKH=6 z=&H|x@to$bV*8V<@BDFHnbDW+w*t80_&2D$a!o@bmng z^BUCUd*7sZAGO%G7uF#ufEQ+Q>}}T7#m+3gnZzQZ5q5o5IX+>d93eZeSY1%TLDr4n z-RrRU!7hIVJp#9K8*5W-nrv<}`!iV>QmtlpR9~YX+oNn^R#*c^17t0D0I?|9RaokA z%PE!;nh!H#-OIFLMf?p(iVZq%bCBy8KDt*Nk<{@&8m9xc#JW#!2Au{iL7)RdOt~p3 zdiIJDFYL>2L;>8&@L`8W8?WV+G4*rffh(L^^P1JA)-$d;$I(^zcx|uaL&%>wcx> zOy$uTA3Mw}F>AH#gkAWy-?%yYJ%{V3i);Lk95+}8Cb~(ugQD4#T9XCQ{_-B8QlI9~ zuw6HkXc{W5h2NTu`(_as6*HL3gTkJ8^gMh9XCrRR$w`=fh4dxq%Y;PlMM8b*LoB)z z2?AhQ*V7x96OmtXSEZ!Z9y&ipA zh`Adh2p-Z@Xh3Z4I$vNxboFJmo1l@)9UqY?sk-CZgV6;SkD$aQTG2l9qwYRlIm<6A zN0aEiA<>?8nyvCdA@YQ~Tq+Ls%^wn`rwo(4W`qY5O?RI3RFX-xhup5+FS5+~ON-%Q zgKVar)1W)7Uq6ACoVrD{-Lqi@kR<=K>r)SR1uDVKlVRy2>yu>`cd^UCrk$F-oj+!G zg1y(wnfwHa;60kn6MB|O(s<5Clax7740AQ)!m}|V(ie+=!Uh_t@84e!v=o5m?|`;9 z%-T`#ebKmnip71ru-xIVV^*>6RvuusUHSW&BE`CF+E|Iw?Q7CIDya_Nw-AS+p^$C< z&nZ>~b%yCNb$A!4-v%BR+~4nkF8+`MF+8;j+buo=hu~q5+!$c}+!XYMan?9(oqY z@9pqk#*S_<)oH)#$mEI@6uyIDM3A`x_!SQr@3DqIcFb^4xW`TR_jgnC9+6y1M`x8H zJW39e0d7?vFY5oX>n_ti}1UIpgfTjHf(3!{q+tGtL&D-t=_pE-ZJyT;e8F`TP?n z%F27J!)pCO#dukqVI4fP;nlIE68(aIrNiowq zJMDS@O@V^u*oNgZB6+6os9FVhVc<sF&jUX;{ySfBf>`dyyHNt8V=4UuI$ve&y#(^QZzdAyxVT zhM$zRrJIH4=wl7#_8)$ry1(jP8!?h+5DcEq0K39J`eQlADeU@gt z`gLpFPP;v50pFRFz!q}rX~A#xuBa8Qh?{v?%{F5f;VvEu7z3WzUe<*aKTrT^&Gn7jTka=*4A*ZZaIv$>Sey5Ztm zNvxezUoMOLeFgPbGG%bL0#m3MJAFpixFfwvmF0NcNWL^>1KDDRh*EuZM`1CaBn5W9 zvCC$O>9#yZv42^4ekqfiLRI)doeAL>_CYU`vJe#AQ zg&izV!)J(l>Hev=t64%+y&ra!zlC4v=Ubc=#N~R@m(qn93)%TL+x&cq#(zM$)YMVW zl01&%A-%EiI_R9T^ZHn$UG!NF1r4_`%jX{ynMcb`l-#{Ku211)>jAO?AAWNSk43%M zI&feps{IkdcS3(D+ryJesk5s2?A@DU-n$j>y(c~RG*c_DzY0z zW5JE5wmWglVSDcHr01(7+S$w}&T(^IWx;_|Dxp0uj%YTV4l>S}S+l-~p{^;vg@B)^ zemy_lbJRyzNv1<&A>_>sThZholPNnIf6>R`@Q+7I3151c$mTT#qa~HN2O1f3)^K|Z z1xW0S8!>OvH^4tg`uJiY*C9k3#Hn^G$;uS%a%LL^ko);9Aw5_{&Ms&~1};^vq@$y} z6}i>4CcVJkiTR|rgcK1G$G^4iK3X%}=je%Og=lR`6j{?@R7#|}o)kVtKh?u?-Z{{Y z1jXpN77kxBLYmB}MwcC<_(-X+qQW+mf%zQCa}o8PmH{;ue(CCwD;&MYWq$95t_zvq z#!KoOAAHL%_(2qb5_~93JG4DirOzsv788ic}idOO=EOzT}Bk zyh2Jg!WLU!`HVjHu6>x_am95QC$}shD~4i4Y}t(dfvX{yD39@ZmW#@xGuL->gyy4j zmr2<*x>ETycdiAZ{@$aLDTnx?ihce0TSs?CVKF_0k1p3VU&hl1zQYX$24?0>IN*JU zgDs7CoFUPYuhB|${d||I{e?|16Z9MMq`7~xAriA1HDgN~}3&(kN zD`x2Z&qIkI{{z+Kc9mo~g2cbP?V>!&jskuX`+ue1NID!{>{uaqGtY(mpw8X3D}egX zaQ#?1*RXy%3H!C~XCqb4g)fS`Vt4#rX7t^s+|ZhU^~MmVx%Hc?)6I$&U!EdfTi1M= zVjOCxkcg`@wNkyW@+X!jTG9emkJvM(_2{S2_C*QCLtPSNRrNzY(G-0{MNEm&2>P{M zbSS6HM6;*&$&bvFoXqjxo!li2#t3&9{fV=XZraBUD)2-*o=y7ZO1wRktft41l_m4{ z>bb|nN^T_IlJlFB=<=>8-apgy9s5u^S_z`{WhmC06`6D9HZozmgT5SM_e0@}P%EPG zsB}R;ZybWGRAW3vi|oxRr5wKI%vPolk6nuQgqMX+CV}WnEc3W>t0_sJ`}|^$zu*&O z#nAZ@WO>CKs=sPnUH6Shx)y9NiC;m!O@Aj|YLQcRI$FjsV%nSAU($XQ=GDYWTk26d zW&bam(q&rZZG@p*uwAuGe2;GEKAvjauwU;`T{68+sF{oczPlU50KKH5f_xYdI3IUMd zjE+oCT<0{%JdfvzL2ExDq&V_Wc0|&uQovX+Dsn+OYR~YtTTQ@@)NOr|4^Px6n>&`l zgdQ($s=w=mJ@a#HBMmyempxwc%*+O34m{A=fLTQ#jU}J4k z&@sweqK-r#&&=DHOU&YlWDES8Ym}`KDHLNsjaK zO-@B!6l8AfI@lHq%aqj5IB3|wkLk9N2CI<~fA32T!gDj0^ z&FY)jr3-Yah4_<@U@bQR_v3*3wK;={*%()n_q{D7?)I)T5Ap*0#-fYy2JtHcMllpp z9EF_{yf(kEdMoI>mPy9(U$Ed;krw2oTzE=*59G`4UcBgIeIU-ZGxzvX(jM$7(Y7xXvOfA`UL6L=M0asUqaj)~iv!SguxUCEL>F?XT;4s9>J(i@ zD$&hp!0#W;*6Mwq^g8ca=YF5qFfKs(H0FAmqm}IGw!3a+IqUlUJq4RVY`}T+F=<*#w^DZM4p(I-wsAKc9UK)lE`8IIZ3xdBLW#yHZ{M1WcTQ}N+IC`1 zQ{F$tgRl(jE#Kbn9Wj-WwDq~VoQk}ua~!;?*iy6^v)&@ z#gI40V*SBeHJZ}N)Bq>6hM2Fe{2^aBJM|WNQoa=EUM6}fpSmr$Cb@UXtO@y8w^8a| zT;q>pvt;qmFm~%wQhr2G`4fTV_W^l#wRgcpe*MSN+>v)Up`UCj-+LPCo5Z)58&`#I zc42%o@7Top>hV?L2gfhO^Wj|2+Dn6a^&MHN>Yr!+bf#CAgPxbO0bGUa7r!OO9}Do~ z+ME>ZTVxpPC>iDddP~usQS|(s{j+fC_EX~SDXwrecxt+HRKW46BJt!Mw5aTQS&0Ij zduV;G`^f>d#-iz|fKpsW`F%8Vv;QC(VRRS4XAD{$+UJ3mVfAp?SO|!b?vc-E6>-TW zT^ViRMpN72As=3&;x3|7OF|ia;YQQo5Fm!H(Qxl@A%QbE3gVH7UkC#QaTVwyL*fa8 z1d$Y8Ms|LIi)8r13-3gj@S7He&I-i@En$l`oX!e<&61H*iZbLEQKXu@P6%ntFRaK4 z`MF@yh+kBZ=<;(R-$H*Obvelk2MSUv$l;EEaYb-KNEo73c|C>63;*%v6{OOifu+AX?Sk}hAyyCAJVvjE&Y zS|PYDEBV_HLBzfw+M(CZxRF)yl+V`m7!f7YBQ|hxNoa)#yTatL5uIKpbV|{Bl2F4V ztTvs<tn=KrA>Wif|#%_DH?;s=gyF@E+raa#vZ9G|2xPNug?{in?VS^t4Ll2=~Or& zQL;IT5yONh0lYhrmJPK6SphlnD!xn7H_{9xGA{mI@JzHBbL8-sE-72-SD0NX^5!Ae z%Xloe?;7>6VglOGq6@sp*6v(?&7|C!0==y>=zx+eir7u9% zWk^M>{qzgl7N^g*9FdVFBqPEMeg;{dI9NY)gRmUFufRxvN+S2KFxJ5qL>0A(X_Tkk zUK#qPd>&s6^WYLf60{h!Gi&5Q?~Og9ANd2*T_F2Y$B`6NwA=?zjOIWb!VT9%Gs

  • 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

    6T>j;w^QcjRwy2t55vpw@^?Kpzejb2Y6LQ55Mh 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 A{Qv*} literal 0 HcmV?d00001 diff --git a/src/main/java/kb/howtokb/clustering/ActivityCachedSim.java b/src/main/java/kb/howtokb/clustering/ActivityCachedSim.java new file mode 100644 index 0000000..d0b9a84 --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/ActivityCachedSim.java @@ -0,0 +1,37 @@ +package kb.howtokb.clustering; + +import edu.stanford.nlp.util.Pair; +import kb.howtokb.utils.BijectiveMap; + +public class ActivityCachedSim { + + private BijectiveMap> ids; + private ActivityComponentSim vSim, nSim; + + public ActivityCachedSim(BijectiveMap> ids, ActivityComponentSim vSim, + ActivityComponentSim nSim) { + this.ids = ids; + this.vSim = vSim; + this.nSim = nSim; + } + + private boolean sim(Pair e1, Pair e2) { +// return +// // v1 v2 are similar +// vSim.simFromCache(e1.first, e2.first) && +// // n1 v2 are similar +// nSim.simFromCache(e1.second, e2.second); + + if (!vSim.simFromCache(e1.first, e2.first) && + // n1 v2 are similar + !nSim.simFromCache(e1.second, e2.second)) + return false; + return true; + } + + public boolean sim(String a1, String a2) { + Pair e1 = this.ids.getValueFromKey(a1); + Pair e2 = this.ids.getValueFromKey(a2); + return sim(e1, e2); + } +} diff --git a/src/main/java/kb/howtokb/clustering/ActivityComponentSim.java b/src/main/java/kb/howtokb/clustering/ActivityComponentSim.java new file mode 100644 index 0000000..b6e778d --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/ActivityComponentSim.java @@ -0,0 +1,86 @@ +package kb.howtokb.clustering; + +import java.util.Map; + +import kb.howtokb.clustering.sim.ActivityWordCategorySim.SparseSims; +import kb.howtokb.utils.IDMap; + +public class ActivityComponentSim implements ISimilarity { + + private double threshold = 0.0; + private SparseSims sims; // cache. + private IDMap ids; + private ISimilarity word2vecSim; + + public ActivityComponentSim(double threshold, IDMap ids, ISimilarity word2vecSim) { + this.threshold = threshold; + this.sims = new SparseSims((float) this.threshold); + this.ids = ids; + this.word2vecSim = word2vecSim; + computeAllPairsSim(); + } + + private void computeAllPairsSim() { + //Progress p = new Progress(1); + Integer[] ids = this.ids.values().toArray(new Integer[0]); + System.out.println("\n" + ids.length + " activity components. (one dot per activity neighborhood)"); + for (int i = 0; i < ids.length; i++) { + //p.next(); + int e1 = ids[i]; + for (int j = i; j < ids.length; j++) { + // cache before returning the result. + int e2 = ids[j]; + sims.set(e1, e2, (float) sim(e1, e2)); + } + } + } + + @Override + public double sim(Integer e1, Integer e2) { + String word1 = ids.getKeyFromValue(e1); + String word2 = ids.getKeyFromValue(e2); + return word2vecSim.sim(word1, word2); + } + + @Override + public Map getNeighbors(Integer e) { + System.err.println( + "neighborhood for an integer " + "activity (noun or verb) not yet implemented."); + return null; + } + + @Override + public boolean simThreshold(Integer e1, Integer e2, double minthreshold) throws Exception { + return sim(e1, e2) >= minthreshold; + } + + // Use this function once the object is completely constructed. + /** + * Also checks for e2,e1 + * + * @param e1 + * @param e2 + * @return if (e1,e2) are similar, return true. otherwise returns false + */ + public boolean simFromCache(int e1, int e2) { + return sims.get(e1, e2); + } + + /** + * Also checks for e2,e1
    + * NOTE: ensure that word1 and word2 are either both verbs or both noun. + * And modified according to the ISim func. provided to the constructor + * + * @param word1 + * go away => v_go (we only lookup "go" in word2vec) + * @param word2 + * move => v_move + * @return if (e1,e2) are similar, return true. otherwise returns false + */ + public boolean simFromCache(String word1, String word2) { + int e1 = ids.getValueFromKey(word1); + int e2 = ids.getValueFromKey(word2); + return sims.get(e1, e2); + } + +} diff --git a/src/main/java/kb/howtokb/clustering/DataForClustering.java b/src/main/java/kb/howtokb/clustering/DataForClustering.java new file mode 100644 index 0000000..dda8e0c --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/DataForClustering.java @@ -0,0 +1,202 @@ +package kb.howtokb.clustering; + +import java.util.List; + +import kb.howtokb.clustering.sim.CategorySimilarity; +import kb.howtokb.clustering.sim.SimilarityComputation; +import kb.howtokb.taskframe.WikiHowTaskFrame; +import kb.howtokb.utils.AdjacencyBackedSparseMatrix; +import kb.howtokb.utils.SparseSimMatrix; + + +public class DataForClustering { + + /*Get similarity matrix of a cluster + * s(i,j) is similarity between i and j + * 0 at diagonal + */ + public static double[][] getSimilarityMatrix(List list, CategorySimilarity cs) throws Exception{ + double [][] res = new double[list.size()][list.size()]; + for (int i=0; i list, CategorySimilarity cs) throws Exception{ + double [][] res = new double[list.size()][list.size()]; + for (int i=0; i list, CategorySimilarity cs, double threshold) throws Exception{ + SparseSimMatrix res = new SparseSimMatrix((float) threshold); + for (int i=0; i list, CategorySimilarity cs, double threshold) throws Exception{ + int n = list.size(); + AdjacencyBackedSparseMatrix res = new AdjacencyBackedSparseMatrix((float) threshold, n); + for (int i=0; i= (U.length - 1) - k + 1; j--){ +// res[i][U.length - 1 - j] = U[i][j]; +// } +// } +// +//// //Normalize rows of Y to use for k-means on row of Y +//// for (int i=0; i list, boolean unnormalized, int k) throws Exception{ +// //Get similarity matrix +// double[][] simMatrix = getSimilarityMatrix(list, cs); +// //Get laplacian matrix +// double[][] laplacian; +// if (unnormalized){ +// laplacian = getUnnormalizedLaplacianMatrix(simMatrix); +// }else laplacian = getNormalizedLaplacianMatrix(simMatrix); +// +// return getMatrixForKMean(laplacian, k); +// } +} diff --git a/src/main/java/kb/howtokb/clustering/HeuristicBottomupClustering.java b/src/main/java/kb/howtokb/clustering/HeuristicBottomupClustering.java new file mode 100644 index 0000000..4c3fd59 --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/HeuristicBottomupClustering.java @@ -0,0 +1,199 @@ +package kb.howtokb.clustering; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import javatools.administrative.Announce; +import kb.howtokb.clustering.basicobj.ActivityWordsCategory; +import kb.howtokb.clustering.basicobj.CSKCluster; +import kb.howtokb.utils.AutoMap; + +// Merging clusters. +public class HeuristicBottomupClustering implements IBottomUpClustering, ActivityWordsCategory> { + + // As we do hard-clustering, each cluster can be part of at-most one super + // cluster. Therefore, while merging, maintain a visited flag + private Map, Boolean> visited; + private List> potentiallyMergeableClusters; + // TODO a very costly map. + private Map elems; + + public HeuristicBottomupClustering(String activityTb) throws IOException { + // just store the pointer, we don't need to modify this data. + elems = new HashMap<>(); + loadElemsFromDb(activityTb); + Announce.message("# initial instances: " + elems.size()); + // Group on the strong norm form (e.g. paint a wall and paint a long wall) + AutoMap> lexicalClusters = new AutoMap<>(); + for (Entry e : elems.entrySet()) + lexicalClusters.addArrayValue(e.getValue(), e.getValue()); + + // Construct clusters from automap. + this.potentiallyMergeableClusters = new ArrayList<>(); + for (Entry> e : lexicalClusters.entrySet()) { + CSKCluster smallCluster = new CSKCluster( + e.getKey().getId()); + for (ActivityWordsCategory clusterMember : e.getValue()) + smallCluster.addClusterMember(clusterMember.getId()); + potentiallyMergeableClusters.add(smallCluster); + } + + // by default none will be unvisited or visited because map is empty. + visited = new HashMap<>(); + for (CSKCluster smallCluster : potentiallyMergeableClusters) { + visited.put(smallCluster, false); + } + + } + + public HeuristicBottomupClustering(Map activityTb) throws IOException { + // just store the pointer, we don't need to modify this data. + elems = new HashMap<>(); + elems = activityTb; + Announce.message("# initial instances: " + elems.size()); + // Group on the strong norm form (e.g. paint a wall and paint a long wall) + AutoMap> lexicalClusters = new AutoMap<>(); + for (Entry e : elems.entrySet()) + lexicalClusters.addArrayValue(e.getValue(), e.getValue()); + + // Construct clusters from automap. + this.potentiallyMergeableClusters = new ArrayList<>(); + for (Entry> e : lexicalClusters.entrySet()) { + CSKCluster smallCluster = new CSKCluster( + e.getKey().getId()); + for (ActivityWordsCategory clusterMember : e.getValue()) + smallCluster.addClusterMember(clusterMember.getId()); + potentiallyMergeableClusters.add(smallCluster); + } + + // by default none will be unvisited or visited because map is empty. + visited = new HashMap<>(); + for (CSKCluster smallCluster : potentiallyMergeableClusters) { + visited.put(smallCluster, false); + } + + } + + private void loadElemsFromDb(String activityTb) throws IOException { + try (BufferedReader br = new BufferedReader(new FileReader(activityTb))) { + String sCurrentLine; + while ((sCurrentLine = br.readLine()) != null) { + String [] line = sCurrentLine.split("\t"); + elems.put(Integer.parseInt(line[0]), + new ActivityWordsCategory(Integer.parseInt(line[0]), Integer.parseInt(line[1]), line[2])); + } + } + } + + // Are these clusters brothers? + @Override + public boolean canMergeWith(CSKCluster c1, CSKCluster c2, + ISimilarity simFunc, double simThreshold) throws Exception { + // Cluster key = representative of the cluster. + return simFunc.simThreshold(elems.get(c1.getClusterKey()), elems.get(c2.getClusterKey()), simThreshold); + } + + // create a super cluster. + // visit and merge. + public List cluster(ISimilarity simFunc, double simThreshold) throws Exception { + List merged = new ArrayList<>(); + Announce.message("#initial clusters = " + potentiallyMergeableClusters.size()); + //Progress p = new Progress(10); + for (CSKCluster c1 : potentiallyMergeableClusters) { + //p.next(); + // already associated with another supercluster? + if (visited.get(c1)) + continue; + visited.put(c1, true); + + // initialize the cluster. + ActivitySuperCluster unmerged = new ActivitySuperCluster(); + unmerged.addCluster(c1); + + for (CSKCluster c2 : potentiallyMergeableClusters) { + if (visited.get(c2)) + continue; + + // Should c1 absorb the little cluster c2? + // TODO: think about a thresholding algorithm? + // TODO: think about early pruning to avoid canMergeWith for + // every pair. + if (canMergeWith(c1, c2, simFunc, simThreshold)) { + unmerged.addCluster(c2); + visited.put(c2, true); + } + } + + // We are done with c1. No other cluster wants to associate with it + merged.add(unmerged); + } + + return merged; + } + + public static class ActivitySuperCluster { + + // bunch of strongly normalized triples make the key. + private List superClusterKeys; + // a list of all members of the supercluster + private List superClusterMembers; + + public List getSuperClusterKeys() { + return superClusterKeys; + } + + public List getSuperClusterMembers() { + return superClusterMembers; + } + + public ActivitySuperCluster() { + this.superClusterKeys = new ArrayList<>(); + this.superClusterMembers = new ArrayList<>(); + } + + public void addCluster(CSKCluster c) { + this.superClusterKeys.add(c.getClusterKey()); + for (Integer smallClusterMember : c.getClusterMembers()) + this.superClusterMembers.add(smallClusterMember); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((superClusterKeys == null) ? 0 : superClusterKeys.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ActivitySuperCluster other = (ActivitySuperCluster) obj; + if (superClusterKeys == null) { + if (other.superClusterKeys != null) + return false; + } else if (!superClusterKeys.equals(other.superClusterKeys)) + return false; + return true; + } + + @Override + public String toString() { + return superClusterKeys.size() + "\tCSKSuperCluster [superClusterKeys=" + superClusterKeys + + ", superClusterMembers=" + superClusterMembers + "]"; + } + + } + +} diff --git a/src/main/java/kb/howtokb/clustering/HeuristicTopDownClustering.java b/src/main/java/kb/howtokb/clustering/HeuristicTopDownClustering.java new file mode 100644 index 0000000..991e52b --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/HeuristicTopDownClustering.java @@ -0,0 +1,147 @@ +package kb.howtokb.clustering; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import kb.howtokb.clustering.basicobj.CSKSimpleCluster; +import kb.howtokb.clustering.basicobj.Instance; +import kb.howtokb.clustering.sim.CategorySimilarity; +import kb.howtokb.taskframe.WikiHowTaskFrame; + +public class HeuristicTopDownClustering + implements ITopDownClustering, Instance> { + + private IStopping> stopper; + private double[][] simMatrix; + private CSKSimpleCluster inputCluster; + public HeuristicTopDownClustering(List pts, boolean isNormalizedCut, double threshold, int k) throws SQLException, Exception { + List> ints = new ArrayList<>(); + for (int i=0; i(i, pts.get(i))); + inputCluster = new CSKSimpleCluster<>(-1, ints); + simMatrix = DataForClustering.getFullSimilarityMatrix(pts, new CategorySimilarity()); + this.stopper = new SimpleSimilarityStopping(threshold, simMatrix, isNormalizedCut); + } + + public CSKSimpleCluster getInputCluster() { + return inputCluster; + } + + @Override + public boolean canSplitFrom(CSKSimpleCluster c1, CSKSimpleCluster c2, + ISimilarity> simFunc, double simThreshold) { + // TODO Auto-generated method stub + return false; + } + + @Override + public List> splitACluster(CSKSimpleCluster c, int k) + throws Exception { + List> res = new ArrayList<>(); + + + List> members = new ArrayList<>(c.getClusterMembers()); +// c.getClusterMembers(); + Instance farthestPt = getFarthestPt(members); + + CSKSimpleCluster initCluster = new CSKSimpleCluster<>(-1, farthestPt); + members.remove(farthestPt); + CSKSimpleCluster leftCluster = new CSKSimpleCluster<>(-1, members); + + assignCluster(initCluster, leftCluster); + + List> children = new ArrayList<>(); + children.add(initCluster); children.add(leftCluster); + if (stopper.split(c, children)){ + for (int i=0; i 1) + res.addAll(splitACluster(children.get(i), k)); + else res.add(children.get(i)); + } + }else{ +// System.out.println(c.getClusterMembers().size()); + res.add(c); + } + return res; + } + + public Instance getFarthestPt(List> members){ + Instance farthestPt = new Instance<>(); + double min = Double.MAX_VALUE; + for (int i=0; i sum){ + min = sum; + farthestPt = members.get(i); + } + } + return farthestPt; + } + + public void assignCluster(CSKSimpleCluster initCluster, CSKSimpleCluster leftCluster){ + List> members = leftCluster.getClusterMembers(); + for (int i=0; i simPtToCluster(members.get(i), leftCluster)){ + initCluster.addClusterMember(members.get(i)); + leftCluster.removeMember(members.get(i)); + i--; + } + } + } + + public double simPtToCluster(Instance pt, CSKSimpleCluster cluster){ + List> members = cluster.getClusterMembers(); + double sum = 0.0; + for (int i=0; i + */ + public static class SimpleSimilarityStopping implements + IStopping> { + + private double threshold; + private double[][] simMatrix; + private boolean isNormalizedCut; + public SimpleSimilarityStopping(double thres, double [][] simMatrix, boolean isNormalizedCut) { + this.threshold = thres; + this.simMatrix = simMatrix; + this.isNormalizedCut = isNormalizedCut; + } + + + @Override + public boolean split(CSKSimpleCluster parent, List> children) { + if (parent.getClusterMembers().size() <= 1) return false; + if (isNormalizedCut) return split(children.get(0), children.get(1)); + return SimpleClusterSimilarity.averageIntraClusterSimilarity(parent, simMatrix) < this.threshold; + } + + //Similar to minimizing min cut + public boolean split(CSKSimpleCluster c1, CSKSimpleCluster c2) { + + double volC1 = SimpleClusterSimilarity.volOfCluster(c1, simMatrix); + double volC2 = SimpleClusterSimilarity.volOfCluster(c2, simMatrix); + double interC = SimpleClusterSimilarity.volOfInterClusters(c1, c2, simMatrix); + if (volC1 == 1 && volC2 == 1) return false; //Don't split into two singletons + if (volC1 == 1) return interC/volC2 < this.threshold; + if (volC2 == 1) return interC/volC1 < this.threshold; + System.out.println(volC1 + " " + volC2 + " " + interC); + return (interC/volC1 + interC/volC2) < this.threshold; + } + + } + +} diff --git a/src/main/java/kb/howtokb/clustering/HeuristicTopDownClusteringDynamicSparse.java b/src/main/java/kb/howtokb/clustering/HeuristicTopDownClusteringDynamicSparse.java new file mode 100644 index 0000000..fef5f97 --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/HeuristicTopDownClusteringDynamicSparse.java @@ -0,0 +1,154 @@ +package kb.howtokb.clustering; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import kb.howtokb.clustering.basicobj.CSKSimpleCluster; +import kb.howtokb.clustering.basicobj.Instance; +import kb.howtokb.clustering.sim.CategorySimilarity; +import kb.howtokb.taskframe.WikiHowTaskFrame; +import kb.howtokb.utils.AdjacencyBackedSparseMatrix; + +public class HeuristicTopDownClusteringDynamicSparse + implements ITopDownClustering, Instance> { + + private IStopping> stopper; + private AdjacencyBackedSparseMatrix simMatrix; + private CSKSimpleCluster inputCluster; + public HeuristicTopDownClusteringDynamicSparse(List pts, boolean isNormalizedCut, double threshold, int k, double thresforSparse) throws SQLException, Exception { + List> ints = new ArrayList<>(); + for (int i=0; i(i, pts.get(i))); + inputCluster = new CSKSimpleCluster<>(-1, ints); + simMatrix = DataForClustering.getAdjacencyBackedSparseSimilarityMatrix(pts, new CategorySimilarity(), thresforSparse); + System.out.println("================================================"); + this.stopper = new SimpleSimilarityStopping(threshold, simMatrix, isNormalizedCut); + } + + public CSKSimpleCluster getInputCluster() { + return inputCluster; + } + + @Override + public boolean canSplitFrom(CSKSimpleCluster c1, CSKSimpleCluster c2, + ISimilarity> simFunc, double simThreshold) { + // TODO Auto-generated method stub + return false; + } + + @Override + public List> splitACluster(CSKSimpleCluster c, int k) + throws Exception { + List> res = new ArrayList<>(); + + + List> members = new ArrayList<>(c.getClusterMembers()); +// c.getClusterMembers(); + Instance farthestPt = getFarthestPt(members); + + CSKSimpleCluster initCluster = new CSKSimpleCluster<>(-1, farthestPt); + members.remove(farthestPt); + CSKSimpleCluster leftCluster = new CSKSimpleCluster<>(-1, members); + + assignCluster(initCluster, leftCluster); + //System.out.println(initCluster.getClusterMembers().size() + " " + leftCluster.getClusterMembers().size()); + + List> children = new ArrayList<>(); + children.add(initCluster); children.add(leftCluster); + if (stopper.split(c, children)){ + for (int i=0; i 1) + res.addAll(splitACluster(children.get(i), k)); + else res.add(children.get(i)); + } + }else{ +// System.out.println(c.getClusterMembers().size()); + res.add(c); + } + return res; + } + + public Instance getFarthestPt(List> members){ + System.out.println("Find the farthest Pt...."); + Instance farthestPt = new Instance<>(); + double min = Double.MAX_VALUE; + for (int i=0; i sum){ + min = sum; + farthestPt = members.get(i); + } + } + System.out.println("Finishing finding the farthest pt..."); + return farthestPt; + } + + public void assignCluster(CSKSimpleCluster initCluster, CSKSimpleCluster leftCluster){ + System.out.println("Assign cluster....."); + List> members = leftCluster.getClusterMembers(); + for (int i=0; i simPtToCluster(members.get(i), leftCluster)){ + initCluster.addClusterMember(members.get(i)); + leftCluster.removeMember(members.get(i)); + i--; + } + } + System.out.println("Done assign....."); + } + + public double simPtToCluster(Instance pt, CSKSimpleCluster cluster){ + List> members = cluster.getClusterMembers(); + double sum = 0.0; + for (int i=0; i + */ + public static class SimpleSimilarityStopping implements + IStopping> { + + private double threshold; + private AdjacencyBackedSparseMatrix simMatrix; + private boolean isNormalizedCut; + public SimpleSimilarityStopping(double thres, AdjacencyBackedSparseMatrix simMatrix, boolean isNormalizedCut) { + this.threshold = thres; + this.simMatrix = simMatrix; + this.isNormalizedCut = isNormalizedCut; + } + + + @Override + public boolean split(CSKSimpleCluster parent, List> children) { + if (parent.getClusterMembers().size() <= 1) return false; + if (isNormalizedCut) return split(children.get(0), children.get(1)); + return SimpleClusterSimilarity.averageIntraClusterSimilarity(parent, simMatrix) < this.threshold; + } + + //Similar to minimizing min cut + public boolean split(CSKSimpleCluster c1, CSKSimpleCluster c2) { + + double volC1 = SimpleClusterSimilarity.volOfCluster(c1, simMatrix); + double volC2 = SimpleClusterSimilarity.volOfCluster(c2, simMatrix); + double interC = SimpleClusterSimilarity.volOfInterClusters(c1, c2, simMatrix); + if (volC1 == 1 && volC2 == 1) return false; //Don't split into two singletons + if (volC1 == 1) return interC/volC2 < this.threshold; + if (volC2 == 1) return interC/volC1 < this.threshold; + System.out.println(volC1 + " " + volC2 + " " + interC); + return (interC/volC1 + interC/volC2) < this.threshold; + } + + } + +} diff --git a/src/main/java/kb/howtokb/clustering/IBottomUpClustering.java b/src/main/java/kb/howtokb/clustering/IBottomUpClustering.java new file mode 100644 index 0000000..514581f --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/IBottomUpClustering.java @@ -0,0 +1,8 @@ +package kb.howtokb.clustering; + + +public interface IBottomUpClustering { + + public boolean canMergeWith(ClusterType c1, ClusterType c2, + ISimilarity simFunc, double simThreshold) throws Exception; +} diff --git a/src/main/java/kb/howtokb/clustering/ISimilarity.java b/src/main/java/kb/howtokb/clustering/ISimilarity.java new file mode 100644 index 0000000..a720a47 --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/ISimilarity.java @@ -0,0 +1,17 @@ +package kb.howtokb.clustering; + +import java.util.Map; + +/** Similarity between either pair of words (tiger, dog); +* or pair of senses (e.g. tiger#n#2, cat#n#1) +* +* @author ntandon +*/ +public interface ISimilarity { + + public double sim(T e1, T e2); + + public Map getNeighbors(T e); + + public boolean simThreshold(T e1, T e2, double minthreshold) throws Exception; +} diff --git a/src/main/java/kb/howtokb/clustering/ITopDownClustering.java b/src/main/java/kb/howtokb/clustering/ITopDownClustering.java new file mode 100644 index 0000000..08d7bf6 --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/ITopDownClustering.java @@ -0,0 +1,28 @@ +package kb.howtokb.clustering; + +import java.util.List; + +public interface ITopDownClustering { + + /** + * Can we split a cluster into two. + * @param c + * @return + */ + public boolean canSplitFrom(ClusterType c1, ClusterType c2, + ISimilarity simFunc, double simThreshold); + + /** + * Supports k-way splits. This can be achieved via graph cut algorithms, + * or the simplest method being k-means. Question is how to compute the + * median in k-means over activity frames. + * @param c + * @return + */ + abstract public List splitACluster(ClusterType c, int k) throws Exception; + + public static interface IStopping { + + public boolean split(ClusterType parent, List children); + } +} diff --git a/src/main/java/kb/howtokb/clustering/SimpleClusterSimilarity.java b/src/main/java/kb/howtokb/clustering/SimpleClusterSimilarity.java new file mode 100644 index 0000000..d774ba2 --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/SimpleClusterSimilarity.java @@ -0,0 +1,171 @@ +package kb.howtokb.clustering; + +import java.util.List; + +import kb.howtokb.clustering.basicobj.CSKSimpleCluster; +import kb.howtokb.clustering.basicobj.Instance; +import kb.howtokb.taskframe.WikiHowTaskFrame; +import kb.howtokb.utils.AdjacencyBackedSparseMatrix; +import kb.howtokb.utils.SparseSimMatrix; + +public class SimpleClusterSimilarity { + + /** + * Vol of cluster with input is a 2-D array + * @param c + * @param simMatrix + * @return + */ + public static double volOfCluster(CSKSimpleCluster c, double[][] simMatrix){ + List> members = c.getClusterMembers(); + double sum = 0.0; + if (members.size() == 1) return 1.0; + for (int i=0; i c, SparseSimMatrix simMatrix){ + List> members = c.getClusterMembers(); + double sum = 0.0; + if (members.size() == 1) return 1.0; + for (int i=0; i c, AdjacencyBackedSparseMatrix simMatrix){ + List> members = c.getClusterMembers(); + double sum = 0.0; + if (members.size() == 1) return 1.0; + for (int i=0; i c, double[][] simMatrix){ + int n = c.getClusterMembers().size(); + int total = n*(n-1)/2; + System.out.println(volOfCluster(c, simMatrix)/total); + return volOfCluster(c, simMatrix)/total; + } + /** + * SparseMatrix + * @param c + * @param simMatrix + * @return + */ + public static double averageIntraClusterSimilarity(CSKSimpleCluster c, SparseSimMatrix simMatrix){ + int n = c.getClusterMembers().size(); + int total = n*(n-1)/2; + double vol = volOfCluster(c, simMatrix)/total; + System.out.println(vol); + return vol; + } + + /** + * DynamicSparseMatrix + * @param c + * @param simMatrix + * @return + */ + public static double averageIntraClusterSimilarity(CSKSimpleCluster c, AdjacencyBackedSparseMatrix simMatrix){ + int n = c.getClusterMembers().size(); + int total = n*(n-1)/2; + double vol = volOfCluster(c, simMatrix)/total; + System.out.println(vol); + return vol; + } + + /** + * 2-d double array + * @param c1 + * @param c2 + * @param simMatrix + * @return + */ + public static double volOfInterClusters(CSKSimpleCluster c1, + CSKSimpleCluster c2, double[][] simMatrix){ + List> members1 = c1.getClusterMembers(); + List> members2 = c2.getClusterMembers(); + double sum = 0.0; + for (int i=0; i c1, + CSKSimpleCluster c2, SparseSimMatrix simMatrix){ + List> members1 = c1.getClusterMembers(); + List> members2 = c2.getClusterMembers(); + double sum = 0.0; + for (int i=0; i c1, + CSKSimpleCluster c2, AdjacencyBackedSparseMatrix simMatrix){ + List> members1 = c1.getClusterMembers(); + List> members2 = c2.getClusterMembers(); + double sum = 0.0; + for (int i=0; i c1, + CSKSimpleCluster c2, double[][] simMatrix){ + int total = c1.getClusterMembers().size() * c2.getClusterMembers().size(); + return volOfInterClusters(c1, c2, simMatrix)/total; + } +} diff --git a/src/main/java/kb/howtokb/clustering/SimplePruningSimilarity.java b/src/main/java/kb/howtokb/clustering/SimplePruningSimilarity.java new file mode 100644 index 0000000..0fe7f74 --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/SimplePruningSimilarity.java @@ -0,0 +1,141 @@ +package kb.howtokb.clustering; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.sql.SQLException; +import java.util.Map; +import java.util.Set; + +import edu.stanford.nlp.util.Pair; +import kb.howtokb.clustering.basicobj.ActivityWordsCategory; +import kb.howtokb.clustering.sim.CategorySimilarity; +import kb.howtokb.clustering.sim.Coefficient; +import kb.howtokb.clustering.sim.w2v.Word2VecSimilarity; +import kb.howtokb.utils.BijectiveMap; +import kb.howtokb.utils.FileLines; +import kb.howtokb.utils.IDMap; + +public class SimplePruningSimilarity implements ISimilarity{ + + private static CategorySimilarity cate; + private double threshold; + private String model; + private String allAct; + private Set allActList; + private ActivityCachedSim aSim; + public SimplePruningSimilarity(double threshold, String model, String allAct) throws SQLException, IOException, ClassNotFoundException { + cate = new CategorySimilarity(); + + this.threshold = threshold; + this.model = model; + this.allAct = allAct; + ISimilarity word2vecSim = new Word2VecSimilarity(this.model, 0, false); + IDMap vIDs = new IDMap<>(0); + IDMap nIDs = new IDMap<>(0); + BijectiveMap> aIDs = new BijectiveMap<>(); + loadIDs(this.allAct, vIDs, nIDs, aIDs); + + //Using separate threshold for verb and noun v: 0.747, n: 0.67 + //Or can use same threshold, the bottom neck: vvnn: 0.5 + ActivityComponentSim vSim = new ActivityComponentSim(Coefficient.V_THRES, vIDs, word2vecSim); + ActivityComponentSim nSim = new ActivityComponentSim(Coefficient.O_THRES, nIDs, word2vecSim); + this.aSim = new ActivityCachedSim(aIDs, vSim, nSim); + } + + public SimplePruningSimilarity(double threshold, String model, Set allAct) throws SQLException, IOException, ClassNotFoundException { + cate = new CategorySimilarity(); + + this.threshold = threshold; + this.model = model; + this.allActList = allAct; + ISimilarity word2vecSim = new Word2VecSimilarity(this.model, 0, false); + IDMap vIDs = new IDMap<>(0); + IDMap nIDs = new IDMap<>(0); + BijectiveMap> aIDs = new BijectiveMap<>(); + loadIDs(this.allActList, vIDs, nIDs, aIDs); + + //Using separate threshold for verb and noun v: 0.747, n: 0.67 + //Or can use same threshold, the bottom neck: vvnn: 0.5 + ActivityComponentSim vSim = new ActivityComponentSim(Coefficient.V_THRES, vIDs, word2vecSim); + ActivityComponentSim nSim = new ActivityComponentSim(Coefficient.O_THRES, nIDs, word2vecSim); + this.aSim = new ActivityCachedSim(aIDs, vSim, nSim); + } + + @Override + public double sim(ActivityWordsCategory e1, ActivityWordsCategory e2) { + // TODO we don't have function to compute in this case + return 0; + } + + @Override + public Map getNeighbors(ActivityWordsCategory e) { + // TODO We don't need this function right now + return null; + } + /** + * Check similar between two activities in a simple way + * if similarity between two category is less than a threshold + * and similarity between two strong activities is less than a threshold + * then they are dissimilar, otw not sure and return true + * @param two ActivityWordsCategory objects + * @return true/false + */ + @Override + public boolean simThreshold(ActivityWordsCategory e1, ActivityWordsCategory e2, double minthreshold) throws Exception { + if (!cate.isSim(e1.getCatID(), e2.getCatID())) + if (!aSim.sim(e1.getActivityStrong(), e2.getActivityStrong())) + return false; + return true; + + } + /** + * loadID from a file including a list of activities + * @param activityList + * @param vIDs + * @param nIDs + * @param aIDs + * @throws FileNotFoundException + */ + private static void loadIDs(String activityList, IDMap vIDs, IDMap nIDs, + BijectiveMap> aIDs) throws FileNotFoundException { + for (String a : new FileLines(activityList)) { + // return,from,work + String[] vn = a.split(";"); + String verb = "v_" + (vn[0].contains(" ")?vn[0].split(" ")[0]:vn[0]); + String noun = "n_" + (vn[1].contains(" ")?vn[1].split(" ")[vn[1].split(" ").length - 1]:vn[1]); + int vid = vIDs.getAvailableGlobalID(); + vIDs.add(verb); + int nid = nIDs.getAvailableGlobalID(); + nIDs.add(noun); + aIDs.put(a, new Pair(vid, nid)); + } + System.out.println("Load map verb to id done! Size: " + vIDs.size()); + System.out.println("Load map noun to id done! Size: " + nIDs.size()); + } + + /** + * loadID from list of activities + * @param activityList + * @param vIDs + * @param nIDs + * @param aIDs + * @throws FileNotFoundException + */ + private static void loadIDs(Set activityList, IDMap vIDs, IDMap nIDs, + BijectiveMap> aIDs) throws FileNotFoundException { + for (String a : activityList) { + // return,from,work + String[] vn = a.split(";"); + String verb = "v_" + (vn[0].contains(" ")?vn[0].split(" ")[0]:vn[0]); + String noun = "n_" + (vn[1].contains(" ")?vn[1].split(" ")[vn[1].split(" ").length - 1]:vn[1]); + int vid = vIDs.getAvailableGlobalID(); + vIDs.add(verb); + int nid = nIDs.getAvailableGlobalID(); + nIDs.add(noun); + aIDs.put(a, new Pair(vid, nid)); + } + System.out.println("Load map verb to id done! Size: " + vIDs.size()); + System.out.println("Load map noun to id done! Size: " + nIDs.size()); + } + +} diff --git a/src/main/java/kb/howtokb/clustering/basicobj/ActivityWordsCategory.java b/src/main/java/kb/howtokb/clustering/basicobj/ActivityWordsCategory.java new file mode 100644 index 0000000..c2d75e0 --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/basicobj/ActivityWordsCategory.java @@ -0,0 +1,58 @@ +package kb.howtokb.clustering.basicobj; + +public class ActivityWordsCategory { + + private int id; + private int catID; + private String activityStrong; + + public ActivityWordsCategory(int id, int catID, String activityStrong) { + super(); + this.id = id; + this.catID = catID; + this.activityStrong = activityStrong; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((activityStrong == null) ? 0 : activityStrong.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ActivityWordsCategory other = (ActivityWordsCategory) obj; + if (activityStrong == null) { + if (other.activityStrong != null) + return false; + } else if (!activityStrong.equals(other.activityStrong)) + return false; + return true; + } + + public int getId() { + return id; + } + + public int getCatID() { + return catID; + } + + public String getActivityStrong() { + return activityStrong; + } + + @Override + public String toString() { + return "ActivityWordsCategory [id=" + id + ", activityStrong=" + activityStrong + "]"; + } + +} diff --git a/src/main/java/kb/howtokb/clustering/basicobj/BasicDataPt.java b/src/main/java/kb/howtokb/clustering/basicobj/BasicDataPt.java new file mode 100644 index 0000000..003d8ed --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/basicobj/BasicDataPt.java @@ -0,0 +1,6 @@ +package kb.howtokb.clustering.basicobj; + + +public interface BasicDataPt { + public int getID(); +} diff --git a/src/main/java/kb/howtokb/clustering/basicobj/CSKCluster.java b/src/main/java/kb/howtokb/clustering/basicobj/CSKCluster.java new file mode 100644 index 0000000..71c3f40 --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/basicobj/CSKCluster.java @@ -0,0 +1,85 @@ +package kb.howtokb.clustering.basicobj; + +import java.util.ArrayList; +import java.util.List; + +public class CSKCluster { + + protected TClusterID clusterKey; + + public CSKCluster(TClusterID clusterKey) { + this.clusterKey = clusterKey; + this.clusterMembers = new ArrayList<>(); + } + + public CSKCluster(TClusterID id, List members){ + this.clusterKey = id; + this.clusterMembers = members; + } + + public TClusterID getClusterKey() { + return clusterKey; + } + + protected List clusterMembers; + + public List getClusterMembers() { + return clusterMembers; + } + + public void setClusterMembers(List clusterMembers) { + this.clusterMembers = clusterMembers; + } + + public CSKCluster addClusterMember( + TClusterMember clusterMember) { + clusterMembers.add(clusterMember); + return this; + } + + public CSKCluster addClusterMemberSet( + List clusterMember) { + clusterMembers.addAll(clusterMember); + return this; + } + + public CSKCluster removeMember(TClusterMember pt){ + clusterMembers.remove(pt); + return this; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = + prime * result + ((clusterKey == null) ? 0 : clusterKey.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + CSKCluster other = (CSKCluster) obj; + if (clusterKey == null) { + if (other.clusterKey != null) + return false; + } else if (!clusterKey.equals(other.clusterKey)) + return false; + return true; + } + + @Override + public String toString() { + return "CSKCluster [clusterKey=" + clusterKey + "]"; + } + + public void clear(){ + this.clusterMembers = new ArrayList<>(); + } +} diff --git a/src/main/java/kb/howtokb/clustering/basicobj/CSKSimpleCluster.java b/src/main/java/kb/howtokb/clustering/basicobj/CSKSimpleCluster.java new file mode 100644 index 0000000..3596a49 --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/basicobj/CSKSimpleCluster.java @@ -0,0 +1,23 @@ +package kb.howtokb.clustering.basicobj; + +import java.util.ArrayList; +import java.util.List; + +public class CSKSimpleCluster extends CSKCluster>{ + + public CSKSimpleCluster(Integer clusterKey) { + super(clusterKey); + // TODO Auto-generated constructor stub + } + + public CSKSimpleCluster(Integer key, Instance pt){ + super(key); + this.clusterMembers = new ArrayList<>(); + this.clusterMembers.add(pt); + } + + public CSKSimpleCluster(Integer key, List> members){ + super(key, members); + } + +} diff --git a/src/main/java/kb/howtokb/clustering/basicobj/Instance.java b/src/main/java/kb/howtokb/clustering/basicobj/Instance.java new file mode 100644 index 0000000..c613294 --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/basicobj/Instance.java @@ -0,0 +1,40 @@ +package kb.howtokb.clustering.basicobj; + +public class Instance implements BasicDataPt{ + + private int id; + private T frame; + + public Instance(int id, T frame) { + this.id = id; + this.frame = frame; + } + + public Instance(Instance tmp) { + this.id = tmp.getID(); + this.frame = tmp.getData(); + } + + public Instance() { + this.id = -1; + this.frame = null; + } + + public void setId(int id) { + this.id = id; + } + + public void setFrame(T frame) { + this.frame = frame; + } + + @Override + public int getID() { + return id; + } + + public T getData(){ + return frame; + } + +} diff --git a/src/main/java/kb/howtokb/clustering/sim/ActivityWordCategorySim.java b/src/main/java/kb/howtokb/clustering/sim/ActivityWordCategorySim.java new file mode 100644 index 0000000..4ae629c --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/sim/ActivityWordCategorySim.java @@ -0,0 +1,83 @@ +package kb.howtokb.clustering.sim; + +import gnu.trove.TLongHashSet; + +public class ActivityWordCategorySim { + + /* + public static void main(String[] args) throws Exception { + SparseSims distSparse = new SparseSims(0.5f); + // need: ids of activity frames and ActivityWordsCategory + //Test load all activity frame + ActivityWordsCategory[] arr = new ActivityWordsCategory[1292250]; + + String inputfile = "/var/tmp/cxchu/data-wordnet/act-frame.json"; + JSONParser parser = new JSONParser(); + + try (BufferedReader br = new BufferedReader(new FileReader(inputfile))) { + + String sCurrentLine; + int i=0; + + while ((sCurrentLine = br.readLine()) != null) { + + Object obj = parser.parse(sCurrentLine); + JSONObject jsonObject = (JSONObject) obj; + ActivityFrame newframe = JsonToActivityFrame.jsonToActivityFrame(jsonObject); + ActivityWordsCategory tmp = new ActivityWordsCategory(newframe.getID(), + Integer.parseInt(newframe.getActivity().getCategoryID()), newframe.getActivity().getVerb() + ";" + newframe.getActivity().getObject()); + System.out.println(i); + arr[i++] = tmp; + } + } + + for (int i = 0; i < arr.length; i++){ + ActivityWordsCategory e1 = arr[i]; + // Only store the upper triangular matrix. + for (int j = i + 1; j < arr.length; j++) + distSparse.set(i, j, (float) Word2VecRunner.simPair(e1.getActivityStrong(), arr[j].getActivityStrong())); + } + System.out.println("Done!"); + + + } + */ + + /** + * Only stores the upper triangular matrix. + * + * @author cxchu + * + */ + public static class SparseSims { + + private TLongHashSet simPairs; + private float threshold; + + public SparseSims(float threshold) { + simPairs = new TLongHashSet(); + this.threshold = threshold; + } + + public void set(int x, int y, float value) { + if (value < threshold) + return; + long key = intpairToLong(x, y); + simPairs.add(key); + } + + public boolean get(int x, int y) { + long key = intpairToLong(x, y); + if (simPairs.contains(key)) + return true; + + return simPairs.contains(intpairToLong(y, x)); + } + + private long intpairToLong(int l, int r) { + return ((long) l << 32) + r; + } + + } + +} diff --git a/src/main/java/kb/howtokb/clustering/sim/CategorySimilarity.java b/src/main/java/kb/howtokb/clustering/sim/CategorySimilarity.java new file mode 100644 index 0000000..d54d78e --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/sim/CategorySimilarity.java @@ -0,0 +1,174 @@ +package kb.howtokb.clustering.sim; + +import java.io.IOException; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import edu.stanford.nlp.util.Pair; +import kb.howtokb.utils.AutoMap; +import kb.howtokb.utils.SQLiteJDBCConnector; +import kb.howtokb.wkhobject.Category_Json; + +public class CategorySimilarity { + + /** + * Compute similarity between two categories using + * sim (c1, c2) = (2*height(lca(c1,c2)) + 1)/(height(c1) + height(c2) + 1) + * with additive smoothing + * + */ + private static Map> parentChains; + private static Map, Double> preCate; + private static List allCate; + private static double threshold = Coefficient.CATE_THRES; + + public CategorySimilarity() throws SQLException, ClassNotFoundException, IOException{ + loadParentChains(); + loadAllCate(); + preComputedCate(); + } + + //Compute similarity between two categories + public double simWUP(int c1, int c2) { + int c0 = firstCommAncestor(c1, c2); + double pc0 = path2root(c0).size() -1; + double pc1 = path2root(c1).size() -1; + double pc2 = path2root(c2).size() -1; + //System.out.println(pc0 + ", " + pc1 + ", " + pc2); + return (2.0 * pc0 + 1) / (pc1 + pc2 + 1); + } + + //Compute similarity between two categories + public double sim(int c1, int c2) { + try{ + Pair pair = new Pair(c1, c2); + Pair ipair = new Pair(c2, c1); + if (preCate.containsKey(pair)) + return preCate.get(pair); + + return preCate.get(ipair); + + }catch(Exception e){ + return simWUP(c1,c2); + } + } + + /** + * Check if similarity between two categories is greater than a threshold + * @return + */ + public boolean isSim(int c1, int c2){ + Pair pair = new Pair(c1, c2); + if (preCate.containsKey(pair)) + return true; + + return preCate.containsKey(new Pair(c2,c1)); + } + + public Map, Double> getPreCate() { + return preCate; + } + + private void loadParentChains() throws SQLException, ClassNotFoundException, IOException { + parentChains = new AutoMap<>(); + // "rootpath":[57,54,52,150,1] + ResultSet rs = SQLiteJDBCConnector.q("select id, json from categoryjson"); + while (rs.next()) { + try { + parentChains.put(rs.getInt(1), Category_Json.fromJson(rs.getString(2)).getRootpath()); + } catch (Exception e) { + System.out.print("\n---- JSONException in category: " + rs.getInt(1)); + } + } + } + + private void loadAllCate(){ + allCate = new ArrayList<>(); + for (Entry> e: parentChains.entrySet()){ + allCate.add(e.getKey()); + } + } + + private void preComputedCate(){ + System.out.println("Pre-Computing similarity between two categories....."); + preCate = new HashMap<>(); + for (int i=0; i= threshold){ + preCate.put(new Pair(c1, c2), sim); + } + } + } + + System.out.println("Done! Number of pair: " + preCate.size()); + } + + //Get lowest common ancestor + private int firstCommAncestor(int c1, int c2) { + List r1 = path2root(c1); + List r2 = path2root(c2); + + // first common ancestor + for (int i : r1) + if (r2.contains(i)) + return i; + + return 1; // the root. + } + + @SuppressWarnings("unchecked") + private List path2root(int c1) { + return parentChains.containsKey(c1) ? parentChains.get(c1) : Collections.EMPTY_LIST; + } + + + /*private static void testSimCat(CategorySimilarity s) { + String input = ""; + try { + while (!input.equals("q")) { + input = Util.readStringFromUser("\nc1,c2:"); + String[] pair = input.replace(" ", "").split(","); + + if (pair == null || pair.length < 2) { + if (!input.equals("q")) + System.out.println("-- wrong input -- e.g. 12,28"); + continue; + } + + System.out.println(Util.format(s.sim(Integer.parseInt(pair[0]), Integer.parseInt(pair[1])))); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DBConnector.closeConnections(); + } + }*/ + + /*public static void main(String[] args) throws Exception { + CategorySimilarity cs = new CategorySimilarity(); + //testSimCat(cs); + + + Writer cateout = new BufferedWriter(new OutputStreamWriter( + new FileOutputStream("/var/tmp/cxchu/clustering-pre-computation/preCate.txt"), "utf-8")); + + //Write preCate to file + Map, Double> preCate = cs.getPreCate(); + for (Entry, Double> e: preCate.entrySet()){ + cateout.write(e.getKey().first + ";" + e.getKey().second + + "\t" + Util.format(e.getValue()) + "\n"); + } + cateout.close(); + }*/ + + +} \ No newline at end of file diff --git a/src/main/java/kb/howtokb/clustering/sim/Coefficient.java b/src/main/java/kb/howtokb/clustering/sim/Coefficient.java new file mode 100644 index 0000000..4db709c --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/sim/Coefficient.java @@ -0,0 +1,53 @@ +package kb.howtokb.clustering.sim; + +public class Coefficient { + + /*=======Coefficient================ + * verb + * object + * category + * location + * time + * part object + * part agent + * weak verb + * weak object + * vvnn + */ + public static double[] ALL_COEF = new double[]{5.4, 0.16, 3.074, -1.45, -2.08, 0.893, + -0.586, 0.796, 2.388, 6.763}; + public static double INTERCEPT = -11.414; + public static double[] COEF_WITHOUT_WEAK = new double[]{5.289, 1.3, 3.173, -1.44, -2.047, 1.386, + -0.52, 7.011}; + public static double INTERCEPT_WITHOUT_WEAK = -10.638; + + //threshold + public static double CATE_THRES = 0.362; + public static double VVNN_TRHES = 0.5; + public static double V_THRES = 0.747; + public static double O_THRES = 0.67; + + + //Coefficient with parent, prev/next/ sub-act + /*=======Full Coefficient================ + * verb + * object + * category + * location + * time + * part object + * part agent + * weak verb + * weak object + * vvnn + * parent + * prev + * next + * sub-act + */ + + public static double[] FULL_COEF = new double[]{5.2, 0.41, 3.006, -2.12, -2.69, 1.45, + -0.328, 0.426, 2.452, 6.983, -0.706, -0.963, 0.378, -0.564}; + public static double INTERCEPT_FULL = -11.455; + +} diff --git a/src/main/java/kb/howtokb/clustering/sim/SimilarityComputation.java b/src/main/java/kb/howtokb/clustering/sim/SimilarityComputation.java new file mode 100644 index 0000000..6ebb455 --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/sim/SimilarityComputation.java @@ -0,0 +1,312 @@ +package kb.howtokb.clustering.sim; + +import java.io.IOException; +import java.sql.SQLException; +import java.util.List; + +import kb.howtokb.taskframe.WikiHowTaskFrame; +import kb.howtokb.tools.InformationExtraction; +import kb.howtokb.tools.NormalizationText; +import kb.howtokb.tools.StructureConverter; + +public class SimilarityComputation { + + //Similarity between two category + public static double simCategory(CategorySimilarity cs, int c1, int c2){ + //There are a few activity frame having new category, the cateID = -1 + //We transfer to GENERAL_CATEGORY + c1 = c1<1?1:c1; c2 = c2<1?1:c2; + return Double.parseDouble(NormalizationText.format(cs.sim(c1, c2))); + } + //similarity between two words: verb + public static double simVerb(String word1, String word2) throws NumberFormatException, IOException, SQLException{ + return Double.parseDouble(NormalizationText.format(StringSimilarity.simOfVerb(word1, word2))); + } + + //similarity between two words: object + public static double simNoun(String word1, String word2) throws NumberFormatException, IOException, SQLException{ + return Double.parseDouble(NormalizationText.format(StringSimilarity.simOfNoun(word1, word2))); + } + + //similarity between two activities using word2vec + public static double simActW2V(String word1, String word2) throws Exception{ + return Double.parseDouble(NormalizationText.format(StringSimilarity.simOfPairW2V(word1, word2))); + } + + //similarity between two list of word (don't have to pre-process data): agents + //jaccard + public static double simList(List l1, List l2) throws NumberFormatException, IOException, SQLException{ + return Double.parseDouble(NormalizationText.format(StringSimilarity.simOfListWord(l1, l2))); + } + + //similarity between two list of words: location, time, objects (have to pre-process data: pick head word) + //jaccard + public static double simLocationTimeAndObject(List l1, List l2) throws SQLException, IOException{ + l1 = NormalizationText.normList(l1); + l2 = NormalizationText.normList(l2); + return Double.parseDouble(NormalizationText.format(simList(l1, l2))); + } + + //similarity between two list of activity surface + //jaccard + public static double simActSurfaceList(List l1, List l2) throws Exception{ + return Double.parseDouble(NormalizationText.format(StringSimilarity.simOfListActivity(l1, l2))); + } + + //similarity between two phrases: ori_object, ori-verb + //Until now, using jaccard + public static double simPhrase(String s1, String s2) throws NumberFormatException, SQLException, IOException{ + return Double.parseDouble(NormalizationText.format(Double.parseDouble(NormalizationText.format(StringSimilarity.simOfPhrase(s1, s2))))); + } + + //========================Old part, with jaccard have threshold and lookup db + + /*//similarity between two list of word (don't have to pre-process data): agents + //jaccard + public static double simList(List l1, List l2, double threshold) throws NumberFormatException, IOException, SQLException{ + return Double.parseDouble(Util.format(StringSimilarity.simOfListNoun(l1, l2, threshold))); + } + + //similarity between two list of words: location, time, objects (have to pre-process data: pick head word) + //jaccard + public static double simLocationTimeAndObject(List l1, List l2, double threshold) throws SQLException, IOException{ + l1 = NormalizationText.normList(l1); + l2 = NormalizationText.normList(l2); + return Double.parseDouble(Util.format(simList(l1, l2, threshold))); + } + + //similarity between two phrases: ori_object + //Until now, using jaccard + public static double simNounPhrase(String s1, String s2, double threshold) throws NumberFormatException, SQLException, IOException{ + return Double.parseDouble(Util.format(Double.parseDouble(Util.format(StringSimilarity.simOfNounPhrase(s1, s2, threshold))))); + } + + //similarity between two phrases: ori_verb + //Until now, using jaccard + public static double simVerbPhrase(String s1, String s2, double threshold) throws NumberFormatException, SQLException, IOException{ + return Double.parseDouble(Util.format(Double.parseDouble(Util.format(StringSimilarity.simOfVerbPhrase(s1, s2, threshold))))); + }*/ + //=========================================================== + + //similarity vector between two activities + public static double[] getSimilarVector(CategorySimilarity cs, WikiHowTaskFrame f1, WikiHowTaskFrame f2) throws Exception{ + double[] res = new double[10]; + + String v1 = f1.getActivity().getVerb(); + + String v2 = f2.getActivity().getVerb(); + + double v2v = simVerb(v1, v2); + res[0] = v2v; + + String n1 = f1.getActivity().getObject(); + + String n2 = f2.getActivity().getObject(); + + double o2o = simNoun(n1, n2); + res[1] = o2o; + + double c2c = simCategory(cs,Integer.parseInt(f1.getActivity().getCategoryID()), + Integer.parseInt(f2.getActivity().getCategoryID())); + res[2] = c2c; + + double l2l = simLocationTimeAndObject(f1.getLocations(), f2.getLocations()); + res[3] = l2l; + + double t2t = simLocationTimeAndObject(f1.getTemporal(), f2.getTemporal()); + res[4] = t2t; + + double parto2parto = simLocationTimeAndObject(f1.getParticipatingObject(), f2.getParticipatingObject()); + res[5] = parto2parto; + + double parta2parta = simList(f1.getParticipatingAgent(), f2.getParticipatingAgent()); + res[6] = parta2parta; + + double ov2ov = simPhrase(f1.getActivity().getOriVerb(), f2.getActivity().getOriObject()); + res[7] = ov2ov; + + double oo2oo = simPhrase(f1.getActivity().getOriObject(), f2.getActivity().getOriObject()); + res[8] = oo2oo; + //v1*v2*n1*n2 + String a1 = f1.getActivity().getVerb() + ";"+ f1.getActivity().getObject(); + String a2 = f2.getActivity().getVerb() + ";" + f2.getActivity().getObject(); + double a1a2 = simActW2V(a1, a2); + res[9] = a1a2; + + return res; + } + + //similarity vector between two activities + //Include context: parent, sub, prev/next + public static double[] getFullSimilarVector(CategorySimilarity cs, WikiHowTaskFrame f1, WikiHowTaskFrame f2) throws Exception{ + double[] res = new double[14]; + + String v1 = f1.getActivity().getVerb(); + + String v2 = f2.getActivity().getVerb(); + + double v2v = simVerb(v1, v2); + res[0] = v2v; + + String n1 = f1.getActivity().getObject(); + + String n2 = f2.getActivity().getObject(); + + double o2o = simNoun(n1, n2); + res[1] = o2o; + + double c2c = simCategory(cs,Integer.parseInt(f1.getActivity().getCategoryID()), + Integer.parseInt(f2.getActivity().getCategoryID())); + res[2] = c2c; + + double l2l = simLocationTimeAndObject(f1.getLocations(), f2.getLocations()); + res[3] = l2l; + + double t2t = simLocationTimeAndObject(f1.getTemporal(), f2.getTemporal()); + res[4] = t2t; + + double parto2parto = simLocationTimeAndObject(f1.getParticipatingObject(), f2.getParticipatingObject()); + res[5] = parto2parto; + + double parta2parta = simList(f1.getParticipatingAgent(), f2.getParticipatingAgent()); + res[6] = parta2parta; + + double ov2ov = simPhrase(f1.getActivity().getOriVerb(), f2.getActivity().getOriObject()); + res[7] = ov2ov; + + double oo2oo = simPhrase(f1.getActivity().getOriObject(), f2.getActivity().getOriObject()); + res[8] = oo2oo; + //v1*v2*n1*n2 + String a1 = f1.getActivity().getVerb() + ";"+ f1.getActivity().getObject(); + String a2 = f2.getActivity().getVerb() + ";" + f2.getActivity().getObject(); + double a1a2 = simActW2V(a1, a2); + res[9] = a1a2; + + //How about parent, prev/next, sub-act + List parent1 = InformationExtraction.getListofActivitySurfaceFromDb(StructureConverter.stringToList(f1.getActivity().getParent())); + List parent2 = InformationExtraction.getListofActivitySurfaceFromDb(StructureConverter.stringToList(f2.getActivity().getParent())); + double parent = simActSurfaceList(parent1, parent2); + res[10] = parent; + + List prev1 = InformationExtraction.getListofActivitySurfaceFromDb(StructureConverter.stringToList(f1.getActivity().getPrev())); + List prev2 = InformationExtraction.getListofActivitySurfaceFromDb(StructureConverter.stringToList(f2.getActivity().getPrev())); + double prev = simActSurfaceList(prev1, prev2); + res[11] = prev; + + List next1 = InformationExtraction.getListofActivitySurfaceFromDb(StructureConverter.stringToList(f1.getActivity().getNext())); + List next2 = InformationExtraction.getListofActivitySurfaceFromDb(StructureConverter.stringToList(f2.getActivity().getNext())); + double next = simActSurfaceList(next1, next2); + res[12] = next; + + List sub1 = InformationExtraction.getListofActivitySurfaceFromDb(f1.getActivity().getSubActivities()); + List sub2 = InformationExtraction.getListofActivitySurfaceFromDb(f2.getActivity().getSubActivities()); + double sub = simActSurfaceList(sub1, sub2); + res[13] = sub; + + return res; + } + + //Get the final similarity value between two activity frames + public static double getSimilarity(CategorySimilarity cs, WikiHowTaskFrame f1, WikiHowTaskFrame f2) throws Exception{ + double [] vector = getSimilarVector(cs, f1, f2); + double res = 0; + for (int i=0; i l1 = new ArrayList<>(); + l1.add("book"); l1.add("dictionary"); l1.add("laptop"); + List l2 = new ArrayList<>(); + l2.add("book"); l2.add("bottle"); l2.add("computer"); l2.add("diary"); + System.out.println("Similarity of two lists of string: " + simList(l1, l2, 0.7)); + + //Test sim of two string + String s1 = "play football with friends"; + String s2 = "paint room with friends"; + System.out.println(simPhrase(s1, s2, 0.7)); + + }*/ + +} diff --git a/src/main/java/kb/howtokb/clustering/sim/StringSimilarity.java b/src/main/java/kb/howtokb/clustering/sim/StringSimilarity.java new file mode 100644 index 0000000..6ffebad --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/sim/StringSimilarity.java @@ -0,0 +1,224 @@ +package kb.howtokb.clustering.sim; + +import java.io.IOException; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import kb.howtokb.clustering.sim.w2v.Word2VecRunner; +import kb.howtokb.tools.NormalizationText; + +public class StringSimilarity { + +// private static ILexicalDatabase db = new NictWordNet(); +// +// //Similarity using wordnet: WUP measure +// public static double simOfWord( String word1, String word2 ) { +// WS4JConfiguration.getInstance().setMFS(true); +// +// double s = new WuPalmer(db).calcRelatednessOfWords(word1, word2); +// if (s >=1) return 1; +// return s; +// } + + //Similarity using database/word2vec + public static double simOfVerb( String w1, String w2 ) throws IOException, SQLException { + + //Lookup db +// if (w1.equals(w2)) return 1.0; +// ResultSet rs = +// DBConnector.q("select sim from sim.v2v where (w1='" + w1 + "' and w2='" + w2 + "') or "+ +// "(w1='"+w2 + "' and w2='"+w1 + "') limit 1"); +// if (rs.next()){ +// double sim = rs.getDouble(1); +// return sim; +// } + + try { + return Word2VecRunner.simVerbs(w1,w2); + }catch(Exception e){ + return 0.0; + } + } + + //Similarity using database/word2vec + public static double simOfNoun( String w1, String w2 ) throws IOException, SQLException { +// //Lookup db +// if (w1.equals(w2)) return 1.0; +// ResultSet rs = +// DBConnector.q("select p_sim from sim.n2n where (w1='" + w1 + "' and w2='" + w2 + "') or "+ +// "(w1='"+w2 + "' and w2='"+w1 + "') limit 1"); +// if (rs.next()){ +// double sim = rs.getDouble(1); +// return sim; +// } +// return 0.0; + try { + return Word2VecRunner.simNouns(w1,w2); + }catch(Exception e){ + return 0.0; + } + + } + + //Similar using word2vec without knowing POS + public static double simOfWord(String w1, String w2){ + try { + return Word2VecRunner.getSim().simWithoutPOS(w1, w2); + }catch(Exception e){ + return 0.0; + } + } + + //Similarity using between two activity surfaces + public static double simOfPairW2V( String w1, String w2 ) throws Exception { + return Word2VecRunner.simPair(w1, w2); + } + + //Similarity of two list: weight jaccard + public static double simOfListWord(List l1, List l2) throws IOException, SQLException{ + + if (l1.size() == 0 || l2.size() == 0) return 0; + else{ + double sim = 0; + double total = 0; + for (int i=0; i l1, List l2) throws Exception{ + + if (l1.size() == 0 || l2.size() == 0) return 0; + else{ + double sim = 0; + double total = 0; + for (int i=0; i l1 = new ArrayList<>(); + List l2 = new ArrayList<>(); + for (int i=0; i l1, List l2, double threshold) throws IOException, SQLException{ + double total = l1.size() + l2.size(); + double inter = 0; + List temp = new ArrayList<>(); + if (l1.size() == 0 && l2.size() == 0) return 0; + else if (l1.size() == 0) return 0/(l2.size()+1); + else if (l2.size() == 0) return 0/(l1.size()+1); + else{ + for (int i=0; i= threshold){ + check = true; + } + } + for (int j=0; j= threshold){ + inter++; + check = true; + temp.add(l2.get(j)); + l2.remove(j); + } + } + if (check == true) inter ++; + } + } + + return inter/total; + }*/ + + /*//Jaccard + //Input: two lists of verb + public static double simOfListVerb(List l1, List l2, double threshold) throws IOException, SQLException{ + double total = l1.size() + l2.size(); + double inter = 0; + List temp = new ArrayList<>(); + if (l1.size() == 0 && l2.size() == 0) return 0; + else if (l1.size() == 0) return 0/(l2.size()+1); + else if (l2.size() == 0) return 0/(l1.size()+1); + else{ + for (int i=0; i= threshold){ + check = true; + } + } + for (int j=0; j= threshold){ + inter++; + check = true; + temp.add(l2.get(j)); + l2.remove(j); + } + } + if (check == true) inter ++; + } + } + + return inter/total; + }*/ + +// //Jaccard +// //Input: two arrays of noun +// public static double simOfListNoun(String[] s1, String[] s2, double threshold) throws IOException, SQLException{ +// List l1 = new ArrayList<>(); +// List l2 = new ArrayList<>(); +// for (int i=0; i, Pair> pairNeighbors; +// private static List> activities; + private static Word2VecSimilarity sim; +// private static final Map, Double> emptyPairMap = +// new HashMap<>(); + + //precomputation +// private static Set> simAct; +// private static Map, Integer> actToID = new HashMap<>(); + + private static Set> simVerbPair; + private static Map verbToID; + private static Set> simNounPair; + private static Map nounToID; + +// private static double threshold = Coefficient.VVNN_TRHES; + // //////////////////////////////////////////////////////// + // TODO: Cuong -- for POSLevelWord2vec code begins here. + // ////////////////////////////////////////////////////// +// private static int topK = 20; +// private static boolean isDesc = true; + public static void prepareData() throws Exception { + + //load all strong activities + //not necessary +// String input = "all-strong-activities.txt"; +// +// loadActivities(input); + + //load word2vec model + sim = + new Word2VecSimilarity( + "articles-word2vec-word-pos.model.txt", + 25, false); +// System.out.println("\n\n========================================== [" +// + activities.size() + " activities for neighborhood]\n"); + + //preComputeVerbs(); + //preComputeNouns(); + //preComputeActivity(sim); + +// pairNeighbors = +// new SortedMultiMap, Pair>(topK, +// isDesc); + + } + +// public static Set> getSimilarAct(String input) throws Exception{ +// if (sim == null) +// prepareData(); +// Pair a1 = activityToPair(input); +// Set> res = new HashSet<>(); +// for (Pair a2 : activities) { +// //String s = activity.first + ";" + activity.second; +// +// if (a1.equals(a2)) +// continue; +// +// double simScore = simPair(a1, a2, sim); +// if (simScore > 0) +// pairNeighbors.put(a1, a2, simScore); +// } +// for (Pair activity : pairNeighbors.keyset()) { +// String s = activity.first + ";" + activity.second; +// if (input.equals(s)){ +// +// for (Entry, Double> e1 : pairNeighbors +// .getAsMap(activity).entrySet()) { +// res.add(e1.getKey()); +// } +// } +// } +// return res; +// } +// +// public static Set getSimilarActString(String input) throws Exception{ +// Set> res = getSimilarAct(input); +// Set set = new HashSet<>(); +// for (Pair e: res){ +// set.add(e.first + ";" + e.second); +// } +// return set; +// } + +// private static void loadActivities(String input) throws IOException{ +// if (activities == null) +// activities = new ArrayList<>(); +// ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); +// InputStream inputs = classLoader.getResourceAsStream(input); +// try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputs, "UTF-8"))) { +// +// String sCurrentLine; +// while ((sCurrentLine = reader.readLine()) != null) { +// Pair act = activityToPair(sCurrentLine); +// //if (!allVerbs.contains(act.first)) allVerbs.add(act.first); +// //if (!allNouns.contains(act.second)) allNouns.add(act.second); +// activities.add(act); +// +// } +// } +// } + /** + * Load all (activities,id) from file + * @param input + * @throws IOException + */ +// private static void loadActToID(String input) throws IOException{ +// if (actToID == null) +// actToID = new HashMap<>(); +// try (BufferedReader br = new BufferedReader(new FileReader(input))) { +// +// String sCurrentLine; +// while ((sCurrentLine = br.readLine()) != null) { +// String [] act_id = sCurrentLine.split("\t"); +// Pair act = activityToPair(act_id[0]); +// actToID.put(act, Integer.parseInt(act_id[1])); +// } +// } +// } + + /** + * load all pair (verb, id) from file + * @param input + * @throws IOException + */ +// private static void loadVerbToID(String input) throws IOException{ +// System.out.println("Load all strong verb and id........"); +// if (verbToID == null) +// verbToID = new HashMap<>(); +// try (BufferedReader br = new BufferedReader(new FileReader(input))) { +// +// String sCurrentLine; +// while ((sCurrentLine = br.readLine()) != null) { +// String [] v_id = sCurrentLine.split("\t"); +// verbToID.put(v_id[0], Integer.parseInt(v_id[1])); +// } +// } +// System.out.println("Successfully! Number of verbs: " + verbToID.size()); +// } + + /** + * load all pair (noun, id) from file + * @param input + * @throws IOException + */ +// private static void loadNounToID(String input) throws IOException{ +// System.out.println("Load all strong noun and id........"); +// if (nounToID == null) +// nounToID = new HashMap<>(); +// try (BufferedReader br = new BufferedReader(new FileReader(input))) { +// +// String sCurrentLine; +// while ((sCurrentLine = br.readLine()) != null) { +// String [] n_id = sCurrentLine.split("\t"); +// nounToID.put(n_id[0], Integer.parseInt(n_id[1])); +// } +// } +// System.out.println("Successfully! Number of nouns: " + nounToID.size()); +// } + + private static Pair activityToPair(String activity) { + String[] vn = activity.split(";"); + return new Pair(vn[0], vn[1]); + } + +// private static Pair stringIntToPair(String s) { +// String[] vn = s.split(";"); +// return new Pair(Integer.parseInt(vn[0]), Integer.parseInt(vn[1])); +// } +// +// public static Map, Double> getPairNeighbors( +// Pair w) { +// return !pairNeighbors.containsKey(w) ? emptyPairMap : pairNeighbors +// .getAsMap(w); +// } + + /** + * Precompute similarity between two activities + * @return + * @throws Exception + */ +// public static void preComputeActivity(Word2VecSimilarity sim){ +// System.out.println("Pre-computing similar pair of activities......"); +// if (simAct == null) +// simAct = new HashSet<>(); +// int count = 0; +// for (int i=0; i= threshold){ +// simAct.add(new Pair(actToID.get(activities.get(i)), actToID.get(activities.get(j)))); +// count++; +// System.out.println(activities.get(i) + "\t" + activities.get(j)); +// } +// } +// } +// System.out.println("Total of similar activity pairs: " + count); +// } + + /** + * load all similar activity pairs + * @throws IOException + * @throws FileNotFoundException + * + */ +// private static void loadSimActPair(String input) throws FileNotFoundException, IOException{ +// if (simAct == null) +// simAct = new HashSet<>(); +// try (BufferedReader br = new BufferedReader(new FileReader(input))) { +// +// String sCurrentLine; +// while ((sCurrentLine = br.readLine()) != null) { +// simAct.add(stringIntToPair(sCurrentLine)); +// } +// } +// } + + /** + * load all similar verb pair + * @param input + * @throws FileNotFoundException + * @throws IOException + */ +// private static void loadSimVerbPair(String input) throws FileNotFoundException, IOException{ +// System.out.println("Load similar pair of verb............."); +// if (simVerbPair == null) +// simVerbPair = new HashSet<>(); +// try (BufferedReader br = new BufferedReader(new FileReader(input))) { +// +// String sCurrentLine; +// while ((sCurrentLine = br.readLine()) != null) { +// simVerbPair.add(stringIntToPair(sCurrentLine)); +// } +// } +// System.out.println("Done! Number of pairs: " + simVerbPair.size()); +// } + + /** + * load all similar noun pair + * @param input + * @throws FileNotFoundException + * @throws IOException + */ +// private static void loadSimNounPair(String input) throws FileNotFoundException, IOException{ +// System.out.println("Load similar pair of noun............."); +// if (simNounPair == null) +// simNounPair = new HashSet<>(); +// try (BufferedReader br = new BufferedReader(new FileReader(input))) { +// +// String sCurrentLine; +// while ((sCurrentLine = br.readLine()) != null) { +// simNounPair.add(stringIntToPair(sCurrentLine)); +// } +// } +// System.out.println("Done! Number of pairs: " + simNounPair.size()); +// } + + /** + * Check whether similarity between two activities are greater than a given threhold. + * @param two strings "paint;wall" and "color;ceiling" + * @return true/false + * @throws Exception + */ +// public static boolean isSim(String a1, String a2) throws Exception{ +// if (sim == null) +// prepareData(); +// Pair activity1 = activityToPair(a1); +// Pair activity2 = activityToPair(a2); +// int id1 = actToID.get(activity1); +// int id2 = actToID.get(activity2); +// if (simAct.contains(new Pair(id1, id2))) +// return true; +// return simAct.contains(new Pair(id2, id1)); +// } + + /** + * Check whether similarity between two activities are greater than a given threhold. + * in a simpler way to prune false negative + * if two verbs are dissimilar and two noun are dissimilar, then two acts are dissimilar + * else we are not sure and return true + * @param two strings "paint;wall" and "color;ceiling" + * @return true/false + * @throws Exception + */ + public static boolean isSim(String a1, String a2) throws Exception{ + if (sim == null) + prepareData(); + Pair activity1 = activityToPair(a1); + Pair activity2 = activityToPair(a2); + if (!isSimVerb(activity1.first, activity2.first)) + return false; + if (!isSimNoun(activity1.second, activity2.second)) + return false; + return true; + } + + /** + * check whether similarity between two verbs is greater than a given threshold + * @param v1 + * @param v2 + * @return + * @throws Exception + */ + public static boolean isSimVerb(String v1, String v2) throws Exception{ + if (sim == null) + prepareData(); + + int id1 = verbToID.get(v1); + int id2 = verbToID.get(v2); + if (simVerbPair.contains(new Pair(id1, id2))) + return true; + return simVerbPair.contains(new Pair(id2, id1)); + } + + /** + * check whether similarity between two verbs is greater than a given threshold + * @param v1 + * @param v2 + * @return + * @throws Exception + */ + public static boolean isSimNoun(String n1, String n2) throws Exception{ + if (sim == null) + prepareData(); + + int id1 = nounToID.get(n1); + int id2 = nounToID.get(n2); + if (simNounPair.contains(new Pair(id1, id2))) + return true; + return simNounPair.contains(new Pair(id2, id1)); + } + + public static double simVerbs(String v1, String v2) throws Exception{ + if (sim == null) + prepareData(); + v1 = v1.contains(" ")?v1.split(" ")[0]:v1; + v2 = v2.contains(" ")?v2.split(" ")[0]:v2; + return sim.sim("v_" + v1, "v_" + v2); + + } + + public static double simNouns(String n1, String n2) throws Exception{ + if (sim == null) + prepareData(); + String n1_tmp = n1.contains(" ")?n1.split(" ")[n1.split(" ").length - 1]:n1; + String n2_tmp = n2.contains(" ")?n2.split(" ")[n2.split(" ").length - 1]:n2; + return sim.sim("n_" + n1_tmp, "n_" + n2_tmp); + } + + public static double simPair(Pair activity1, + Pair activity2, Word2VecSimilarity sim) { + try { + + double vv = simVerbs(activity1.first, activity2.first); + if (vv == 0) + return 0.0; + double nn = simNouns(activity1.second, activity2.second); + return combinePairScore(vv, nn); + } catch (Exception e) { + return 0.0; + } + } + + public static double simPair(Pair activity1, + Pair activity2) throws Exception { + if (sim == null) + prepareData(); + try { + double vv = simVerbs(activity1.first, activity2.first); + if (vv == 0) + return 0.0; + double nn = simNouns(activity1.second, activity2.second); + return combinePairScore(vv, nn); + } catch (Exception e) { + return 0.0; + } + } + + public static double simPair(String a1, + String a2, Word2VecSimilarity sim) { + Pair activity1 = activityToPair(a1); + Pair activity2 = activityToPair(a2); + return simPair(activity1, activity2, sim); + } + + public static double simPair(String a1, + String a2) throws Exception { + if (sim == null) + prepareData(); + Pair activity1 = activityToPair(a1); + Pair activity2 = activityToPair(a2); + return simPair(activity1, activity2, sim); + } + + public static Word2VecSimilarity getSim() throws Exception { + if (sim == null) + prepareData(); + return sim; + } + + + private static double combinePairScore(double cosine1, double cosine2) { + return cosine1 * cosine2; + } + + public static void main(String[] args) throws Exception { + +// Word2VecSimilarity sim = +// new Word2VecSimilarity( +// "/var/tmp/cxchu/data-server/articles-word2vec-word-pos.model.txt", +// 50, false); +// +// System.out.println(simPair("watch;movie", "watch;film", sim)); +// System.out.println(simPair("watch;movie", "eat;popcorn", sim)); +// System.out.println(simPair("watch;film", "eat;popcorn", sim)); + prepareData(); + } + + +} diff --git a/src/main/java/kb/howtokb/clustering/sim/w2v/Word2VecSimilarity.java b/src/main/java/kb/howtokb/clustering/sim/w2v/Word2VecSimilarity.java new file mode 100644 index 0000000..3e865c3 --- /dev/null +++ b/src/main/java/kb/howtokb/clustering/sim/w2v/Word2VecSimilarity.java @@ -0,0 +1,174 @@ +package kb.howtokb.clustering.sim.w2v; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; + +import kb.howtokb.clustering.ISimilarity; +import kb.howtokb.tools.NormalizationText; +import kb.howtokb.utils.SortedMultiMap; + + +public class Word2VecSimilarity implements ISimilarity { + + private final Map emptyMap = new HashMap<>(); + + Map wordvectors; + private SortedMultiMap neighbors; + + private String[] words; + + // Map beautiful -> [a_beautiful] + private static Map wordPOS; + + public Word2VecSimilarity(String modelFile, int maxK) throws IOException, SQLException { + this(modelFile, maxK, true); + } + + /** + * @param modelFile + * = "word2vec-data/phrase-norole.model.txt" + * @param maxK + * = k nearest neighbors for getNeighbors() function. + * @throws IOException + * : while reading the model. + * @throws SQLException + * : TODO: fix in SortedMultiMap, we don't need this. + */ + public Word2VecSimilarity(String modelFile, int maxK, boolean precomputeNeighborhood) + throws IOException, SQLException { + System.out.println("Word2Vec constructing model... " + modelFile); + load(modelFile); + if (precomputeNeighborhood) { + System.out.println("Word2Vec constructing neighborhood... " + words.length); + constructNeighborhood(maxK); + } + + System.out.println("Word2Vec object constructed"); + } + + private void load(String model) throws IOException { + if (wordvectors == null) { + + boolean isHeader = false; + int vocabElemIndex = 0; + int vecSize = 1; + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + InputStream inputs = classLoader.getResourceAsStream(model); + try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputs, "UTF-8"))) { + + String sCurrentLine; + while ((sCurrentLine = reader.readLine()) != null) { + if (!isHeader) { + // 1435 200 i.e. 1435 tokens, each 200 size vector. + int vocabSize = Integer.parseInt(sCurrentLine.split(" ")[0]); + words = new String[vocabSize]; + wordvectors = new LinkedHashMap<>(vocabSize); + wordPOS = new HashMap<>(); + vecSize = Integer.parseInt(sCurrentLine.split(" ")[1]); + isHeader = true; + continue; + } + + String[] w = sCurrentLine.split(" "); + double[] vec = new double[vecSize]; + for (int i = 1; i < w.length; i++) { + vec[i - 1] = Double.parseDouble(w[i]); + } + words[vocabElemIndex++] = w[0]; + wordvectors.put(w[0], vec); + if (w[0].indexOf("_") == 1) { + // System.out.println(w[0].substring(2)); + wordPOS.put(w[0].substring(2), w[0]); + } + } + } + } + } + + double cosine(double[] w1, double[] w2) { + double result = 0; + double t = 0; + double m1 = 0, m2 = 0; + for (int i = 0; i < w1.length; i++) { + m1 += w1[i] * w1[i]; + m2 += w2[i] * w2[i]; + t += w1[i] * w2[i]; + } + result = t / (Math.sqrt(m1) * Math.sqrt(m2)); + // result = (result > 1) ? 1 : result; + // Use angular distance to make similarity bounded between [0,1] + result = Math.acos(result) / Math.PI; + result = 1 - result; + return Double.parseDouble(NormalizationText.format(result)); + } + + private void constructNeighborhood(int maxK) throws SQLException { + if (neighbors == null) { + neighbors = new SortedMultiMap<>(maxK, true); + + // Upper triangular matrix is insufficient because + // we need to store all the m x m similarity matrix + // which is prohibitive, and so we use Heap + // which has a small memory footprint + // But, heap requires m x m computations not just upper triangular + // Anyways, cosine is very cheap so no need of futher optimizations + for (int i = 0; i < words.length; i++) { + for (int j = 0; j < words.length; j++) { + if (j != i) + neighbors.put(words[i], words[j], sim(words[i], words[j])); + } + } + } + } + + @Override + public double sim(String w1, String w2) { + if (w1.equals(w2)) + return 1.0; + if (!wordvectors.containsKey(w1)) { + System.out.println(w1 + " is out of dictionary"); + return 0; + } + if (!wordvectors.containsKey(w2)) { + System.out.println(w2 + " is out of dictionary"); + return 0; + } + return cosine(wordvectors.get(w1), wordvectors.get(w2)); + } + + public double simWithoutPOS(String w1, String w2) { + if (w1.equals(w2)) + return 1.0; + if (!wordPOS.containsKey(w1)) { + System.out.println(w1 + " is out of dictionary"); + return 0; + } + if (!wordPOS.containsKey(w2)) { + System.out.println(w2 + " is out of dictionary"); + return 0; + } + w1 = wordPOS.get(w1); + w2 = wordPOS.get(w2); + return cosine(wordvectors.get(w1), wordvectors.get(w2)); + } + + @Override + public Map getNeighbors(String w) { + return !neighbors.containsKey(w) ? emptyMap : neighbors.getAsMap(w); + } + + public String[] vocab() { + return words; + } + + @Override + public boolean simThreshold(String e1, String e2, double minthreshold) throws Exception { + return sim(e1, e2) >= minthreshold; + } +} \ No newline at end of file diff --git a/src/main/java/kb/howtokb/global/Global.java b/src/main/java/kb/howtokb/global/Global.java index 24f7889..f6308c6 100644 --- a/src/main/java/kb/howtokb/global/Global.java +++ b/src/main/java/kb/howtokb/global/Global.java @@ -5,71 +5,68 @@ public class Global { public static final String GENERAL_CATEGORY = "GENERAL_CATEGORY"; public static final String GENERAL_THING = "GENERAL_THING"; public static final String GENERAL_INGREDIENT = "GENERAL_INGREDIENT"; - public static final String REMOVE_LINK = "/home/cxchu/workspace/Github/data-extraction/DataExtraction/data/removelinks"; - public static final String NOUN_VERB = "/home/cxchu/workspace/Github/howtokb/data/noun-verb.txt"; public static final String DUMMY_SUBJECT = "You"; - public static final String VERBPHRASES_WN_FILE = "/var/tmp/cxchu/data-needed/db-text/verbphrases"; - public static final String VERBPHRASES_WN_DB = "wikihow.verbphrases"; - - public static final String WNTIME = "wikihow.wordnettime"; - public static final String WNVERB = "wikihow.wordnetverb"; - public static final String WNNOUN = "wikihow.wordnetnoun"; - public static final String WNAGENT = "wikihow.wordnetagent"; +// public static final String VERBPHRASES_WN_DB = "wikihow.verbphrases"; +// +// public static final String WNTIME = "wikihow.wordnettime"; +// public static final String WNVERB = "wikihow.wordnetverb"; +// public static final String WNNOUN = "wikihow.wordnetnoun"; +// public static final String WNAGENT = "wikihow.wordnetagent"; //Ground truth data - public static final String ALL_TRAIN_DATA_FILE = "/var/tmp/cxchu/groundtruth-data/New-Data/all-train-data"; - public static final String TRAIN_DATA = "/var/tmp/cxchu/groundtruth-data/New-Data/train"; - public static final String TEST_DATA = "/var/tmp/cxchu/groundtruth-data/New-Data/test"; - - public static final String DATA_GROUND_TRUTH_SIM_FILE = "/var/tmp/cxchu/groundtruth-data/act-frame-sim.json"; - public static final String DATA_GROUND_TRUTH_DISSIM_FILE = "/var/tmp/cxchu/groundtruth-data/act-frame-dissim.json"; - public static final String DATA_GROUND_TRUTH_SIM_FILE_CHECK = "/var/tmp/cxchu/groundtruth-data/act-frame-sim-check.txt"; - public static final String DATA_GROUND_TRUTH_DISSIM_FILE_CHECK = "/var/tmp/cxchu/groundtruth-data/act-frame-dissim-check.txt"; - - public static final String DATA_GROUND_TRUTH_CATE_W2V_SIM_FILE = "/var/tmp/cxchu/groundtruth-data/act-frame-cate-w2v-sim.json"; - public static final String DATA_GROUND_TRUTH_CATE_W2V_SIM_CHECK_FILE = "/var/tmp/cxchu/groundtruth-data/act-frame-cate-w2v-sim-check.txt"; - - public static final String DATA_TEST = "/var/tmp/cxchu/groundtruth-data/test.json"; - public static final String DATA_TEST_CHECK = "/var/tmp/cxchu/groundtruth-data/test.txt"; - -// //For server with check in wordnet - - public static final String JSON_FILE = "/var/tmp/cxchu/articles.json"; - public static final String DATA_FILE = "/var/tmp/cxchu/articles.txt"; - - - public static final String URL_FILE = "/var/tmp/cxchu/wikihow-url"; - public static final String CRAWL_DIRECTORY = "/var/tmp/cxchu/WikiHow2"; -// public static final String ID_CATEGORY_FILE_TEXT = "/var/tmp/cxchu/wikihow-id-category.txt"; - public static final String ID_CATEGORY_FILE_JSON = "/var/tmp/cxchu/wikihow-id-category.json"; - public static final String RAW_CATEGORY = "/var/tmp/cxchu/raw_categories"; - - public static final String ACT_FRAME_JSON_FILE = "/var/tmp/cxchu/data-wordnet/act-frame.json"; - public static final String ID_ACT_FRAME_JSON_FILE = "/var/tmp/cxchu/data-wordnet/id-act-frame.json"; - public static final String AGGRE_WEAK_ACT_FRAME_JSON_FILE = "/var/tmp/cxchu/data-wordnet/act-frame-aggre-weak.json"; - public static final String ID_AGGRE_WEAK_ACT_FRAME_JSON_FILE = "/var/tmp/cxchu/data-wordnet/id-act-frame-aggre-weak.json"; - public static final String AGGRE_STRONG_ACT_FRAME_JSON_FILE = "/var/tmp/cxchu/data-wordnet/act-frame-aggre-strong.json"; - public static final String ID_AGGRE_STRONG_ACT_FRAME_JSON_FILE = "/var/tmp/cxchu/data-wordnet/id-act-frame-aggre-strong.json"; - - - public static final String WEAK_ID_ACT = "/var/tmp/cxchu/data-wordnet/weak-id-act"; - public static final String WEAK_ID_LINENUMBER = "/var/tmp/cxchu/data-wordnet/weak-id-line"; - public static final String STRONG_ID_ACT = "/var/tmp/cxchu/data-wordnet/strong-id-act"; - public static final String STRONG_ID_LINENUMBER = "/var/tmp/cxchu/data-wordnet/strong-id-line"; - public static final String ALL_ID_LINENUMBER = "/var/tmp/cxchu/data-wordnet/all-id-line"; - public static final String WEAK_OLD_ID_TO_ID = "/var/tmp/cxchu/data-wordnet/id-weak-id"; - public static final String STRONG_OLD_ID_TO_ID = "/var/tmp/cxchu/data-wordnet/id-strong-id"; - - //create data sample for testing - public static final String ACT_FRAME_DOMAIN_JSON_FILE = "/var/tmp/cxchu/data-wordnet/act-frame-domain.json"; - - public static final String ALL_STRONG_ACT_FILE = "/var/tmp/cxchu/data-wordnet/all-strong-activities.txt"; - public static final String ALL_WEAK_ACT_FILE = "/var/tmp/cxchu/data-wordnet/all-weak-activities.txt"; - - //Data for word2vec - public static final String DATA_TEXT_WORD2VEC_WORD_FILE = "/var/tmp/cxchu/articles-word2vec-word.txt"; - public static final String DATA_TEXT_WORD2VEC_PHRASE_FILE = "/var/tmp/cxchu/articles-word2vec-phrase.txt"; +// public static final String ALL_TRAIN_DATA_FILE = "/var/tmp/cxchu/groundtruth-data/New-Data/all-train-data"; +// public static final String TRAIN_DATA = "/var/tmp/cxchu/groundtruth-data/New-Data/train"; +// public static final String TEST_DATA = "/var/tmp/cxchu/groundtruth-data/New-Data/test"; +// +// public static final String DATA_GROUND_TRUTH_SIM_FILE = "/var/tmp/cxchu/groundtruth-data/act-frame-sim.json"; +// public static final String DATA_GROUND_TRUTH_DISSIM_FILE = "/var/tmp/cxchu/groundtruth-data/act-frame-dissim.json"; +// public static final String DATA_GROUND_TRUTH_SIM_FILE_CHECK = "/var/tmp/cxchu/groundtruth-data/act-frame-sim-check.txt"; +// public static final String DATA_GROUND_TRUTH_DISSIM_FILE_CHECK = "/var/tmp/cxchu/groundtruth-data/act-frame-dissim-check.txt"; +// +// public static final String DATA_GROUND_TRUTH_CATE_W2V_SIM_FILE = "/var/tmp/cxchu/groundtruth-data/act-frame-cate-w2v-sim.json"; +// public static final String DATA_GROUND_TRUTH_CATE_W2V_SIM_CHECK_FILE = "/var/tmp/cxchu/groundtruth-data/act-frame-cate-w2v-sim-check.txt"; +// +// public static final String DATA_TEST = "/var/tmp/cxchu/groundtruth-data/test.json"; +// public static final String DATA_TEST_CHECK = "/var/tmp/cxchu/groundtruth-data/test.txt"; +// +//// //For server with check in wordnet +// +// public static final String JSON_FILE = "/var/tmp/cxchu/articles.json"; +// public static final String DATA_FILE = "/var/tmp/cxchu/articles.txt"; +// +// +// public static final String URL_FILE = "/var/tmp/cxchu/wikihow-url"; +// public static final String CRAWL_DIRECTORY = "/var/tmp/cxchu/WikiHow2"; +//// public static final String ID_CATEGORY_FILE_TEXT = "/var/tmp/cxchu/wikihow-id-category.txt"; +// public static final String ID_CATEGORY_FILE_JSON = "/var/tmp/cxchu/wikihow-id-category.json"; +// public static final String RAW_CATEGORY = "/var/tmp/cxchu/raw_categories"; +// +// public static final String ACT_FRAME_JSON_FILE = "/var/tmp/cxchu/data-wordnet/act-frame.json"; +// public static final String ID_ACT_FRAME_JSON_FILE = "/var/tmp/cxchu/data-wordnet/id-act-frame.json"; +// public static final String AGGRE_WEAK_ACT_FRAME_JSON_FILE = "/var/tmp/cxchu/data-wordnet/act-frame-aggre-weak.json"; +// public static final String ID_AGGRE_WEAK_ACT_FRAME_JSON_FILE = "/var/tmp/cxchu/data-wordnet/id-act-frame-aggre-weak.json"; +// public static final String AGGRE_STRONG_ACT_FRAME_JSON_FILE = "/var/tmp/cxchu/data-wordnet/act-frame-aggre-strong.json"; +// public static final String ID_AGGRE_STRONG_ACT_FRAME_JSON_FILE = "/var/tmp/cxchu/data-wordnet/id-act-frame-aggre-strong.json"; +// +// +// public static final String WEAK_ID_ACT = "/var/tmp/cxchu/data-wordnet/weak-id-act"; +// public static final String WEAK_ID_LINENUMBER = "/var/tmp/cxchu/data-wordnet/weak-id-line"; +// public static final String STRONG_ID_ACT = "/var/tmp/cxchu/data-wordnet/strong-id-act"; +// public static final String STRONG_ID_LINENUMBER = "/var/tmp/cxchu/data-wordnet/strong-id-line"; +// public static final String ALL_ID_LINENUMBER = "/var/tmp/cxchu/data-wordnet/all-id-line"; +// public static final String WEAK_OLD_ID_TO_ID = "/var/tmp/cxchu/data-wordnet/id-weak-id"; +// public static final String STRONG_OLD_ID_TO_ID = "/var/tmp/cxchu/data-wordnet/id-strong-id"; +// +// //create data sample for testing +// public static final String ACT_FRAME_DOMAIN_JSON_FILE = "/var/tmp/cxchu/data-wordnet/act-frame-domain.json"; +// +// public static final String ALL_STRONG_ACT_FILE = "/var/tmp/cxchu/data-wordnet/all-strong-activities.txt"; +// public static final String ALL_WEAK_ACT_FILE = "/var/tmp/cxchu/data-wordnet/all-weak-activities.txt"; +// +// //Data for word2vec +// public static final String DATA_TEXT_WORD2VEC_WORD_FILE = "/var/tmp/cxchu/articles-word2vec-word.txt"; +// public static final String DATA_TEXT_WORD2VEC_PHRASE_FILE = "/var/tmp/cxchu/articles-word2vec-phrase.txt"; // //For server @@ -85,7 +82,7 @@ public class Global { // // public static final String URL_FILE = "/var/tmp/cxchu/wikihow-url"; // public static final String CRAWL_DIRECTORY = "/var/tmp/cxchu/WikiHow2"; - public static final String ID_CATEGORY_FILE_TEXT = "/var/tmp/cxchu/wikihow-id-category.txt"; +// public static final String ID_CATEGORY_FILE_TEXT = "/var/tmp/cxchu/wikihow-id-category.txt"; // public static final String ID_CATEGORY_FILE_JSON = "/var/tmp/cxchu/wikihow-id-category.json"; // public static final String RAW_CATEGORY = "/var/tmp/cxchu/raw_categories"; // diff --git a/src/main/java/kb/howtokb/taskframe/extractor/TextToOpenIEResult.java b/src/main/java/kb/howtokb/taskframe/extractor/TextToOpenIEResult.java index 8794bf1..30208c1 100644 --- a/src/main/java/kb/howtokb/taskframe/extractor/TextToOpenIEResult.java +++ b/src/main/java/kb/howtokb/taskframe/extractor/TextToOpenIEResult.java @@ -3,6 +3,8 @@ import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; @@ -190,8 +192,11 @@ public static String nounToVerb(String noun) throws IOException{ String verb = noun; //Read dictionary file if (nvList.size() == 0){ - //nvList = new ArrayList<>(); - BufferedReader br = new BufferedReader(new FileReader(Global.NOUN_VERB)); + + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + InputStream inputs = classLoader.getResourceAsStream("noun-verb.txt"); + + BufferedReader br = new BufferedReader(new InputStreamReader(inputs, "UTF-8")); String sCurrentLine; diff --git a/src/main/java/kb/howtokb/taskframe/extractor/TextToActivity.java b/src/main/java/kb/howtokb/taskframe/extractor/TextToWikiHowTaskFrame.java similarity index 98% rename from src/main/java/kb/howtokb/taskframe/extractor/TextToActivity.java rename to src/main/java/kb/howtokb/taskframe/extractor/TextToWikiHowTaskFrame.java index 8e528ea..a778084 100644 --- a/src/main/java/kb/howtokb/taskframe/extractor/TextToActivity.java +++ b/src/main/java/kb/howtokb/taskframe/extractor/TextToWikiHowTaskFrame.java @@ -1,8 +1,9 @@ package kb.howtokb.taskframe.extractor; import java.io.BufferedReader; -import java.io.FileReader; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -10,7 +11,6 @@ import edu.knowitall.openie.Extraction; import edu.stanford.nlp.util.Pair; -import kb.howtokb.global.Global; import kb.howtokb.taskframe.WikiHowTask; import kb.howtokb.taskframe.WikiHowTaskFrame; import kb.howtokb.wkhobject.Category; @@ -21,7 +21,7 @@ import kb.howtokb.wkhobject.Step; import kb.howtokb.wkhobject.Things; -public class TextToActivity { +public class TextToWikiHowTaskFrame { static Pattern pattern = Pattern.compile("[a-zA-Z]"); static TextToOpenIEResult txtOpenIE = new TextToOpenIEResult(); @@ -860,8 +860,11 @@ public int getNum_Article(){ public int getCategoryID(ArrayList cate) throws NumberFormatException, IOException{ if (catetoID == null){ catetoID = new HashMap<>(); - BufferedReader br = new BufferedReader(new FileReader(Global.ID_CATEGORY_FILE_TEXT)); - + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + InputStream inputs = classLoader.getResourceAsStream("wikihow-id-category.txt"); + + BufferedReader br = new BufferedReader(new InputStreamReader(inputs, "UTF-8")); + String sCurrentLine; while ((sCurrentLine = br.readLine()) != null) { @@ -888,7 +891,10 @@ public int getCategoryID(ArrayList cate) throws NumberFormatException, public int getLinkID(String url) throws NumberFormatException, IOException{ if (linktoID == null){ linktoID = new HashMap<>(); - BufferedReader br = new BufferedReader(new FileReader(Global.URL_FILE)); + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + InputStream inputs = classLoader.getResourceAsStream("wikihow-id-url"); + + BufferedReader br = new BufferedReader(new InputStreamReader(inputs, "UTF-8")); String sCurrentLine; diff --git a/src/main/java/kb/howtokb/tools/InformationExtraction.java b/src/main/java/kb/howtokb/tools/InformationExtraction.java index 2b2a840..8ab8a3d 100644 --- a/src/main/java/kb/howtokb/tools/InformationExtraction.java +++ b/src/main/java/kb/howtokb/tools/InformationExtraction.java @@ -5,6 +5,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -16,15 +18,22 @@ import kb.howtokb.reader.TaskFrameReader; import kb.howtokb.taskframe.WikiHowTaskFrame; +import kb.howtokb.utils.SQLiteJDBCConnector; public class InformationExtraction { private static Map idtoCate; private static Map catetoID; - private static Map> parentChains; private static Map idtoWikiURL; // Get category id + /** + * Get category string + * @param category id + * @return category + * @throws NumberFormatException + * @throws IOException + */ public static String getCategory(int id) throws NumberFormatException, IOException { if (idtoCate == null) { idtoCate = new HashMap<>(); @@ -48,6 +57,13 @@ public static String getCategory(int id) throws NumberFormatException, IOExcepti } // Get category id + /** + * get category id + * @param cate + * @return id + * @throws NumberFormatException + * @throws IOException + */ public static int getCategoryID(String cate) throws NumberFormatException, IOException { if (catetoID == null) { catetoID = new HashMap<>(); @@ -70,6 +86,13 @@ public static int getCategoryID(String cate) throws NumberFormatException, IOExc } // Get url from id by reading file + /** + * get wiki url + * @param id + * @return url + * @throws NumberFormatException + * @throws IOException + */ public static String getWikiURLStringFromFile(int id) throws NumberFormatException, IOException { if (idtoWikiURL == null) { idtoWikiURL = new HashMap<>(); @@ -152,4 +175,22 @@ public static String linkToTitle(String s){ } return s; } + + /** + * get all children of a category + * @param ids + * @return list of task name in surface form + * @throws SQLException + * @throws ClassNotFoundException + * @throws IOException + */ + public static List getListofActivitySurfaceFromDb(List ids) throws SQLException, ClassNotFoundException, IOException { + List res = new ArrayList<>(); + for (int i=0; i normString(ArrayList s){ return result; } -// public static List normList(List l) throws SQLException, IOException{ -// List result = new ArrayList<>(); -// -// for (int i=0; i removeStopwordInString(String s) throws SQLException, IOException{ -// List result = new ArrayList<>(); -// String[] l = s.split(" "); -// for (int i=0; i normList(List l) throws SQLException, IOException{ + List result = new ArrayList<>(); + + for (int i=0; i removeStopwordInString(String s) throws SQLException, IOException{ + List result = new ArrayList<>(); + String[] l = s.split(" "); + for (int i=0; i list){ String res = ""; @@ -82,4 +85,12 @@ public static List stringToListInt(String s){ return res; } + private static DecimalFormat decim; + /** 32.535534534534; after formatting = 32.536 */ + public static String format(double x) { + if (decim == null) + decim = new DecimalFormat("#.###"); + return decim.format(x); + } + } diff --git a/src/main/java/kb/howtokb/tools/StructureConverter.java b/src/main/java/kb/howtokb/tools/StructureConverter.java new file mode 100644 index 0000000..d3524f7 --- /dev/null +++ b/src/main/java/kb/howtokb/tools/StructureConverter.java @@ -0,0 +1,26 @@ +package kb.howtokb.tools; + +import java.util.ArrayList; +import java.util.List; + +public class StructureConverter { + + // Convert a string to a list of integer + public static List stringToList(String s) { + List listInt = new ArrayList<>(); + if (s == null || s.length() == 0) + return listInt; + + if (s.contains(";")) { + String[] list = s.split(";"); + for (String l : list) { + if (!l.equals("-1")) + listInt.add(Integer.parseInt(l)); + } + } else { + if (!s.equals("-1")) + listInt.add(Integer.parseInt(s)); + } + return listInt; + } +} diff --git a/src/main/java/kb/howtokb/utils/AdjacencyBackedSparseMatrix.java b/src/main/java/kb/howtokb/utils/AdjacencyBackedSparseMatrix.java new file mode 100644 index 0000000..5ce98d4 --- /dev/null +++ b/src/main/java/kb/howtokb/utils/AdjacencyBackedSparseMatrix.java @@ -0,0 +1,31 @@ +package kb.howtokb.utils; + +import gnu.trove.TIntFloatHashMap; + +public class AdjacencyBackedSparseMatrix { + + TIntFloatHashMap[] matrix; + float threshold; + + public AdjacencyBackedSparseMatrix(float thres, int n) { + matrix = new TIntFloatHashMap[n]; + for (int i=0; i extends HashMap { + + private Map v2k; + + public BijectiveMap() { + super(); + v2k = new HashMap<>(); + } + + @Override + public V put(K key, V value) { + v2k.put(value, key); + return super.put(key, value); + } + + @Override + public V remove(Object key) { + + // removing a key, implies removing the corresponding 1:1 value + if (super.containsKey(key)) + v2k.remove(super.get(key)); + + return super.remove(key); + } + + public V getValueFromKey(K key) { + return super.get(key); + } + + public K getKeyFromValue(V key) { + return v2k.get(key); + } + + @Override + public void putAll(Map m) { + super.putAll(m); + } + + @Override + public void clear() { + super.clear(); + v2k.clear(); + } +} diff --git a/src/main/java/kb/howtokb/utils/IDMap.java b/src/main/java/kb/howtokb/utils/IDMap.java new file mode 100644 index 0000000..34142d3 --- /dev/null +++ b/src/main/java/kb/howtokb/utils/IDMap.java @@ -0,0 +1,25 @@ +package kb.howtokb.utils; + +public class IDMap extends BijectiveMap { + + private int globalID; + + public IDMap() { + this(0); + } + + public IDMap(int startingID) { + super(); + globalID = startingID; + } + + public int add(K key) { + if (!super.containsKey(key)) + super.put(key, (V) new Integer(globalID++)); + return get(key); + } + + public int getAvailableGlobalID() { + return globalID; + } +} \ No newline at end of file diff --git a/src/main/java/kb/howtokb/utils/SQLiteJDBCConnector.java b/src/main/java/kb/howtokb/utils/SQLiteJDBCConnector.java new file mode 100644 index 0000000..358214c --- /dev/null +++ b/src/main/java/kb/howtokb/utils/SQLiteJDBCConnector.java @@ -0,0 +1,91 @@ +package kb.howtokb.utils; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +public class SQLiteJDBCConnector { + + public static Connection c; + public static Statement st; + + public static boolean check = false; + + public static String db = "wikihowDB"; + + public static ResultSet q(String sql) throws SQLException, ClassNotFoundException, IOException { + try{ + if (check == false) + createDB(); + + System.out.println("Create db successfully!"); + try { + return st.executeQuery(sql); + } catch (Error | Exception e1) { + System.out.println("Exception (" + e1.getMessage() + ") " + "while initializing the DB. \n " + + "Trying to automatically resolve..."); + + // returning empty result set for problematic query + return q("SELECT NULL LIMIT 0;"); + } + } catch (Error | Exception e){ + System.out.println("Database is already created!"); + try { + return st.executeQuery(sql); + } catch (Error | Exception e1) { + System.out.println("Exception (" + e.getMessage() + ") " + "while initializing the DB. \n " + + "Trying to automatically resolve..."); + + // returning empty result set for problematic query + return q("SELECT NULL LIMIT 0;"); + } + } + } + + public static void createDB() throws SQLException, ClassNotFoundException, IOException { + try { + Class.forName("org.sqlite.JDBC"); + c = DriverManager.getConnection("jdbc:sqlite:" + db); + st = c.createStatement(); + + String sql = "CREATE TABLE frameidtostrongactsurface " + "(ID INT PRIMARY KEY NOT NULL," + + " task TEXT NOT NULL);"; + st.executeUpdate(sql); + + sql = "CREATE TABLE categoryjson " + "(ID INT PRIMARY KEY NOT NULL," + + " json TEXT NOT NULL);"; + st.executeUpdate(sql); + + String input = "/var/tmp/cxchu/clustering-result/for-database/frame-id-to-strong-surface"; + update(st, "frameidtostrongactsurface", input); + + input = "/var/tmp/cxchu/data-server/For-Database/wikihow-id-category.json"; + update(st, "categoryjson", input); + + check = true; + } catch (SQLException e) { + check = true; + + } + + } + + public static void update(Statement st, String table, String file) throws IOException, SQLException { + BufferedReader br = new BufferedReader(new FileReader(file)); + String line; + while ((line = br.readLine()) != null) { + String[] values = line.split("\t"); // your seperator + + // Convert String to right type. Integer, double, date etc. + st.executeUpdate("INSERT INTO " + table + " VALUES(" + values[0] + ",'" + values[1] + "');"); + // Use a PeparedStatemant, it´s easier and safer + } + br.close(); + } + +} diff --git a/src/main/java/kb/howtokb/utils/SortedMultiMap.java b/src/main/java/kb/howtokb/utils/SortedMultiMap.java new file mode 100644 index 0000000..de888cb --- /dev/null +++ b/src/main/java/kb/howtokb/utils/SortedMultiMap.java @@ -0,0 +1,356 @@ +package kb.howtokb.utils; + +import java.sql.SQLException; +import java.util.Arrays; +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.PriorityQueue; +import java.util.Set; + +import kb.howtokb.tools.NormalizationText; + + + + /** Usage: + public static void main(String[] args) throws SQLException { + SortedMultiMap m = new SortedMultiMap<>(3, true); + m.put("a", "a1", 1.0); + m.put("b", "a2", 0.9); + m.put("a", "a3", 0.95); + m.put("a", "a1", 0.96); + m.put("a", "a3", 0.96); + + SortedMultiMap m2 = new SortedMultiMap<>(3, true); + m2.put("a", "a1", 0.9); + m2.put("b", "a1", 1.0); + m2.put("b", "a2", 0.95); + m2.put("a", "a3", 1.0); + + m.putAll(m2); + + for (String e : m.keyset()) { + System.out.println(e + "\t" + Arrays.toString(m.get(e))); + } + + }*/ + +public class SortedMultiMap { + + public static void main(String[] args) throws SQLException { + SortedMultiMap m = new SortedMultiMap<>(3, true); + m.put(1, 1, 1.0); + m.put(2, 2, 0.9); + m.put(3, 3, 0.95); + m.put(4, 4, 0.96); + m.put(5, 5, 0.96); + + + for (Integer e : m.keyset()) { + System.out.println(e + "\t" + Arrays.toString(m.get(e))); + } + } + + // ////////////////////////////////////////////////////////////// + // //////////////////// Functionality///////////////////// + // //////////////////////////////////////////////////////////// + + private int maxK; + private final boolean inDescOrder; + private AutoMap>> m; + + /** + * + * @param maxK How many top "k" elements are required + * @param inDescOrder if set to false sorts in ascending order + * @throws SQLException + */ + public SortedMultiMap(int maxK, boolean inDescOrder) throws SQLException { + this.maxK = maxK; + this.inDescOrder = inDescOrder; + m = new AutoMap<>(); + } + + /** + *

    +     *         boolean isDesc = true;
    +     *     
    +     *     AutoMap>> m = new AutoMap<>();
    +     * 
    +     *     expander.putSorted("niket", "c", 40, m, isDesc);
    +     * 
    +     *     expander.putSorted("niket", "p", 10, m, isDesc);
    +     *     expander.putSorted("niket", "b", 4, m, isDesc);
    +     *     expander.putSorted("niket", "m", 50, m, isDesc);
    +     * 
    +     *     expander.putSorted("anjali", "p", 90, m, isDesc);
    +     *     expander.putSorted("anjali", "c", 40, m, isDesc);
    +     * 
    +     *     expander.putSorted("anjali", "m", 20, m, isDesc);
    +     *     expander.putSorted("anjali", "b", 100, m, isDesc);
    +     * 
    +     *     for (Entry>> e : m.entrySet())
    +     *         for (QEntry e2 : e.getValue())
    +     *         System.out.println(e.getKey() + "\t" + e2);
    +     * @author ntandon
    +     * 
    +     * @param 
    +     */
    +    public static class QEntry {
    +
    +        private V v;
    +
    +        public V getV() {
    +            return v;
    +        }
    +
    +        public double getN() {
    +            return n;
    +        }
    +
    +        public void setN(double nNew) {
    +            n = nNew;
    +        }
    +
    +        public void addToN(double nNew) {
    +            n += nNew;
    +        }
    +
    +        private double n;
    +
    +        public QEntry(V v, double n) {
    +            this.v = v;
    +            this.n = n;
    +        }
    +
    +        @Override
    +        public String toString() {
    +            return new StringBuilder().append(v.toString()).append('\t')
    +                .append(NormalizationText.format(n)).toString();
    +        }
    +
    +        @Override
    +        public int hashCode() {
    +            final int prime = 31;
    +            int result = 1;
    +            result = prime * result + ((v == null) ? 0 : v.hashCode());
    +            return result;
    +        }
    +
    +        @Override
    +        public boolean equals(Object obj) {
    +            if (this == obj)
    +                return true;
    +            if (obj == null)
    +                return false;
    +            if (getClass() != obj.getClass())
    +                return false;
    +            QEntry other = (QEntry) obj;
    +            if (v == null) {
    +                if (other.v != null)
    +                    return false;
    +            } else if (!v.equals(other.v))
    +                return false;
    +            return true;
    +        }
    +
    +    }
    +
    +    /**
    +     * @deprecated because update on( "a 80, b 40" maxk=1) with (b, 50) would
    +     *             have already dropped b in the first round.
    +     * @param key
    +     * @param value
    +     * @param n
    +     */
    +    public void update(K key, V value, double n) {
    +
    +        if (!m.containsKey(key))
    +            m.put(key, new PriorityQueue>(maxK,
    +                new Comparator>() {
    +
    +                    @Override
    +                    public int compare(QEntry o1, QEntry o2) {
    +
    +                        return inDescOrder ? (o1.n > o2.n ? 1 : -1)
    +                            : (o2.n > o1.n ? 1 : -1);
    +
    +                    }
    +                }));
    +
    +        // key=animal; value=tiger, n=10.
    +        // m: animal=> dog;50, tiger;45, cow;10
    +        // Update if existing==> m: animal=> dog;50, tiger;55, cow;10
    +        QEntry qEntry = updatePriorityQueue(m.get(key), value, n);
    +
    +        PriorityQueue> qExisting = m.get(key);
    +
    +        /*
    +         * Does the worst existing entry compare unfavorably to the entrytoadd?
    +         */
    +        qExisting.add(qEntry);
    +        if (qExisting.size() > maxK)
    +            qExisting.poll(); // remove the head (contains the worst value).
    +    }
    +
    +    // key=animal; value=tiger, n=50.
    +    // m: animal=> dog;50, tiger;45, cow;10
    +    // Replace in existing==> m: animal=> dog;50, tiger;*50*, cow;10
    +    private boolean replaceInPriorityQueue(PriorityQueue> q, V value,
    +        double n) {
    +
    +        V entryToRemove = null;
    +        double newVal = 0.0;
    +
    +        for (QEntry e : q) {
    +            // if key already exists with a larger value, no operation
    +            // if key already exists with a smaller value, replace
    +            if (e.getV().equals(value) && e.getN() < n) {
    +                entryToRemove = value;
    +                newVal = Math.max(e.getN(), n);
    +                break;
    +            }
    +        }
    +
    +        if (entryToRemove != null) {
    +            q.remove(entryToRemove);
    +            q.add(new QEntry(entryToRemove, newVal));
    +            return true;
    +        }
    +
    +        return false;
    +
    +    }
    +
    +    // key=animal; value=tiger, n=10.
    +    // m: animal=> dog;50, tiger;45, cow;10
    +    // Update if existing==> m: animal=> dog;50, tiger;55, cow;10
    +    private QEntry updatePriorityQueue(PriorityQueue> q, V value,
    +        double n) {
    +        for (QEntry e : q) {
    +            if (e.getV().equals(value)) {
    +                double newVal = e.getN() + n;
    +                q.remove(e);
    +                return new QEntry(value, newVal);
    +            }
    +        }
    +
    +        return new QEntry(value, n);
    +    }
    +
    +    public void put(K key, V value, double n) {
    +
    +        if (!m.containsKey(key))
    +            m.put(key, new PriorityQueue>(maxK,
    +                new Comparator>() {
    +
    +                    @Override
    +                    public int compare(QEntry o1, QEntry o2) {
    +
    +                        return inDescOrder ? (o1.n > o2.n ? 1 : -1)
    +                            : (o2.n > o1.n ? 1 : -1);
    +
    +                    }
    +                }));
    +
    +        PriorityQueue> qExisting = m.get(key);
    +
    +        // if qExisting already has a QEntry containing the same key, retain the
    +        // max value as n
    +        boolean isValueUpdated = false;
    +        for (QEntry entry : qExisting) {
    +            if (entry.v.equals(value)) {
    +                entry.n = n > entry.n ? n : entry.n;
    +                isValueUpdated = true;
    +                break;
    +            }
    +        }
    +
    +        if (!isValueUpdated) {
    +            QEntry qEntry = new QEntry(value, n);
    +            /*
    +             * Does the worst existing entry compare unfavorably to the
    +             * entrytoadd?
    +             */
    +            qExisting.add(qEntry);
    +            if (qExisting.size() > maxK)
    +                qExisting.poll(); // remove the head (contains the worst value).
    +        }
    +    }
    +
    +    public void remove(K key, V value) {
    +        if (containsKey(key))
    +            m.get(key).remove(value);
    +    }
    +
    +    public boolean containsKey(K key) {
    +        return m.containsKey(key);
    +    }
    +
    +    public boolean containsKey(K key, V value) {
    +        return value != null && containsKey(key) && m.get(key).contains(value);
    +    }
    +
    +    public void remove(K key) {
    +        if (m.containsKey(key))
    +            m.remove(key);
    +    }
    +
    +    private QEntry[] priorityQToOrderedArr(PriorityQueue> q) {
    +        QEntry[] result = new QEntry[0];
    +        if (q == null)
    +            return null;
    +        else
    +            result = new QEntry[q.size()];
    +
    +        int reverseIndex = result.length;
    +
    +        QEntry e = q.poll();
    +        while (e != null) {
    +            result[--reverseIndex] = e;
    +            e = q.poll();
    +        }
    +
    +        return result;
    +    }
    +
    +    public QEntry[] get(K key) {
    +
    +        PriorityQueue> q =
    +            key == null || !m.containsKey(key) ? null : m.get(key);
    +        return priorityQToOrderedArr(new PriorityQueue<>(q));
    +    }
    +    
    +    public Map getAsMap(K key) {
    +        Map mResult = new LinkedHashMap<>();
    +        PriorityQueue> q =
    +            key == null || !m.containsKey(key) ? null : m.get(key);
    +        for (QEntry e : priorityQToOrderedArr(new PriorityQueue<>(q)))
    +            mResult.put((V) e.getV(), e.getN());
    +
    +        return mResult;
    +    }
    +
    +    public Set keyset() {
    +        return m.keySet();
    +    }
    +
    +    public Set>>> entrySet() {
    +        return m.entrySet();
    +    }
    +
    +//    public void putAll(SortedMultiMap addme) {
    +//
    +//        for (Entry>> e : Util.nullableIter(addme
    +//            .entrySet()))
    +//            for (QEntry e2 : e.getValue())
    +//                put(e.getKey(), e2.getV(), e2.getN());
    +//    }
    +
    +    public int size(){
    +        return m!=null? m.size(): 0;
    +    }
    +}
    +
    +
    diff --git a/src/main/java/kb/howtokb/utils/SparseSimMatrix.java b/src/main/java/kb/howtokb/utils/SparseSimMatrix.java
    new file mode 100644
    index 0000000..1483244
    --- /dev/null
    +++ b/src/main/java/kb/howtokb/utils/SparseSimMatrix.java
    @@ -0,0 +1,34 @@
    +package kb.howtokb.utils;
    +
    +import gnu.trove.TLongFloatHashMap;
    +
    +public class SparseSimMatrix {
    +
    +	TLongFloatHashMap matrix;
    +	float threshold;
    +
    +	public SparseSimMatrix(float thres) {
    +		matrix = new TLongFloatHashMap();
    +		this.threshold = thres;
    +	}
    +
    +	public void set(int x, int y, float value) {
    +		if (value < threshold)
    +			return;
    +		long key = intpairToLong(x, y);
    +		matrix.put(key, value);
    +	}
    +
    +	//Matrix is symmetric then only store the upper triangle part
    +	public float get(int x, int y) {
    +		if (x <=y )
    +			return matrix.get(intpairToLong(x, y));
    +		return matrix.get(intpairToLong(y, x));
    +	}
    +
    +	private long intpairToLong(int l, int r) {
    +		return ((long) l << 32) + r;
    +		// return (long) (l << 32) | (r & 0XFFFFFFFFL);
    +	}
    +
    +}
    \ No newline at end of file
    diff --git a/src/test/java/kb/howtokb/TextToActivityTest.java b/src/test/java/kb/howtokb/TextToWikiHowTaskFrameTest.java
    similarity index 59%
    rename from src/test/java/kb/howtokb/TextToActivityTest.java
    rename to src/test/java/kb/howtokb/TextToWikiHowTaskFrameTest.java
    index 831293c..0c1de14 100644
    --- a/src/test/java/kb/howtokb/TextToActivityTest.java
    +++ b/src/test/java/kb/howtokb/TextToWikiHowTaskFrameTest.java
    @@ -13,67 +13,67 @@
     
     import kb.howtokb.reader.WikiHowArticleReader;
     import kb.howtokb.taskframe.WikiHowTaskFrame;
    -import kb.howtokb.taskframe.extractor.TextToActivity;
    +import kb.howtokb.taskframe.extractor.TextToWikiHowTaskFrame;
     import kb.howtokb.wkhobject.Question;
     
    -public class TextToActivityTest {
    -	
    +public class TextToWikiHowTaskFrameTest {
    +
     	public static void main(String[] args) throws ClassNotFoundException, IOException, ParseException {
     		System.setOut(new PrintStream(new FileOutputStream("log.txt")));
    -		
    -		TextToActivity extract = new TextToActivity();
    -		//Extract all question
    +
    +		TextToWikiHowTaskFrame extract = new TextToWikiHowTaskFrame();
    +		// Extract all question
     		System.out.println("Reading json data file.....");
     		String input = "/var/tmp/cxchu/articles_test.json";
     		ArrayList allQuestions = WikiHowArticleReader.WikiHowArticleReaderFromJSONFile(input);
     		int frames = 0;
    -		try{
    +		try {
     			Writer textout = new BufferedWriter(new OutputStreamWriter(
    -		              new FileOutputStream("/var/tmp/cxchu/data-for-test-code/act-frame.json"), "utf-8"));
    +					new FileOutputStream("/var/tmp/cxchu/data-for-test-code/act-frame.json"), "utf-8"));
     			Writer idtextout = new BufferedWriter(new OutputStreamWriter(
    -		              new FileOutputStream("/var/tmp/cxchu/data-for-test-code/id-act-frame.json"), "utf-8"));
    -			
    -			int i=1;
    -			
    -			for (Question ques: allQuestions){
    -				try{
    -				//if (i++ > 50){
    -					//break;
    -				//}
    -				ArrayList listframe = extract.articleToListWikiHowTaskFrame(ques.setNormalized());
    -				frames += listframe.size();
    -				for (WikiHowTaskFrame frame: listframe){
    -					//frame = frame.setNormalized();
    -					textout.write(frame.toJsonObject().toJSONString() + "\n");
    -					idtextout.write(frame.getID() + "\t" + frame.toJsonObject().toJSONString() + "\n");
    -				}
    -				
    -				System.out.println(ques.getLink());
    -				}catch (IOException e){
    +					new FileOutputStream("/var/tmp/cxchu/data-for-test-code/id-act-frame.json"), "utf-8"));
    +
    +			int i = 1;
    +
    +			for (Question ques : allQuestions) {
    +				try {
    +					// if (i++ > 50){
    +					// break;
    +					// }
    +					ArrayList listframe = extract.articleToListWikiHowTaskFrame(ques.setNormalized());
    +					frames += listframe.size();
    +					for (WikiHowTaskFrame frame : listframe) {
    +						// frame = frame.setNormalized();
    +						textout.write(frame.toJsonObject().toJSONString() + "\n");
    +						idtextout.write(frame.getID() + "\t" + frame.toJsonObject().toJSONString() + "\n");
    +					}
    +
    +					System.out.println(ques.getLink());
    +				} catch (IOException e) {
     					e.printStackTrace();
     					continue;
    -				}catch (NullPointerException e){
    +				} catch (NullPointerException e) {
     					e.printStackTrace();
     					continue;
    -				}catch (IndexOutOfBoundsException e){
    +				} catch (IndexOutOfBoundsException e) {
     					e.printStackTrace();
     					continue;
    -				}catch (PatternSyntaxException e){
    +				} catch (PatternSyntaxException e) {
     					e.printStackTrace();
     					continue;
     				}
     			}
     			textout.close();
     			idtextout.close();
    -		}catch (IOException e) {
    -			
    +		} catch (IOException e) {
    +
     		}
     		System.out.println("Number of articles: " + extract.getNum_Article() + "\n");
     		System.out.println("Number of sentences: " + extract.getNum_Sent() + "\n");
     		System.out.println("Number of extractions: " + extract.getNum_Ext_Wt_Thres() + "\n");
     		System.out.println("Number of extractions with conf > 0.45: " + extract.getNum_Ext_Gt_Thres() + "\n");
     		System.out.println("Number of activity frames: " + frames + "\n");
    -		
    +
     	}
    -	
    +
     }
    diff --git a/src/test/java/kb/howtokb/clustering/HeuristicBottomUpClusteringTest.java b/src/test/java/kb/howtokb/clustering/HeuristicBottomUpClusteringTest.java
    new file mode 100644
    index 0000000..10eae6c
    --- /dev/null
    +++ b/src/test/java/kb/howtokb/clustering/HeuristicBottomUpClusteringTest.java
    @@ -0,0 +1,58 @@
    +package kb.howtokb.clustering;
    +
    +import java.io.BufferedWriter;
    +import java.io.FileOutputStream;
    +import java.io.OutputStreamWriter;
    +import java.io.Writer;
    +import java.util.List;
    +
    +import kb.howtokb.clustering.HeuristicBottomupClustering.ActivitySuperCluster;
    +import kb.howtokb.clustering.sim.Coefficient;
    +import kb.howtokb.taskframe.WikiHowTaskFrame;
    +import kb.howtokb.tools.InformationExtraction;
    +
    +public class HeuristicBottomUpClusteringTest {
    +	public static void main(String[] args) throws Exception {
    +		
    +		long startTime = System.currentTimeMillis();
    +		
    +		
    +		String activityTb = "/var/tmp/cxchu/clustering-pre-computation/all-words-category.txt";
    +		HeuristicBottomupClustering cluster = new HeuristicBottomupClustering(activityTb);
    +		
    +		double threshold = Coefficient.VVNN_TRHES;
    +		String model = "/var/tmp/cxchu/w2v-model/articles-word2vec-word-pos.model.txt";
    +		String allAct = "/var/tmp/cxchu/groundtruth-data/all-strong-activities.txt";
    +		SimplePruningSimilarity simFunc = new SimplePruningSimilarity(threshold, model, allAct);
    +		List results = cluster.cluster(simFunc, Coefficient.VVNN_TRHES);
    +		System.out.println("Number of clusters: " + results.size());
    +		String output = "/var/tmp/cxchu/clustering-result/bottom-up-cluster-";
    +		
    +		String input = ""; //original data point file
    +		List allframe = InformationExtraction.getAllFrame(input);
    +		int total = 0;
    +		for (int i = 0; i < results.size(); i++) {
    +			System.out.println("Cluster " + i + ": " + results.get(i).getSuperClusterMembers().size());
    +			Writer out = new BufferedWriter(new OutputStreamWriter(
    +					new FileOutputStream(output+i+".json"), "utf-8"));
    +			 List actitiviesID =
    +					 results.get(i).getSuperClusterMembers();
    +			 for (int j=0; j allframe = InformationExtraction.getAllFrame(input);
    +
    +		System.out.println("Initializing simple topdown clustering.....");
    +		
    +		HeuristicTopDownClusteringDynamicSparse cluster = new HeuristicTopDownClusteringDynamicSparse(allframe, false, 0.9, 5, 0.5);
    +		
    +		System.out.println("Done! Start clustering.......");
    +		int k=2;
    +		List> res = cluster.splitACluster(cluster.getInputCluster(), k);
    +		
    +		System.out.println("Done! Results..............");
    +		for (int i=0; i> frames = res.get(i).getClusterMembers();
    +			for (int j=0; j allframe = InformationExtraction.getAllFrame(input);
    +
    +		System.out.println("Initializing simple topdown clustering.....");
    +		
    +//		InstanceInLeafSimpleStopping stopper = new InstanceInLeafSimpleStopping<>(5);
    +		HeuristicTopDownClustering cluster = new HeuristicTopDownClustering(allframe, false, 0.9, 5);
    +		
    +		System.out.println("Done! Start clustering.......");
    +		int k=2;
    +		List> res = cluster.splitACluster(cluster.getInputCluster(), k);
    +		
    +		System.out.println("Done! Results..............");
    +//		out.write("Number of clusters: " + res.size() + "\n");
    +		for (int i=0; i> frames = res.get(i).getClusterMembers();
    +			for (int j=0; j

    $z%i&>Z= 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