Example #1
0
    def infer(self, document_response, tagger_model_path):
        tagger = LDATagger(tagger_model_path,
                           num_topics=config("app.max_topics"))

        topics = tagger.topics_for_document(document_response.tokens())
        topics_tokens_map = tagger.topics_to_tokens()
        tags = TagGenerator(topics_tokens_map).generate_tags(
            topics=topics, tokens=document_response.tokens())

        try:
            self.content_store_service.post_document_logical_topics_association(
                document_response.document_id(), topics, topics_tokens_map)
        except Exception as e:
            document_topic_error_msg = "Error updating content store for document with logical topics"
            logger.error(e)
            return self.error_response(document_topic_error_msg)

        try:
            self.content_store_service.post_document_tags_association(
                document_response.document_id(), tags)
        except Exception as e:
            doc_tags_error_msg = "Error updating content store with Document Tags"
            logger.error(e)
            return self.error_response(doc_tags_error_msg)

        return Response(status="success", message="Process Complete")
Example #2
0
    def process(self, docs_tokens_map, tagger_model_path):
        tagger = LDATagger(tagger_model_path,
                           num_topics=config("app.max_topics"))

        tagger.build_or_update_model(docs_tokens_map.values())
        docs_topics_map = tagger.topics_for_documents(docs_tokens_map)
        topics_tokens_map = tagger.topics_to_tokens()
        docs_tags_map = TagGenerator(
            topics_tokens_map).generate_documents_tag_map(
                documents_tokens_map=docs_tokens_map,
                documents_topics_map=docs_topics_map)

        try:
            self.content_store_service.post_documents_logical_topics_associations(
                docs_topics_map, topics_tokens_map)
        except Exception as e:
            document_topic_error_msg = "Error updating content store for documents with logical topics"
            logger.error(e)
            return self.error_response(document_topic_error_msg)

        try:
            self.content_store_service.post_documents_tags_associations(
                docs_tags_map)
        except Exception as e:
            docs_tags_error_msg = "Error updating content store with Documents' Tags"
            logger.error(e)
            return self.error_response(docs_tags_error_msg)

        return Response(status="success", message="Process Complete")
Example #3
0
        def wrapper(*args, **kwargs):
            handler = args[0]

            self.executor.submit(partial(f, *args, **kwargs))
            self.logger.debug("Writing Async Response for %s" %
                              handler.__class__)
            handler.write(
                Response(message="Successfully received request for %s" %
                         handler.__class__).to_json())
            handler.set_header("Content-Type", "application/json")
            handler.finish()
Example #4
0
    def post(self):
        """
            Accepts a request with json as below:
            {
                "resources" : [resource1,resource2..]
                "callback_url": "callback url"
            }

            resource = {
                "id": sha123,
                "field1" : {
                    "value": bla,
                    "weight" : optional
                },
                "field2" : {
                    "value": bla bla,
                    "weight" : 2
                }
            }
        """
        logger.info(
            "Request Received to calculate similarity between resources")

        parameters = json.loads(self.request.body)
        HEADERS = {'Content-Type': 'application/json'}

        callback_url = parameters["callback_url"]
        try:
            logger.info("Sample resource in request [%s]" %
                        (parameters["resources"][0]))
            similarity_map = all_resources_similarity(
                parameters["resources"], self.similarity_threshold)
        except Exception as e:
            logger.exception("Error while computing similarity!")
            requests.post(callback_url,
                          data=Response(status="failure",
                                        message=e.message).to_json(),
                          headers=HEADERS)
        else:
            logger.info(
                "Similarity Calculation complete for resources, posting to [%s] with [%s]"
                % (callback_url, json.dumps(similarity_map)))
            requests.post(callback_url,
                          data=(json.dumps(similarity_map)),
                          headers=HEADERS)
Example #5
0
    def post(self):
        logger.info("Request Received to calculate similarity between posts")

        parameters = json.loads(self.request.body)
        HEADERS = {'Content-Type': 'application/json'}

        try:
            similarity_map = self.similarity_service.find_similarity_across(
                parameters["documents"])
        except Exception as e:
            logger.exception("Error while computing similarity!")
            requests.post(parameters["callback_url"],
                          data=Response(status="failure",
                                        message=e.message).to_json(),
                          headers=HEADERS)
        else:
            requests.post(parameters["callback_url"],
                          data=(json.dumps(similarity_map)),
                          headers=HEADERS)
Example #6
0
 def error_response(self, error_msg):
     self.set_status(httplib.INTERNAL_SERVER_ERROR)
     error_response = Response(status="failure", message=error_msg)
     self.write(error_response.to_json())
     self.set_header("Content-Type", "application/json")
Example #7
0
 def error_response(self, error_message):
     logger.error(error_message)
     return Response(status="failure", message=error_message)