Exemplo n.º 1
0
 def __call__(self, request, *args, **kwargs):
     c = {}
     if request.method == "POST":
         form = SulciForm(request.POST)
         if form.is_valid():
             db_name = form.cleaned_data["corpus"]
             with UseDB(db_name):
                 t1 = time.time()
                 content = form.cleaned_data["content"]
                 limit = form.cleaned_data["limit"]
                 min_score = form.cleaned_data["min_score"]
                 if form.cleaned_data["debug"]:
                     debug = []
                     handler = MemoryStorageHandler(10, target=debug)
                     formatter = HTMLColorFormatter("%(message)s")
                     handler.setFormatter(formatter)
                     sulci_logger.addHandler(handler)
                 S = SemanticalTagger(content)
                 descriptors = [
                     (unicode(d), round(score, 2))
                     for d, score in S.get_descriptors(min_score)[:limit]
                 ]
                 if form.cleaned_data['keyentities']:
                     sorted_ke = sorted(
                         S.keyentities,
                         key=lambda k: k.frequency_relative_pmi_confidence,
                         reverse=True)
                     keyentities = [
                         (unicode(k),
                          round(k.frequency_relative_pmi_confidence * 100,
                                2)) for k in sorted_ke
                     ]
                 else:
                     keyentities = None
                 c = {
                     "descriptors": descriptors,
                     "keyentities": keyentities,
                 }
                 if form.cleaned_data["debug"]:
                     S.debug()
                     handler.flush()
                     c["debug"] = [handler.format(d) for d in debug]
                 t2 = time.time()
                 c['time'] = round(t2 - t1, 2)
         else:
             c = {'errors': form.errors}
     else:
         form = SulciForm()
         for field_name, field in form.fields.iteritems():
             c[field_name] = field.help_text
     return HttpResponse(json.dumps(c), content_type="application/json")
Exemplo n.º 2
0
 def handle(self, *args):
     if not self.PK:
         sulci_logger.info(u"A PK is needed. Use -k xxx", "RED")
     else:
         C = Corpus()
         L = Lexicon()
         P = PosTagger(lexicon=L)
         M = Lemmatizer(L)
         a = config.content_model_getter(self.PK)
         t = getattr(a, config.SULCI_CONTENT_PROPERTY)
         T = Thesaurus()
         S = SemanticalTagger(t, T, P, lexicon=L)
         if __debug__:
             S.debug()
         sulci_logger.info(u"Scored descriptors", "YELLOW", True)
         for d, value in S.descriptors:
             sulci_logger.info(u"%s %f" % (unicode(d), value), "BLUE")
         
     if self.IPDB:
         import ipdb; ipdb.set_trace()