Acora

Tela Software:
Acora
Detalhes de Software:
Versão: 1.8
Data de upload: 11 May 15
Revelador: Stefan Behnel
Licença: Livre
Popularidade: 8

Rating: 3.0/5 (Total Votes: 1)

Acora é 'fgrep' para Python, um multi-palavra-chave motor de busca de texto rápida.
Com base em um conjunto de palavras-chave, ele gera um autômato pesquisa (DFA) e executa-lo sobre a entrada seqüência de caracteres, ou unicode ou bytes.
Acora baseia-se no algoritmo Aho Corasick e uma construção powerset NFA-a-DFA.
Acora vem com uma implementação Python puro e um módulo binário rápido escrito em Cython.
Como posso usá-lo?
Importe o pacote:
>>> From acora importação AcoraBuilder
Coletar algumas palavras-chave:
>>> Construtor = AcoraBuilder ('ab', 'bc', 'de')
>>> Builder.add ('a', 'b')
Gerar o motor de busca Acora para o conjunto de palavras-chave atual:
>>> Ac = builder.build ()
Pesquisar uma seqüência de caracteres para todas as ocorrências:
>>> Ac.findall ('abc')
[('Um', 0), ('ab', 0), ('b', 1), ('bc', 1)]
>>> Ac.findall ('abde')
[('A', 0), ('ab', 0), ('b', 1), ('de', 2)]
Iterar sobre os resultados da pesquisa como eles vêm em:
>>> For kw, pos em ac.finditer ('abde'):
... Print ("% 2s [% d]"% (kw, pos))
& Nbsp; a [0]
ab [0]
& Nbsp; b [1]
de [2]
FAQs e receitas
1. Como faço para executar uma busca ávida por palavras-chave mais longos de harmonização?
& Nbsp; >>> construtor = AcoraBuilder ('a', 'ab', 'abc')
& Nbsp; >>> ac = builder.build ()
& Nbsp; >>> for kw, pos em ac.finditer ('abbabc'):
& Nbsp; ... print (kw)
& Nbsp; a
& Nbsp; ab
& Nbsp; a
& Nbsp; ab
& Nbsp; abc
& Nbsp; >>> from itertools importar groupby
& Nbsp; >>> from operador de importação itemgetter
& Nbsp; >>> def longest_match (partidas):
& Nbsp; ... para pos, match_set em groupby (partidas, itemgetter (1)):
& Nbsp; ... rendimento max (match_set)
& Nbsp; >>> for kw, pos em longest_match (ac.finditer ('abbabc')):
& Nbsp; ... print (kw)
& Nbsp; ab
& Nbsp; abc
2. Como eu analisar linha por linha, como fgrep faz, mas com terminações de linha arbitrários?
& Nbsp; >>> def group_by_lines (s *, palavras-chave):
& Nbsp; ... construtor = AcoraBuilder (' r', ' n', * palavras-chave)
& Nbsp; ... ac = builder.build ()
& Nbsp; ...
& Nbsp; ... current_line_matches = []
& Nbsp; ... last_ending = None
& Nbsp; ...
& Nbsp; ... para kw, pos em ac.finditer (s):
& Nbsp; ... se kw em ' r n':
& Nbsp; ... se last_ending == ' r' e kw == ' n':
& Nbsp; ... continuar # combinado CRLF
& Nbsp; ... tupla rendimento (current_line_matches)
& Nbsp; ... del current_line_matches [:]
& Nbsp; ... last_ending = kw
& Nbsp; ... else:
& Nbsp; ... last_ending = None
& Nbsp; ... current_line_matches.append (kw)
& Nbsp; ... tupla rendimento (current_line_matches)
& Nbsp; >>> kwds = ['ab', 'bc', 'de']
& Nbsp; >>> para partidas em group_by_lines ('a r r NBC r ndede n nab', * kwds):
& Nbsp; ... impressão (partidas)
& Nbsp; ()
& Nbsp; ()
& Nbsp; ('bc',)
& Nbsp; ('de', 'de')
& Nbsp; ()
& Nbsp; ('ab',)

Recursos :

  • trabalha com strings unicode e cadeias de bytes
  • cerca de 2-3x tão rápido como mecanismo de expressões regulares do Python para a maioria de entrada
  • encontra sobreposição de jogos, ou seja, todos os jogos de todas as palavras-chave
  • Suporte para o caso de busca insensível (~ 10 vezes mais rápido que 're')
  • libera a GIL, enquanto busca
  • adicional (lento, mas curto) implementação Python puro
  • suporte para Python 2.5+ e 3.x
  • suporte para procurar em arquivos
  • licença BSD permissiva

O que é novo nesta versão:

  • Suporte pickle para os motores de busca pré-construídos
  • otimizações de desempenho no construtor
  • parsing Unicode é otimizado para Python 3.3 e posteriores
  • não recompila fontes Cython quando é instalado, a menos que a opção --with-Cython é passado para setup.py (requer Cython 0.20 +)
  • compilação falhou com versões recentes Cython
  • construído usando Cython 0.20.1

O que é novo na versão 1.6:

  • edifício substancialmente mais rápido autômato
  • não inclui mais repo .hg na distribuição fonte
  • construído usando Cython 0,15 (RC0)

O que é novo na versão 1.5:

  • Cython compilado construção NFS-2-DFA corre substancialmente mais rápida
  • sempre construir os módulos de extensão mesmo se Cython não está instalado
  • - no-compilar interruptor em setup.py para evitar edifício módulo de extensão
  • construído usando Cython 0.14.1 (RC2)

O que é novo na versão 1.4:

  • menor aumento de velocidade em circuito interno motor de busca
  • alguma limpeza
  • construído usando Cython 0.12.1 (final)

Requisitos :

  • Python

Comentário para Acora

Comentários não encontrado
Adicionar comentário
Ligue imagens!