diff --git a/plsa-service/plsa/plsa.py b/plsa-service/plsa/plsa.py index a1680e6..d8499d7 100644 --- a/plsa-service/plsa/plsa.py +++ b/plsa-service/plsa/plsa.py @@ -232,6 +232,10 @@ def train(td, axis1 = range(1, len(logL) + 1) plt.plot(axis1, logL) plt.savefig(logL_pic) + with open(logL_pic[:-4]+'.txt','w') as f: + for l in logL: + f.write(str(l)) + f.write('\n') @@ -327,6 +331,10 @@ def train(self, td, Z, maxiter=maxiter2, eps=eps2, folding_in=False,beta=beta2,m plt.plot(axis1, logL_c_list) # print('logL_pic=',self.logL_pic) plt.savefig(self.logL_pic) + with open(logL_pic[:-4] + '.txt', 'w') as f: + for l in logL_c_list: + f.write(str(l)) + f.write('\n') return self.get_model() diff --git a/service_spec/topic_analysis.proto b/service_spec/topic_analysis.proto index f28dbf0..faa86e4 100644 --- a/service_spec/topic_analysis.proto +++ b/service_spec/topic_analysis.proto @@ -9,13 +9,13 @@ message PLSARequest { sint64 num_topics = 2; sint64 topic_divider = 3; sint64 maxiter = 4; - float beta = 5; + double beta = 5; } message FloatRow{ - repeated float floatRow = 1; + repeated double doubleValue = 1; } message PLSAResponse{ @@ -25,9 +25,9 @@ message PLSAResponse{ repeated string docs_list = 3; repeated string topics = 4; repeated FloatRow topicByDocMatirx = 5; - repeated float topicProbabilities = 6; - repeated float wordByTopicConditional = 7; - repeated float logLikelihoods = 8; + repeated double topicProbabilities = 6; + repeated FloatRow wordByTopicConditional = 7; + repeated double logLikelihoods = 8; } diff --git a/snet_test_client.py b/snet_test_client.py index 54023c6..0593e29 100644 --- a/snet_test_client.py +++ b/snet_test_client.py @@ -77,6 +77,12 @@ def try_plsa(): print('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^') print(resp.topicByDocMatirx) print('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^') + print(resp.topicProbabilities) + print('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^') + print(resp.wordByTopicConditional) + print('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^') + print(resp.logLikelihoods) + print('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^') diff --git a/topic_analysis_grpc.py b/topic_analysis_grpc.py index 5793b31..cea5019 100644 --- a/topic_analysis_grpc.py +++ b/topic_analysis_grpc.py @@ -89,6 +89,8 @@ def PLSA(self,request,context): topics = f.read().splitlines() topic_by_doc = [] + word_by_topic_conditional = [] + logLikelihoods = [] docs_list = [] with open(s.PLSA_PARAMETERS_PATH+'topic-by-doc-matirx.csv') as csv_file: @@ -97,19 +99,35 @@ def PLSA(self,request,context): docs_list = next(csv_reader)[1:] for row in csv_reader: - topic_by_doc.append(topic_analysis_pb2.FloatRow(floatRow=list((np.array(row[1:])).astype(np.float)))) + topic_by_doc.append(topic_analysis_pb2.FloatRow(doubleValue=list((np.array(row[1:])).astype(np.float)))) - resp = topic_analysis_pb2.PLSAResponse(status=True,message='success',docs_list=docs_list,topics=topics,topicByDocMatirx=topic_by_doc) - # resp = topic_analysis_pb2.PLSAResponse(status=True,message='success',topics=topics) + with open(s.PLSA_PARAMETERS_PATH+'topic_probability_pz','r') as f: + topic_probabilities = f.read().splitlines() + topic_probabilities = list((np.array(topic_probabilities)).astype(np.float)) - # resp = network_analytics_bipartite_pb2.BipartiteGraphResponse(status=ret[0], message=ret[1], output=graph_resp) - # - # - # print('status:',resp.status) - # print('message:',resp.message) - # print('Waiting for next call on port 5000.') + + with open(s.PLSA_PARAMETERS_PATH+'word_by_topic_conditional.csv') as csv_file: + csv_reader = csv.reader(csv_file, delimiter=',') + + for row in csv_reader: + word_by_topic_conditional.append(topic_analysis_pb2.FloatRow(doubleValue=list((np.array(row[:-1])).astype(np.float)))) + + with open(s.PLSA_PARAMETERS_PATH+'logL.txt','r') as f: + logLikelihoods = f.read().splitlines() + + logLikelihoods = list((np.array(logLikelihoods)).astype(np.float)) + + + resp = topic_analysis_pb2.PLSAResponse(status=True,message='success',docs_list=docs_list,topics=topics,topicByDocMatirx=topic_by_doc,topicProbabilities=topic_probabilities,wordByTopicConditional=word_by_topic_conditional,logLikelihoods=logLikelihoods) + + + + + print('status:',resp.status) + print('message:',resp.message) + print('Waiting for next call on port 5000.') return resp