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")
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()