class ClassificationService(RequestHandler):
    def initialize(self):
        #self.cache = TaxonomyCache()
        self.default_classificator = Classificator(example_taxonomy)

    def get(self):
        logging.debug("Received GET request")
        service_id = self.get_argument('service_id', default=None)
        text = self.get_argument('text')
        lang = self.get_argument('lang', default=None)
        taxonomy = self.get_argument('taxonomy', default=None)
        if taxonomy:
            taxonomy = json.loads(taxonomy)
            classificator = Classificator(taxonomy)
        else:
            classificator = self.default_classificator
        classification = classificator.classify(text)
        logging.debug(classification)
        result = self.__get_concepts_from_classification(classification)
        if result:
            self.write(json.dumps(result))
        else:
            self.write(json.dumps(['N/A']))

    def post(self):
        results = list()
        logging.debug("Received POST request")
        for line in str(self.request.body, 'utf8').split('\n'):
            fields = line.split('\t')
            text = unquote_plus(unquote_plus(fields[0]))
            logging.debug("Classificating %s" % text)
            classification = self.default_classificator.classify(text)
            result = {
                "text": text,
                "topics":
                self.__get_concepts_from_classification(classification)
            }
            results.append(result)
        self.write({"response": results})

    def __get_concepts_from_classification(self, classification):
        unique_concepts = set()
        for word, concepts in classification.items():
            unique_concepts |= set(concepts)
        return list(unique_concepts)

    def __format_post_classification(self, classification):
        concepts = self.__get_concepts_from_classification(classification)
        if concepts:
            return ';;'.join(concepts)
        else:
            return 'N/A'
class ClassificationService(RequestHandler):

    def initialize(self):
        #self.cache = TaxonomyCache()
        self.default_classificator = Classificator(example_taxonomy)

    def get(self):
        logging.debug("Received GET request")
        service_id = self.get_argument('service_id', default=None)
        text = self.get_argument('text')
        lang = self.get_argument('lang', default=None)
        taxonomy = self.get_argument('taxonomy', default=None)
        if taxonomy:
            taxonomy = json.loads(taxonomy)
            classificator = Classificator(taxonomy)
        else:
            classificator = self.default_classificator
        classification = classificator.classify(text)
        logging.debug(classification)
        result = self.__get_concepts_from_classification(classification)
        if result:
            self.write(json.dumps(result))
        else:
            self.write(json.dumps(['N/A']))

    def post(self):
        results = list()
        logging.debug("Received POST request")
        for line in str(self.request.body, 'utf8').split('\n'):
            fields = line.split('\t')
            text = unquote_plus(unquote_plus(fields[0]))
            logging.debug("Classificating %s" % text)
            classification = self.default_classificator.classify(text)
            result = {"text":text, "topics":self.__get_concepts_from_classification(classification)}
            results.append(result)
        self.write({"response":results})

    def __get_concepts_from_classification(self, classification):
        unique_concepts = set()
        for word, concepts in classification.items():
            unique_concepts|=set(concepts)
        return list(unique_concepts)

    def __format_post_classification(self, classification):
        concepts = self.__get_concepts_from_classification(classification)
        if concepts:
            return ';;'.join(concepts)
        else:
            return 'N/A'
 def get(self):
     logging.debug("Received GET request")
     service_id = self.get_argument('service_id', default=None)
     text = self.get_argument('text')
     lang = self.get_argument('lang', default=None)
     taxonomy = self.get_argument('taxonomy', default=None)
     if taxonomy:
         taxonomy = json.loads(taxonomy)
         classificator = Classificator(taxonomy)
     else:
         classificator = self.default_classificator
     classification = classificator.classify(text)
     logging.debug(classification)
     result = self.__get_concepts_from_classification(classification)
     if result:
         self.write(json.dumps(result))
     else:
         self.write(json.dumps(['N/A']))
 def get(self):
     logging.debug("Received GET request")
     service_id = self.get_argument('service_id', default=None)
     text = self.get_argument('text')
     lang = self.get_argument('lang', default=None)
     taxonomy = self.get_argument('taxonomy', default=None)
     if taxonomy:
         taxonomy = json.loads(taxonomy)
         classificator = Classificator(taxonomy)
     else:
         classificator = self.default_classificator
     classification = classificator.classify(text)
     logging.debug(classification)
     result = self.__get_concepts_from_classification(classification)
     if result:
         self.write(json.dumps(result))
     else:
         self.write(json.dumps(['N/A']))