Acora

Motor de búsqueda de múltiples palabras clave rápido para cadenas de texto
Descargar ahora

Acora Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • BSD License
  • Precio:
  • FREE
  • Nombre del editor:
  • Stefan Behnel
  • Sitio web del editor:
  • http://behnel.de

Acora Etiquetas


Acora Descripción

Motor de búsqueda de múltiples palabras clave rápido para cadenas de texto Acora es 'Fogrep' para Python, un motor de búsqueda de texto de múltiples palabras clave. Basado en un conjunto de palabras clave, genera un autómata de búsqueda (DFA) y la ejecuta sobre la entrada de cadena, ya sea unicode o bytes.acora se basa en la AHO -Corasick Algorithm y una construcción de Powerset Powerset NFA-TO-DFA.acora viene con una implementación python pura y un módulo binario rápido escrito en cython. ¿Cómo lo uso? Importar el paquete: >>> desde Acora Import AcorabuilectCollect algunas palabras clave: >>> Builder = Acorabuilder ('AB', 'BC', 'DE') >>> BUILDER.ADD ('A', 'B') Genere el motor de búsqueda Acora para el conjunto de palabras clave actual: >>> AC = BUILDER.BUILD () Busque una cadena para todas las apariciones: >>> ac.findall ('abc') >>> ac.findall (' abde ') Iterar en los resultados de búsqueda a medida que entran: >>> para kW, POS en ac.finditer ('abde'): ... imprimir ("% 2s "% (kW, pos)) a ab b de Preguntas frecuentes y recetas1. ¿Cómo ejecuto una búsqueda codiciosa de las palabras clave que coincidentes más largas? >>> Builder = Acorabuilder ('a', 'ab', 'abc') >>> ac = builder.build () >>> para kw, POS en ac.finditer ('abbabc'): ... Imprimir (kW) A AB AB ABC >>> de ITERTOOLS Importar groupby >>> desde Operator Import IttemGetter >>> Def Longest_match (coincidencias): ... para POS, Match_Set en Groupby (coincidencias, ItemGetter (1)) :. .. Rendimiento MAX (Match_Set) >>> Para KW, POS en Longest_Match (AC.FINDITER ('abbabc')): ... Imprimir (kW) ab ABC2. ¿Cómo se analiza la línea por línea, como lo hace FGREP, pero con las terminaciones de línea arbitraria? >>> def group_by_lines (s, * palabras clave): ... Builder = Acorabuilder ('\ R', '\ n', * Palabras clave) ... AC = Builder.Build () ... ... Current_line_matches = [] ... last_ending = Ninguno ... ... para KW, POS en AC.FINDITER (s): ... Si kw en '\ r \ n': ... si last_ending == '\ r' y kw == '\ n': ... Continúe # CRLF combinado ... Rendimiento Tuple (Current_Line_Matches) ... del actual_line_matches ... last_ending = kw ... desarlate: ... last_ending = Ninguno. .. current_line_matches.append (kW) ... producir tuple (current_line_matches) >>> kwds = >>> para coincidencias en group_by_lines ('a \ r \ r \ nbc \ r \ ndede \ n \ nab ', * kwds): ... Imprimir (coincidencias) () () (' bc ',) (' de ',' de ') () (' ab ',) aquí son Algunas características clave de "Acora": · Funciona con cadenas de Unicode y cadenas de byte. · Alrededor de 2-3x tan rápido como el motor de expresión regular de Python para la mayoría de las entradas · Encuentra coincidencias superpuestas, es decir, todos los coincidencias de todas las palabras clave · Soporte para la búsqueda insensible de la caja (~ 10x tan rápido como 're') · Libera el gil mientras busca · Implementación adicional (lenta pero corta) python pura · Soporte para Python 2.5+ y 3.x · Soporte para la búsqueda en archivos. · Licencia de BSD permisiva Requisitos: · Python ¿Qué hay de nuevo en este lanzamiento: · Aceleración menor en lazo de motor de búsqueda interno · Alguna limpieza del código · Construido usando Cython 0.12.1 (Final)


Acora Software relacionado