From a4d214f86fb181dbc51276798dc14836dcca7d41 Mon Sep 17 00:00:00 2001 From: anmol01gulati Date: Mon, 3 Oct 2016 18:58:31 +0530 Subject: [PATCH 1/8] Modified load/save methods to maitain compatibility in loading and saving LDA models across Pythong verions --- gensim/models/ldamodel.py | 52 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/gensim/models/ldamodel.py b/gensim/models/ldamodel.py index 7def8966b3..adafeaaf49 100755 --- a/gensim/models/ldamodel.py +++ b/gensim/models/ldamodel.py @@ -43,6 +43,7 @@ from scipy.special import polygamma from six.moves import xrange import six +import json # log(sum(exp(x))) that tries to avoid overflow try: @@ -979,7 +980,7 @@ def __getitem__(self, bow, eps=None): """ return self.get_document_topics(bow, eps) - def save(self, fname, ignore=['state', 'dispatcher'], *args, **kwargs): + def save(self, fname, ignore=['state', 'dispatcher'], separately = None, *args, **kwargs): """ Save the model to file. @@ -1018,7 +1019,41 @@ def save(self, fname, ignore=['state', 'dispatcher'], *args, **kwargs): ignore = list(set(['state', 'dispatcher']) | set(ignore)) else: ignore = ['state', 'dispatcher'] - super(LdaModel, self).save(fname, *args, ignore=ignore, **kwargs) + + # make sure 'expElogbeta' and 'sstats' are ignored from the pickled object, even if + # someone sets the separately list themselves. + separately_explicit = ['expElogbeta', 'sstats'] + # Also add 'alpha' and 'eta' to separately list if they are set 'auto' or some + # array manually. + if (isinstance(self.alpha, six.string_types) and self.alpha == 'auto') or len(self.alpha.shape) != 1: + separately_explicit.append('alpha') + if (isinstance(self.eta, six.string_types) and self.eta == 'auto') or len(self.eta.shape) != 1: + separately_explicit.append('eta') + # Merge separately_explicit with separately. + if separately is not None and separately: + if isinstance(separately, six.string_types): + separately = [separately] + separately = [e for e in separately if e] # make sure None and '' are not in the list + separately = list(set(separately_explicit) | set(separately)) + else: + separately = separately_explicit + + # id2word needs to saved separately. + # If id2word is not already in ignore, then saving it separately in json. + id2word = None + if self.id2word is not None and 'id2word' not in ignore: + id2word = dict((k,v) for k,v in self.id2word.iteritems()) + self.id2word = None # remove the dictionary from model + super(LdaModel, self).save(fname, ignore=ignore, separately = separately, *args, **kwargs) + self.id2word = id2word # restore the dictionary. + + # Save the dictionary separately in json. + id2word_fname = utils.smart_extension(fname, '.json') + try: + with utils.smart_open(id2word_fname, 'wb') as fout: + json.dump(id2word, fout) + except Exception as e: + logging.warning("failed to save id2words dictionary in %s: %s", id2word_fname, e) @classmethod def load(cls, fname, *args, **kwargs): @@ -1032,6 +1067,19 @@ def load(cls, fname, *args, **kwargs): """ kwargs['mmap'] = kwargs.get('mmap', None) result = super(LdaModel, cls).load(fname, *args, **kwargs) + # Load the separately stored id2word dictionary saved in json. + id2word_fname = utils.smart_extension(fname, '.json') + try: + with utils.smart_open(id2word_fname, 'r') as fin: + id2word = json.load(fin) + # id2word = {int(k):v for k, v in id2word.items()} + if id2word is not None: + result.id2word = utils.FakeDict(id2word) + else: + result.id2word = None + except Exception as e: + logging.warning("failed to load id2words from %s: %s", id2word_fname, e) + state_fname = utils.smart_extension(fname, '.state') try: result.state = super(LdaModel, cls).load(state_fname, *args, **kwargs) From 04a4634b4720379af7a416aaa5da15b0415a583c Mon Sep 17 00:00:00 2001 From: anmol01gulati Date: Tue, 4 Oct 2016 17:59:08 +0530 Subject: [PATCH 2/8] Added saved LDA models in Python 2.7 and 3.5 environments for testing compatibility --- gensim/test/ldamodel_python2_7.tst | Bin 0 -> 3298 bytes gensim/test/ldamodel_python2_7.tst.eta.npy | Bin 0 -> 96 bytes .../test/ldamodel_python2_7.tst.expElogbeta.npy | Bin 0 -> 272 bytes gensim/test/ldamodel_python2_7.tst.json | 1 + gensim/test/ldamodel_python2_7.tst.state | Bin 0 -> 510 bytes gensim/test/ldamodel_python3_5.tst | Bin 0 -> 4726 bytes gensim/test/ldamodel_python3_5.tst.eta.npy | Bin 0 -> 96 bytes .../test/ldamodel_python3_5.tst.expElogbeta.npy | Bin 0 -> 272 bytes gensim/test/ldamodel_python3_5.tst.json | 1 + gensim/test/ldamodel_python3_5.tst.state | Bin 0 -> 732 bytes 10 files changed, 2 insertions(+) create mode 100644 gensim/test/ldamodel_python2_7.tst create mode 100644 gensim/test/ldamodel_python2_7.tst.eta.npy create mode 100644 gensim/test/ldamodel_python2_7.tst.expElogbeta.npy create mode 100644 gensim/test/ldamodel_python2_7.tst.json create mode 100644 gensim/test/ldamodel_python2_7.tst.state create mode 100644 gensim/test/ldamodel_python3_5.tst create mode 100644 gensim/test/ldamodel_python3_5.tst.eta.npy create mode 100644 gensim/test/ldamodel_python3_5.tst.expElogbeta.npy create mode 100644 gensim/test/ldamodel_python3_5.tst.json create mode 100644 gensim/test/ldamodel_python3_5.tst.state diff --git a/gensim/test/ldamodel_python2_7.tst b/gensim/test/ldamodel_python2_7.tst new file mode 100644 index 0000000000000000000000000000000000000000..36df3078f80407768dc6e93dffffafb2dd4122ec GIT binary patch literal 3298 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 literal 0 HcmV?d00001 diff --git a/gensim/test/ldamodel_python2_7.tst.eta.npy b/gensim/test/ldamodel_python2_7.tst.eta.npy new file mode 100644 index 0000000000000000000000000000000000000000..a5ceb80b2d236cf16d807ef7e63979bed00ebf4b GIT binary patch literal 96 zcmbR27wQ`j$;jZwP_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= dXCxM+0{I$7ItqrGItsN4aKOa?1`q6EGyo3%7kmH! literal 0 HcmV?d00001 diff --git a/gensim/test/ldamodel_python2_7.tst.expElogbeta.npy b/gensim/test/ldamodel_python2_7.tst.expElogbeta.npy new file mode 100644 index 0000000000000000000000000000000000000000..3c5eadd9d063809dd8badc012892e8b896502374 GIT binary patch literal 272 zcmbR27wQ`j$;jZwP_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I$7ItqqHnmP)#3NXOcb17Fl=X{I(qQ|Z#=KEUgkJyXdxpS_?e${7rU70;C z_NtuEbU-v?oWgF=6`Sn$zPc>_b!Llw{=++3v$nL@KWml<>|M}e?|tDC&x)8+_7>%w zj2{zE*-LMIFbidspYSY^EY+}mg)VK_uu`uFMGP7;PE6%)P zcL>+a5xRBbzx|P#37QF-wf0|QzOl4b7TX{Col(%HP-tJ06v~`hl32)_!I6Oo6Fx|o sFt%mzbcPBrfWZTM7!B0J4h-~^{N&<7es4}t1QsV}f+A2Lwlql(0FPPCG5`Po literal 0 HcmV?d00001 diff --git a/gensim/test/ldamodel_python3_5.tst b/gensim/test/ldamodel_python3_5.tst new file mode 100644 index 0000000000000000000000000000000000000000..397db655bd91140196d64f9510e0c75e8b537488 GIT binary patch literal 4726 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 LLSnulKk)wmC*~G; literal 0 HcmV?d00001 diff --git a/gensim/test/ldamodel_python3_5.tst.eta.npy b/gensim/test/ldamodel_python3_5.tst.eta.npy new file mode 100644 index 0000000000000000000000000000000000000000..a5ceb80b2d236cf16d807ef7e63979bed00ebf4b GIT binary patch literal 96 zcmbR27wQ`j$;jZwP_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= dXCxM+0{I$7ItqrGItsN4aKOa?1`q6EGyo3%7kmH! literal 0 HcmV?d00001 diff --git a/gensim/test/ldamodel_python3_5.tst.expElogbeta.npy b/gensim/test/ldamodel_python3_5.tst.expElogbeta.npy new file mode 100644 index 0000000000000000000000000000000000000000..d0dbf9661e42c55f88229a392182352797d1b113 GIT binary patch literal 272 zcmbR27wQ`j$;jZwP_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I$7ItqqHnmP)#3NXOce(Szzce6B( z*t2}?kvIZW_quuln9iHO`Lvt!K6|#OUxT}yw%8jrHqE-7TW;?%`Iq|=&2syuTiMpC HlI8XQ&E;>b literal 0 HcmV?d00001 diff --git a/gensim/test/ldamodel_python3_5.tst.json b/gensim/test/ldamodel_python3_5.tst.json new file mode 100644 index 0000000000..e19afe4ba3 --- /dev/null +++ b/gensim/test/ldamodel_python3_5.tst.json @@ -0,0 +1 @@ +{"0": "computer", "1": "interface", "2": "human", "3": "survey", "4": "system", "5": "time", "6": "response", "7": "user", "8": "eps", "9": "trees", "10": "graph", "11": "minors"} \ No newline at end of file diff --git a/gensim/test/ldamodel_python3_5.tst.state b/gensim/test/ldamodel_python3_5.tst.state new file mode 100644 index 0000000000000000000000000000000000000000..a46ade20395bc974526e9ec6bed7737026a2f4fc GIT binary patch literal 732 zcmX|<+fNfw5XQHyQo3AVSAZ9TTCA? zB0{YZjY!Y{S`uH38g3dTXkv2a57X(k@jPsPIs1LzoXpH)zdmDTn3ayEvxaH2sBLH- ziFXWb%GF#`1YvjqeDmOsD54+;s%p(-vW{sm2qfT`5~RCKK5b-m2FK-)QtxS)ZsiIL z>JkuC>ga|s%3@HjlQdU|>J$)7=WW;097ijNs$=Te40D~l?urnqs>F;@{R^TjEJ1^= z>hwmPiDsq(A~Y&KicUh4SHjj@D{~o|mmwU7mLi;pLu*9#$$q(U8QN-*hFi#yvt99% z^T9RfkOkRSgp+aTjK~2mZv?s~CnqQV((yjB;6it@lxkFZsNAjbM|1oDkNA>=zicey zHZQ8YDDl$mzV?Z`6c}u{E4g6y|^nq)Nr4_q5QAm*x2~ZaME+~BitFU@c{1P1}>53 zb1;_1=RGl8$9I&;S8xv(M)~6Kyu_baUHFNY3rxZZs Date: Tue, 4 Oct 2016 18:00:38 +0530 Subject: [PATCH 3/8] Added test for LDA Model compatibility between Python versions --- gensim/models/ldamodel.py | 3 +-- gensim/test/test_ldamodel.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/gensim/models/ldamodel.py b/gensim/models/ldamodel.py index adafeaaf49..b0d5e5e701 100755 --- a/gensim/models/ldamodel.py +++ b/gensim/models/ldamodel.py @@ -1050,7 +1050,7 @@ def save(self, fname, ignore=['state', 'dispatcher'], separately = None, *args, # Save the dictionary separately in json. id2word_fname = utils.smart_extension(fname, '.json') try: - with utils.smart_open(id2word_fname, 'wb') as fout: + with utils.smart_open(id2word_fname, 'w', encoding='utf-8') as fout: json.dump(id2word, fout) except Exception as e: logging.warning("failed to save id2words dictionary in %s: %s", id2word_fname, e) @@ -1072,7 +1072,6 @@ def load(cls, fname, *args, **kwargs): try: with utils.smart_open(id2word_fname, 'r') as fin: id2word = json.load(fin) - # id2word = {int(k):v for k, v in id2word.items()} if id2word is not None: result.id2word = utils.FakeDict(id2word) else: diff --git a/gensim/test/test_ldamodel.py b/gensim/test/test_ldamodel.py index a96d96ae6f..f8518c1b8d 100644 --- a/gensim/test/test_ldamodel.py +++ b/gensim/test/test_ldamodel.py @@ -366,6 +366,23 @@ def testPersistence(self): tstvec = [] self.assertTrue(numpy.allclose(model[tstvec], model2[tstvec])) # try projecting an empty vector + # #Method used to save LDA models in Python 2.7 and 3.5 environments. + # def testrandom(self): + # fname = os.path.join(os.path.dirname(__file__), 'ldamodel_python3_5.tst') + # model = self.model + # model.save(fname) + # logging.warning("LDA Model saved") + + def testModelCompatibilityWithPythonVersions(self): + fname_model_2_7 = os.path.join(os.path.dirname(__file__), 'ldamodel_python2_7.tst') + model_2_7 = self.class_.load(fname_model_2_7) + fname_model_3_5 = os.path.join(os.path.dirname(__file__), 'ldamodel_python3_5.tst') + model_3_5 = self.class_.load(fname_model_3_5) + self.assertEqual(model_2_7.num_topics, model_3_5.num_topics) + self.assertTrue(numpy.allclose(model_2_7.expElogbeta, model_3_5.expElogbeta)) + tstvec = [] + self.assertTrue(numpy.allclose(model_2_7[tstvec], model_3_5[tstvec])) # try projecting an empty vector + def testPersistenceIgnore(self): fname = testfile() model = ldamodel.LdaModel(self.corpus, num_topics=2) From 8b2cc4228d64e2a60910b1db5747c11919076b6a Mon Sep 17 00:00:00 2001 From: anmol01gulati Date: Tue, 4 Oct 2016 23:20:57 +0530 Subject: [PATCH 4/8] Modified unpickle method to allow unpickling python 2 objects in python 3 --- gensim/test/ldamodel_python2_7.tst | Bin 3298 -> 3267 bytes .../ldamodel_python2_7.tst.expElogbeta.npy | Bin 272 -> 272 bytes gensim/test/ldamodel_python2_7.tst.state | Bin 510 -> 510 bytes gensim/test/ldamodel_python3_5.tst | Bin 4726 -> 4736 bytes .../ldamodel_python3_5.tst.expElogbeta.npy | Bin 272 -> 272 bytes gensim/test/ldamodel_python3_5.tst.json | 2 +- gensim/test/ldamodel_python3_5.tst.state | Bin 732 -> 731 bytes gensim/test/test_ldamodel.py | 4 ++-- gensim/utils.py | 8 +++++--- 9 files changed, 8 insertions(+), 6 deletions(-) diff --git a/gensim/test/ldamodel_python2_7.tst b/gensim/test/ldamodel_python2_7.tst index 36df3078f80407768dc6e93dffffafb2dd4122ec..e7b3af4d6487f0e6a0ebc84bbfcbbb85f3c1659f 100644 GIT binary patch delta 3081 zcmYM$c{tSD8vt-)8_AX-l&z6{yF<3Dmq8hW%9O-RvoRyvceade$P`jZWXWE#BvP)W zNXbr?gt3KWcZsPel%MXs&+|L~ob#UNea`#7&vX9xOv^RN-If*&A`tzBoe5av??aN7 z+IhhsA0H}_1_(G>ukrk|P{L#yk%Fa>g9535Ai@A8?u!iwz+z}53Xw_*@+SabM{746 zvVXl~2PGJcrBaDhKnOuV?GK~}VCcaFEN$;%Us9i}tFWUrJM^Ptxl|ZRfI!4!nZSNW z>#6_B>?e?^Gzu9Q#(kNc~F$50+w3l%(c@(6;nz!ViiuO}kGiDgayv-OH&aTSuvTZwK zqDT^2$vf!jP*01oZ*64iY`eO9re5g&p{mY*?s@c(OcOon>-CG{PBB(S+9gTtZ>O-?FW=j3#rMC9SUD$$y>{%2nW@BOf-TbiAM~20>=fNs&LVEH>cQm}VLtFZ7!kBTDYVg`Rp$3*=B- zydM3D{-vmBPEf*Q%a8Q>X9?Q`=7aR~CcYgO`dFZEgk){&2MMk23X0R&# z@rrI+uA49v!j>SSWt1>A0uFq)pEes;{k4PM!!V)HRM|Ew(NqTGyudqryP-9$BcMH^~P%YtfnR+?^TX>>`C%9w*~#Es^4H($w3o^f1M zKw{9zi6=n)d3M|n{j4K*rf(`ZX|;S$ zmG32`7k||*8=1Vd-RAN!!@X#X0u0t4m}cJ#@kIMw+x&XD87^)rH<;*5X0m>8Q;@io zYsVuqE1d=hZD#O-+DCTR`)BoiOCko^!8XlRrb!_6jKu?%2u0Rec-Lg^t@;uilXJ7b zu16o0*J!jHb>AY%V!3Fs-~I}^a1rt#=h$R;)zuW+fQCAWCKpD$EKll#YUuTE7b2R? zt1V6R`L>LFJ3Q7ZzO>cAwb(6(-}rc+X^&z9KY9^0F`_9JebqM$61%hVayqL{ z20QtSDtxFdW_Yv6U9DpwT$w4cb7qegKKD%A@bHCR@L3NB@zXm_JwIeowZlDeD95Wd zX7tU>bT>Yw<3>`4a(YqHA1%hiCWOAN*x8D;rhQC9k3LBq$>F~gS4%T@PcFP9%eJpR zoav`8iz-p}V*tE1l_quII>HTD{2Ql&a_ z1!6=Tu@g%P|0r?jwEjcc5(bBvl{|p$-4v|eESn3sCkT0M8n#7ir}3JV8TdZ<*Hgghn3ssev{2Y_6UlZNHDrXvh6`<1ozbWbGT? zMNx?7vDKl~q15eEpH~3CE$e*?TFdfIv}k`5ly(1U%})1;>BkhFEF8(p`@pmuosA@kSH((0S>Vk1hdM20Q ztc}%CGh$(!xoy6d%s|b|NeChkPteJvnpQ#1Kga$(+2iuqC()~twrbcDzI_oU;@76` zgq+e4f%VQRa#K5oi4L+lpq~vJXIrjd{U;^^Fv5@n^J5DnowGj_@DO7MPp$~OJB6M5 zxuUH_!{=(I_PUY;nggX?*c6!!v&MJ(=5!RkyE>VK`5%qj!A$3p`No+GHOZgY z`<~tJ4|i#9+$xyjf}7_b-enb()~~IVbt{wqdX;3Vtz^bW)w?pFL62S7hnl$4#p!8o zJacfxr=xh~D8Ku=N5-tI*!&iIRZ*ms-9US!o#vo{@UF?|i5(3P`K3jT1D`$5qbD>R z63vSMIlh|bM)qo7cA()0|mIDixBAMa)@> z@hBk-hKeT#GpT@*_wV2zs8RuCZ{UaqYCka~*xo> P1cSX12!NIg9jEs{RA;zH delta 3116 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 Cm}6!D delta 200 zcmV;(05|`T0+0fbP=AclZ7Xcggg>I=MKm|Qgg?YT7TnyhDA1xfbgg+$-<}4h% zgg*gZAiEW)vOm4*(--xbggwlnWfkW%ict0}+%)y9>#y@!E-wsWlc0V@k$Jleo{y)zVH^+3y z{y%^1i5vFQ{y(F8Q?I7|us=>I+|38?1yc93z|35l^#^=s1{XZNa@v>p*|39TXfpfxmvp_!-i<9Hf`zSA{Ea^XW-#wF1%p2!hJ5y!Jb;s` F0aSdKXfFT& delta 203 zcmV;+05t#p1O5Y$>wn)xjU$p@hd=hJfeO(2g+I3T(>nN5hd&5I&IBUQg+Bnh8~`HE zg+Kj5%wX1V@IM^wizev_gFlT840KmBg+I4b>&f<#gFnGH>rZR(2SCz<{X9eV2S5au zk9ptj|37x+xZ6O{|39ky>R$@f|34B~iVs-P|37(S_Pb%!|3E*A#{auv)c-#RdS^aU z9`8RCblDd6><>Wl^NXm=>IXnqDQptj*#AGoe2^(%DSbcnT=oQpd2>I)`)F{6AaRqb F0aOFlXAl4Y diff --git a/gensim/test/ldamodel_python3_5.tst b/gensim/test/ldamodel_python3_5.tst index 397db655bd91140196d64f9510e0c75e8b537488..0875e545cc0891d6c6b6a0f684479ebf82cdf919 100644 GIT binary patch literal 4736 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 LLSnulKk)wmC*~G; diff --git a/gensim/test/ldamodel_python3_5.tst.expElogbeta.npy b/gensim/test/ldamodel_python3_5.tst.expElogbeta.npy index d0dbf9661e42c55f88229a392182352797d1b113..2cc222219aa005ea32e55f634f91db4430444869 100644 GIT binary patch delta 200 zcmV;(05|`T0+0fbP=8W~c^p{&dq1aoPi+?wd_SvalzYY}i$7^5N5dLcfyFUllH-R!nyFYP|vUGy%xIaw;YC~MJ%0WNL`Mvn>CWSwbliY#a zfU`eDs+_{n?1Vo(M1lJ6CWSxv4LILANxMIwK!|<2QGh?7hh?Xa(SJXu62$}Rv=vs|*E#lHXII<4g~r|c754k&*}JY^qLn98iM z_MrWO?RMS0_FL@3&3D9Ku-#%GaZ~sCZ6N(nc2T-=>=H-&t^20k&C)nx&+@fL;s{XT z>*@($I&c2w({9fD?Ae}v4eoZ@VsF&gH0yS5xxLHeU+zmZ%k7(PWm~ICmfHgWUItwu diff --git a/gensim/test/ldamodel_python3_5.tst.json b/gensim/test/ldamodel_python3_5.tst.json index e19afe4ba3..e690d19cad 100644 --- a/gensim/test/ldamodel_python3_5.tst.json +++ b/gensim/test/ldamodel_python3_5.tst.json @@ -1 +1 @@ -{"0": "computer", "1": "interface", "2": "human", "3": "survey", "4": "system", "5": "time", "6": "response", "7": "user", "8": "eps", "9": "trees", "10": "graph", "11": "minors"} \ No newline at end of file +{"0": "human", "1": "interface", "2": "computer", "3": "system", "4": "response", "5": "user", "6": "survey", "7": "time", "8": "eps", "9": "trees", "10": "graph", "11": "minors"} \ No newline at end of file diff --git a/gensim/test/ldamodel_python3_5.tst.state b/gensim/test/ldamodel_python3_5.tst.state index a46ade20395bc974526e9ec6bed7737026a2f4fc..17ecb24a2780bdc0ba2716b8cc64315ae6ac367a 100644 GIT binary patch literal 731 zcmX|7|4UO*6n~rL^rg-$O*3ni)+|~?L5rd*L_|Fsu@O9kHQ(NQy2#`i zbA2HrqOgS!hJ>>+{6T|r{;;}xlkSCkKb+6`e9o6?uR5+9RyrHX<}^KHg)*ArB5_z# zVzy%IA_#*s;CTYxpxh(~LLy-}*~x+h4RP4B8?n@MEwVQbjk1sD@C+@dTHuqKWzp57 z$Bmq+YZf%cp;_*9W2UY;rj^d?2}{ZAnViCDF%J9W22Sg?0xharDx`90DC=bGv|^e{ zK}>LE&aiCLQEd@g>sg|q)mdnhggNl536)QzTB2^$fC%lfhx;aBzud_GjAEya3(!%7 z15r3wg3c&(1tpKu^g-NdLmc3jt7KR>4kUS+g9EIMX)ZqGEgCmhhg z%+dnwFnmTOEYlZS)oF{-HqM`oaldypsyzH)H;dkL-4$9r=defTxp|e}if;&KZRsMd z(;A26DSYX7h?iy|nu!G_Xq7{%;^L@qiN10?MjQ8Og(}^&%>og6Lp$^_?;oNi{EZcS z8oZ4^SRo93UHE}E*~sWETAaYQxWNLKd-1tT-=%3Pc5&%9?&rfIy%O5mu*~eoxPU+D fg&$`be#fmF;i;QA&ERxxvB4+|+HfZ6Bt!oIi0~e! literal 732 zcmX|<+fNfw5XQHyQo3AVSAZ9TTCA? zB0{YZjY!Y{S`uH38g3dTXkv2a57X(k@jPsPIs1LzoXpH)zdmDTn3ayEvxaH2sBLH- ziFXWb%GF#`1YvjqeDmOsD54+;s%p(-vW{sm2qfT`5~RCKK5b-m2FK-)QtxS)ZsiIL z>JkuC>ga|s%3@HjlQdU|>J$)7=WW;097ijNs$=Te40D~l?urnqs>F;@{R^TjEJ1^= z>hwmPiDsq(A~Y&KicUh4SHjj@D{~o|mmwU7mLi;pLu*9#$$q(U8QN-*hFi#yvt99% z^T9RfkOkRSgp+aTjK~2mZv?s~CnqQV((yjB;6it@lxkFZsNAjbM|1oDkNA>=zicey zHZQ8YDDl$mzV?Z`6c}u{E4g6y|^nq)Nr4_q5QAm*x2~ZaME+~BitFU@c{1P1}>53 zb1;_1=RGl8$9I&;S8xv(M)~6Kyu_baUHFNY3rxZZs (3,0): + return _pickle.load(f, encoding='latin1') + else: + return _pickle.loads(f.read()) def revdict(d): """ From c4c1289bd0c24f9d5becb411ad74fa46c601a14e Mon Sep 17 00:00:00 2001 From: anmol01gulati Date: Wed, 5 Oct 2016 20:59:53 +0530 Subject: [PATCH 5/8] Created and saved LDAModels with same random_seed in both Python 2.7 and 3.5 --- gensim/models/ldamodel.py | 2 +- gensim/test/ldamodel_python2_7.tst | Bin 3267 -> 0 bytes .../test/ldamodel_python2_7.tst.expElogbeta.npy | Bin 272 -> 0 bytes gensim/test/ldamodel_python2_7.tst.state | Bin 510 -> 0 bytes gensim/test/ldamodel_python3_5.tst | Bin 4736 -> 0 bytes .../test/ldamodel_python3_5.tst.expElogbeta.npy | Bin 272 -> 0 bytes gensim/test/ldamodel_python3_5.tst.json | 1 - gensim/test/ldamodel_python3_5.tst.state | Bin 731 -> 0 bytes gensim/test/ldamodel_python_2_7 | Bin 0 -> 3267 bytes ...7.tst.eta.npy => ldamodel_python_2_7.eta.npy} | Bin gensim/test/ldamodel_python_2_7.expElogbeta.npy | Bin 0 -> 272 bytes ...thon2_7.tst.json => ldamodel_python_2_7.json} | 0 gensim/test/ldamodel_python_2_7.state | Bin 0 -> 510 bytes gensim/test/ldamodel_python_3_5 | Bin 0 -> 4700 bytes ...5.tst.eta.npy => ldamodel_python_3_5.eta.npy} | Bin gensim/test/ldamodel_python_3_5.expElogbeta.npy | Bin 0 -> 272 bytes gensim/test/ldamodel_python_3_5.json | 1 + gensim/test/ldamodel_python_3_5.state | Bin 0 -> 737 bytes gensim/test/test_ldamodel.py | 12 +++++++----- 19 files changed, 9 insertions(+), 7 deletions(-) delete mode 100644 gensim/test/ldamodel_python2_7.tst delete mode 100644 gensim/test/ldamodel_python2_7.tst.expElogbeta.npy delete mode 100644 gensim/test/ldamodel_python2_7.tst.state delete mode 100644 gensim/test/ldamodel_python3_5.tst delete mode 100644 gensim/test/ldamodel_python3_5.tst.expElogbeta.npy delete mode 100644 gensim/test/ldamodel_python3_5.tst.json delete mode 100644 gensim/test/ldamodel_python3_5.tst.state create mode 100644 gensim/test/ldamodel_python_2_7 rename gensim/test/{ldamodel_python2_7.tst.eta.npy => ldamodel_python_2_7.eta.npy} (100%) create mode 100644 gensim/test/ldamodel_python_2_7.expElogbeta.npy rename gensim/test/{ldamodel_python2_7.tst.json => ldamodel_python_2_7.json} (100%) create mode 100644 gensim/test/ldamodel_python_2_7.state create mode 100644 gensim/test/ldamodel_python_3_5 rename gensim/test/{ldamodel_python3_5.tst.eta.npy => ldamodel_python_3_5.eta.npy} (100%) create mode 100644 gensim/test/ldamodel_python_3_5.expElogbeta.npy create mode 100644 gensim/test/ldamodel_python_3_5.json create mode 100644 gensim/test/ldamodel_python_3_5.state diff --git a/gensim/models/ldamodel.py b/gensim/models/ldamodel.py index b0d5e5e701..184d6cba82 100755 --- a/gensim/models/ldamodel.py +++ b/gensim/models/ldamodel.py @@ -1030,7 +1030,7 @@ def save(self, fname, ignore=['state', 'dispatcher'], separately = None, *args, if (isinstance(self.eta, six.string_types) and self.eta == 'auto') or len(self.eta.shape) != 1: separately_explicit.append('eta') # Merge separately_explicit with separately. - if separately is not None and separately: + if separately: if isinstance(separately, six.string_types): separately = [separately] separately = [e for e in separately if e] # make sure None and '' are not in the list diff --git a/gensim/test/ldamodel_python2_7.tst b/gensim/test/ldamodel_python2_7.tst deleted file mode 100644 index e7b3af4d6487f0e6a0ebc84bbfcbbb85f3c1659f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3267 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 diff --git a/gensim/test/ldamodel_python2_7.tst.expElogbeta.npy b/gensim/test/ldamodel_python2_7.tst.expElogbeta.npy deleted file mode 100644 index 64e0220059c945418618d9521909abd9bcb68f7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmbR27wQ`j$;jZwP_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I$7ItqqHnmP)#3NXNB%l=Xoi4;r=FuU?+{ zau1M}*VsL^>wAm+8~+OS=P2^cRt==90e8zS0 diff --git a/gensim/test/ldamodel_python2_7.tst.state b/gensim/test/ldamodel_python2_7.tst.state deleted file mode 100644 index d9598a13cf863d41c5137668628c64b3ae797824..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 510 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 diff --git a/gensim/test/ldamodel_python_2_7 b/gensim/test/ldamodel_python_2_7 new file mode 100644 index 0000000000000000000000000000000000000000..f2ee3d6f09b20936db0484970bc49c348d3f92a6 GIT binary patch literal 3267 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 KtgI?oZVv#e)^tGt literal 0 HcmV?d00001 diff --git a/gensim/test/ldamodel_python2_7.tst.json b/gensim/test/ldamodel_python_2_7.json similarity index 100% rename from gensim/test/ldamodel_python2_7.tst.json rename to gensim/test/ldamodel_python_2_7.json diff --git a/gensim/test/ldamodel_python_2_7.state b/gensim/test/ldamodel_python_2_7.state new file mode 100644 index 0000000000000000000000000000000000000000..fcc60724d1d10eed0b41b3810f7dc98d8d63c4aa GIT binary patch literal 510 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 FzW|A_4}Smv literal 0 HcmV?d00001 diff --git a/gensim/test/ldamodel_python3_5.tst.eta.npy b/gensim/test/ldamodel_python_3_5.eta.npy similarity index 100% rename from gensim/test/ldamodel_python3_5.tst.eta.npy rename to gensim/test/ldamodel_python_3_5.eta.npy diff --git a/gensim/test/ldamodel_python_3_5.expElogbeta.npy b/gensim/test/ldamodel_python_3_5.expElogbeta.npy new file mode 100644 index 0000000000000000000000000000000000000000..1971e44b14889570af360270f96a8f047331e0b4 GIT binary patch literal 272 zcmbR27wQ`j$;jZwP_3SlTAW;@Zl$1ZlV+i=qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I$7ItqqHnmP)#3NXMmW%;eE=KEUgrEcx$xqGg~{}NPXIw`ZK z#s2l3gVrJ|Hre;DJk$McW{drmq77$2;_sO3e$3j^V*j+zU$t*Ri@luOQuP%vr|fUM zSi$x&@sxe-q`avLYY*D56Z-V2$9{|b#5nEnd$wEb(`Sj^JrAVid)E{m28vsiNj1yF zF0r3wb!m2v#u0m^kI7(h8*#nAuFm`HcPG!X?RDB>zjndYXE$@p?JMrryjZMRZm+2k KtgI?oZVv#e)^tGt literal 0 HcmV?d00001 diff --git a/gensim/test/ldamodel_python_3_5.json b/gensim/test/ldamodel_python_3_5.json new file mode 100644 index 0000000000..f64397704b --- /dev/null +++ b/gensim/test/ldamodel_python_3_5.json @@ -0,0 +1 @@ +{"0": "interface", "1": "human", "2": "computer", "3": "response", "4": "system", "5": "user", "6": "time", "7": "survey", "8": "eps", "9": "trees", "10": "graph", "11": "minors"} \ No newline at end of file diff --git a/gensim/test/ldamodel_python_3_5.state b/gensim/test/ldamodel_python_3_5.state new file mode 100644 index 0000000000000000000000000000000000000000..8f995aeab80414d530ba493550d5396c9879f6a4 GIT binary patch literal 737 zcmX|9TTc@~6yCPb!dOKSP(%UmMPd`>#RrmYf+pw^ObX~G*fiVSg*LX^p3WB22NH;( z#YAFMY9N@P0znBEH5LQjl5>8TPPdKoF!Rlv@7%sKGj4s-w0I&FOr;Go$%9Ela}XOc zv=LjgO$JiWEV!n@9Z)@zB$>7b9^J~NGWnpM&YHngE@>yUY*x#&Xx7xz7PqrG-DXf% zWiiXBTA^N%=D@2*b&*Qv%(N))Mm*Q4j z1vpjgRfI})6ai@q*|;bOHfe*rGVn=6%d2_f1W`>04Obck~@ z?)PJHN<#r$suF0k zgVD@HUxho1JNN@XdGWO%;c|y(>@j`ug=nr0*MkGJ?+f8iT6i=e)&Kwi literal 0 HcmV?d00001 diff --git a/gensim/test/test_ldamodel.py b/gensim/test/test_ldamodel.py index 982e5fab38..4be73428a1 100644 --- a/gensim/test/test_ldamodel.py +++ b/gensim/test/test_ldamodel.py @@ -362,21 +362,23 @@ def testPersistence(self): model.save(fname) model2 = self.class_.load(fname) self.assertEqual(model.num_topics, model2.num_topics) + print ("model expElogbeta: %s ", type(model.expElogbeta)) self.assertTrue(numpy.allclose(model.expElogbeta, model2.expElogbeta)) tstvec = [] self.assertTrue(numpy.allclose(model[tstvec], model2[tstvec])) # try projecting an empty vector - # # Method used to save LDA models in Python 2.7 and 3.5 environments. + # Method used to save LDA models in Python 2.7 and 3.5 environments. # def testSaveModelsForPythonVersion(self): - # fname = os.path.join(os.path.dirname(__file__), 'ldamodel_python3_5.tst') - # model = self.model + # fname = os.path.join(os.path.dirname(__file__), 'ldamodel_python_2_7') + # corpus = mmcorpus.MmCorpus(datapath('testcorpus.mm')) + # model = ldamodel.LdaModel(corpus, id2word=dictionary, num_topics=2, passes=100, random_state = 1000007) # model.save(fname) # logging.warning("LDA Model saved") def testModelCompatibilityWithPythonVersions(self): - fname_model_2_7 = os.path.join(os.path.dirname(__file__), 'ldamodel_python2_7.tst') + fname_model_2_7 = os.path.join(os.path.dirname(__file__), 'ldamodel_python_2_7') model_2_7 = self.class_.load(fname_model_2_7) - fname_model_3_5 = os.path.join(os.path.dirname(__file__), 'ldamodel_python3_5.tst') + fname_model_3_5 = os.path.join(os.path.dirname(__file__), 'ldamodel_python_3_5') model_3_5 = self.class_.load(fname_model_3_5) self.assertEqual(model_2_7.num_topics, model_3_5.num_topics) self.assertTrue(numpy.allclose(model_2_7.expElogbeta, model_3_5.expElogbeta)) From 96f8a4a9d2512d07e3790d5bd800879b8464f340 Mon Sep 17 00:00:00 2001 From: anmol01gulati Date: Wed, 5 Oct 2016 23:54:42 +0530 Subject: [PATCH 6/8] Added Tests to check compatibility to Load/Save Word2Vec models across Python 2/3 --- gensim/test/test_word2vec.py | 14 ++++++++++++++ gensim/test/word2vecmodel_python_2_7 | Bin 0 -> 13670 bytes gensim/test/word2vecmodel_python_3_5 | Bin 0 -> 20040 bytes 3 files changed, 14 insertions(+) create mode 100644 gensim/test/word2vecmodel_python_2_7 create mode 100644 gensim/test/word2vecmodel_python_3_5 diff --git a/gensim/test/test_word2vec.py b/gensim/test/test_word2vec.py index a2d7e6c743..7a5dc5b4e3 100644 --- a/gensim/test/test_word2vec.py +++ b/gensim/test/test_word2vec.py @@ -233,6 +233,20 @@ def testPersistenceWord2VecFormatCombinationWithStandardPersistence(self): binary_model_with_vocab.save(testfile()) binary_model_with_vocab = word2vec.Word2Vec.load(testfile()) self.assertEqual(model.vocab['human'].count, binary_model_with_vocab.vocab['human'].count) + + # def testSaveModelsForPythonVersion(self): + # fname = os.path.join(os.path.dirname(__file__), 'word2vecmodel_python_2_7') + # model = word2vec.Word2Vec(sentences, min_count=1, seed = 1000007) + # model.init_sims() + # model.save(fname, binary=True) + # logging.warning("Word2Vec model saved") + + def testModelCompatibilityWithPythonVersions(self): + fname_model_2_7 = os.path.join(os.path.dirname(__file__), 'word2vecmodel_python_2_7') + model_2_7 = word2vec.Word2Vec.load(fname_model_2_7) + fname_model_3_5 = os.path.join(os.path.dirname(__file__), 'word2vecmodel_python_3_5') + model_3_5 = word2vec.Word2Vec.load(fname_model_3_5) + self.models_equal(model_2_7, model_3_5) def testLargeMmap(self): """Test storing/loading the entire model.""" diff --git a/gensim/test/word2vecmodel_python_2_7 b/gensim/test/word2vecmodel_python_2_7 new file mode 100644 index 0000000000000000000000000000000000000000..c95899af8e180bec8b52d930b2889d4f528780af GIT binary patch literal 13670 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 bET@0%(|@Z)olVxuFor(JZCoAVto8o@H7*@K literal 0 HcmV?d00001 diff --git a/gensim/test/word2vecmodel_python_3_5 b/gensim/test/word2vecmodel_python_3_5 new file mode 100644 index 0000000000000000000000000000000000000000..fb4e5d6b1cb17c094864c77df91f036600b617c4 GIT binary patch literal 20040 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 h-zX)%TP#a_6I(}wrBQzI$ Date: Thu, 6 Oct 2016 02:13:32 +0530 Subject: [PATCH 7/8] Minor change in commented code --- gensim/test/test_word2vec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gensim/test/test_word2vec.py b/gensim/test/test_word2vec.py index 7a5dc5b4e3..d3c4ab7295 100644 --- a/gensim/test/test_word2vec.py +++ b/gensim/test/test_word2vec.py @@ -238,7 +238,7 @@ def testPersistenceWord2VecFormatCombinationWithStandardPersistence(self): # fname = os.path.join(os.path.dirname(__file__), 'word2vecmodel_python_2_7') # model = word2vec.Word2Vec(sentences, min_count=1, seed = 1000007) # model.init_sims() - # model.save(fname, binary=True) + # model.save(fname) # logging.warning("Word2Vec model saved") def testModelCompatibilityWithPythonVersions(self): From fbd5d6d45ab8850baf02e2af089aa8066be6b1bf Mon Sep 17 00:00:00 2001 From: anmol01gulati Date: Mon, 7 Nov 2016 14:47:59 +0530 Subject: [PATCH 8/8] Reduced tolerance for checking model equality --- gensim/test/test_word2vec.py | 11 +++++------ gensim/test/word2vecmodel_python_2_7 | Bin 13670 -> 5750 bytes gensim/test/word2vecmodel_python_3_5 | Bin 20040 -> 8259 bytes 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/gensim/test/test_word2vec.py b/gensim/test/test_word2vec.py index d3c4ab7295..3f3acf658e 100644 --- a/gensim/test/test_word2vec.py +++ b/gensim/test/test_word2vec.py @@ -235,9 +235,8 @@ def testPersistenceWord2VecFormatCombinationWithStandardPersistence(self): self.assertEqual(model.vocab['human'].count, binary_model_with_vocab.vocab['human'].count) # def testSaveModelsForPythonVersion(self): - # fname = os.path.join(os.path.dirname(__file__), 'word2vecmodel_python_2_7') - # model = word2vec.Word2Vec(sentences, min_count=1, seed = 1000007) - # model.init_sims() + # fname = os.path.join(os.path.dirname(__file__), 'word2vecmodel_python_3_5') + # model = word2vec.Word2Vec(sentences, size=10, min_count=0, seed=42, hs=1, negative=0) # model.save(fname) # logging.warning("Word2Vec model saved") @@ -488,11 +487,11 @@ def testRNG(self): def models_equal(self, model, model2): self.assertEqual(len(model.vocab), len(model2.vocab)) - self.assertTrue(numpy.allclose(model.syn0, model2.syn0)) + self.assertTrue(numpy.allclose(model.syn0, model2.syn0, atol=1e-4)) if model.hs: - self.assertTrue(numpy.allclose(model.syn1, model2.syn1)) + self.assertTrue(numpy.allclose(model.syn1, model2.syn1, atol=1e-4)) if model.negative: - self.assertTrue(numpy.allclose(model.syn1neg, model2.syn1neg)) + self.assertTrue(numpy.allclose(model.syn1neg, model2.syn1neg, atol=1e-4)) most_common_word = max(model.vocab.items(), key=lambda item: item[1].count)[0] self.assertTrue(numpy.allclose(model[most_common_word], model2[most_common_word])) diff --git a/gensim/test/word2vecmodel_python_2_7 b/gensim/test/word2vecmodel_python_2_7 index c95899af8e180bec8b52d930b2889d4f528780af..bf73d4c63d9591ad61d47699770452087ad1ad1b 100644 GIT binary patch literal 5750 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 CuT_lz literal 13670 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 bET@0%(|@Z)olVxuFor(JZCoAVto8o@H7*@K diff --git a/gensim/test/word2vecmodel_python_3_5 b/gensim/test/word2vecmodel_python_3_5 index fb4e5d6b1cb17c094864c77df91f036600b617c4..b9a30df521609390f0526a1196d182ad0257beb7 100644 GIT binary patch literal 8259 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 h-zX)%TP#a_6I(}wrBQzI$