def analisar_criterio(): dados = get_post(request) _texto = str(dados.get("texto", "")) _criterios = str(dados.get("criterio", "")) _detalhar = str(dados.get("detalhar", "")) not in ("", "0", "False") if not _criterios: _criterios = str(dados.get("criterios", "")) #print('Texto: ', type(_texto),_texto) #print('Critério: ', type(_criterios),_criterios) pb = PesquisaBR(texto=_texto, criterios=_criterios, print_debug=False) if _detalhar: return jsonify({ 'retorno': pb.retorno(), 'criterios': pb.criterios, 'criterios_aon': pb.criterios_and_or_not, 'texto': ' '.join(pb.tokens_texto) }) return jsonify({'retorno': pb.retorno()})
def testar_criterios(): try: global EXEMPLOS title = "PesquisaBR: Análise de criterios" dados = get_post(request) texto_analise = str(dados.get("texto_analise", "")) texto_criterio = str(dados.get("texto_criterio", "")) carregar_exemplo = int(dados.get("exemplo", -1)) if carregar_exemplo >= 0 and len(EXEMPLOS) > carregar_exemplo: exemplo = EXEMPLOS[carregar_exemplo] texto_analise = exemplo['texto'] if exemplo.get( 'texto') else texto_analise texto_criterio = exemplo['criterios'] if exemplo.get( 'criterios') else texto_criterio criterio_ok = '' texto_processado = '' texto_grifado = '' criterio_processado = '' _tempo = '' if texto_analise or texto_criterio: _ini = datetime.now() pb = PesquisaBR(texto=texto_analise, criterios=texto_criterio) if texto_analise: texto_processado = ' '.join(pb.tokens_texto) if texto_criterio: criterio_processado = pb.criterios if texto_analise and texto_criterio: criterio_ok = 'SIM' if pb.retorno() else 'NAO' texto_grifado = Markup(pb.grifar_criterios(texto=texto_analise)) _tempo = round((datetime.now() - _ini).total_seconds(), 3) _tempo = f'{_tempo:.3f} s' return render_template("aplicar_criterio.html", texto_analise=texto_analise, texto_criterio=texto_criterio, criterio_ok=criterio_ok, texto_processado=texto_processado, texto_grifado=texto_grifado, criterio_processado=criterio_processado, tempo=_tempo, ativo_criterios='active', title=title, exemplos_criterios=EXEMPLOS) except TemplateNotFound as e: return render_template_string(f'Página não encontrada: {e.message}')
def regra_valida(txt_regra, rotulo): if (not txt_regra) or (txt_regra[:2] in {'r:', 'R:'}): return True pb = PesquisaBR(texto='', criterios=txt_regra) if pb.erros: print(f'**ERRO: REGRA inválida: "{rotulo}"') print(f' texto de regra: {txt_regra}') print(f' erro : {pb.erros}') return False print(f'REGRA OK: rótulo "{rotulo}" com o texto de regra: {txt_regra}') return True
def get_health(): _criterios = 'casas ADJ2 papeis PROX10 legal PROX10 seriado' _texto = 'a casa de papel é um seriado muito legal' pb = PesquisaBR(texto=_texto, criterios=_criterios, print_debug=False) if not pb.retorno(): print('\n\n') print('=========================================================') print('= ERRO NO CRITÉRIO DE PESQUISA DO HEALTH CHECK =') pb.print_resumo() print('=========================================================') print('\n\n') raise Exception( f'Health check - ERRO na avaliação do critério de pesquisa') print('\n===== HEALTH CHECK OK =====\n') return jsonify({ 'ok': True, 'criterios': pb.criterios, 'criterios_aon': pb.criterios_and_or_not, 'texto': pb.texto })
def teste_mapa(): pbmem = PesquisaBRMemSQL(db_instance=Db_Instance()) consulta = "'dano moral' adj10 estetico nao presumido" pb = PesquisaBR(criterios=consulta) mapa = pbmem.carregar_mapa(tipo_documento='diversos', id_documento=2982175) pb.novo_mapa_texto(mapa_texto=mapa) pb.print_resumo()
def testar_regras(): try: title = "PesquisaBR: Análise de regras" dados = get_post(request) #print(dados) texto_analise = str(dados.get("texto_analise", "")) texto_processado = '' carregar_exemplo = int(dados.get("exemplo", -1)) if carregar_exemplo >= 0 and len(EXEMPLOS) > carregar_exemplo: exemplo = EXEMPLOS[carregar_exemplo] texto_analise = exemplo['texto'] if exemplo.get( 'texto') else texto_analise rotulos_retornados = '' tags = str(dados.get("tags", "")) grupo = str(dados.get("grupo", "")) qtd_regras = 0 _tempo = '' rotulos_retornados = [] if texto_analise: carregar_regras() global REGRAS pb = PesquisaBR(texto=texto_analise) texto_processado = ' '.join(pb.tokens_texto) _ini = datetime.now() pbr = RegrasPesquisaBR(regras=[], print_debug=False) pbr.regras = regras_filtradas(tags_lista=tags, grupo=grupo) qtd_regras = len(pbr.regras) res = pbr.aplicar_regras(texto=texto_analise, detalhar=True) _tempo = round((datetime.now() - _ini).total_seconds(), 3) _tempo = f'{_tempo:.3f} s' rotulos_retornados = list(res.get('rotulos', [])) return render_template("aplicar_regras.html", texto_analise=texto_analise, texto_processado=texto_processado, rotulos_retornados=rotulos_retornados, qtd_regras=qtd_regras, tempo=_tempo, grupo=grupo, tags=tags, ativo_regras='active', title=title, exemplos_regras=EXEMPLOS) except TemplateNotFound as e: return render_template_string(f'Página não encontrada: {e.message}')
def analisar_criterio(): dados = get_post(request) _texto = dados.get("texto", "") _texto = _texto if type(_texto) is dict else str(_texto) _criterios = str(dados.get("criterio", "")) _detalhar = str(dados.get("detalhar", "")) not in ("", "0", "False") _grifar = str(dados.get("grifar", "")) not in ("", "0", "False") if not _criterios: _criterios = str(dados.get("criterios", "")) # critério REGEX if _criterios[:2] in {'r:', 'R:'}: pb = PesquisaBR(texto=_texto, criterios='', print_debug=False) _texto_processado = ' '.join(pb.tokens_texto) regra_ok = re.search(_criterios[2:], _texto_processado) if _detalhar: return jsonify({ 'retorno': bool(regra_ok), 'criterios': str(_criterios[2:]), 'texto': _texto_processado }) return jsonify({'retorno': bool(regra_ok)}) # critério textual pb = PesquisaBR(texto=_texto, criterios=_criterios, print_debug=False) if pb.erros: return jsonify({ 'retorno': None, 'erros': pb.erros, 'criterios': pb.criterios }) res = {'retorno': pb.retorno()} if _detalhar: if type(pb.tokens_texto) is dict: _texto_processado = { k: ' '.join(v) for k, v in pb.tokens_texto.items() } else: _texto_processado = ' '.join(pb.tokens_texto) res.update({ 'criterios': pb.criterios, 'criterios_aon': pb.criterios_and_or_not, 'texto': _texto_processado }) if _grifar: _texto_grifado = pb.grifar_criterios(_texto).replace('\n', '<br>') res['texto_grifado'] = _texto_grifado return jsonify(res)
def teste_pb_criterio(): _criterios = '((purgação adj2 mora) com ((integr$ ou tota$) com dívida ou débito ou pagamento) ou débito) e ((busca adj2 apreensao) ou 911/??69)' _texto = {'texto':'texto aqui responsabilidade civil do estado','numero':123} pb = PesquisaBR(texto=_texto, criterios=_criterios, print_debug=False) pb.print_resumo()
def teste_pb(): pb = PesquisaBR() pb.testes()