Acora

Screenshot Software:
Acora
Szczegóły programowe:
Wersja: 1.8
Filmu: 11 May 15
Wywoływacz: Stefan Behnel
Licencja: Wolny
Popularność: 10

Rating: 3.0/5 (Total Votes: 1)

Acora jest "fgrep" dla Pythona, szybko wielu słów kluczowych wyszukiwarce tekst.
W oparciu o zestaw słów kluczowych, generuje automat wyszukiwania (DFA) i uruchamia go na wejściu strun, albo Unicode lub bajtów.
Acora opiera się na algorytmie Aho-Corasick i konstrukcji POWERSET NFA-to-DFA.
Acora jest wyposażony zarówno w czystym Pythonie i wdrożenie modułu binarnego szybko napisany w Cython.
Jak go używać?
Zaimportować pakiet:
>>> Z importu AcoraBuilder acora
Zdobywaj słowa kluczowe:
>>> Builder = AcoraBuilder ("ab", "bc", "de")
>>> Builder.add ("a", "b")
Generowanie wyszukiwarkę Acora dla bieżącego zestawu słów kluczowych:
>>> Ac = builder.build ()
Szukaj ciąg dla wszystkich zdarzeń:
>>> Ac.findall ('abc')
[('', 0), ("ab", 0), ('b', 1), ('bc', 1)]
>>> Ac.findall ("ABDE")
[('', 0), ("ab", 0), ('b', 1), ("de", 2)]
Iteracyjnego wyniki wyszukiwania, ponieważ są w:
>>> Dla kw, poz w ac.finditer ("ABDE"):
... Print ("% 2s [% d]"% (kw, poz))
& Nbsp; [0]
ab [0]
& Nbsp; b [1]
de [2]
FAQ i recepty
1. W jaki sposób uruchomić chciwy wyszukać najdłuższych pasujące słów kluczowych?
& Nbsp; >>> builder = AcoraBuilder ('', 'ab', 'abc')
& Nbsp; >>> ac = builder.build ()
& Nbsp; >>> dla kw, poz w ac.finditer ("abbabc"):
& Nbsp; ... print (kw)
& Nbsp;
& Nbsp; ab
& Nbsp;
& Nbsp; ab
& Nbsp; abc
& Nbsp; >>> z itertools importować GroupBy
& Nbsp; >>> od operatora importu itemgetter
& Nbsp; >>> def longest_match (mecze):
& Nbsp; ... w poz, match_set w GroupBy (mecze, itemgetter (1)):
& Nbsp; ... Wydajność max (match_set)
& Nbsp; >>> dla kw, poz w longest_match (ac.finditer ("abbabc ')):
& Nbsp; ... print (kw)
& Nbsp; ab
& Nbsp; abc
2. Jak analizować linijka po linii, jak fgrep robi, ale z dowolnych zakończeń linii?
& Nbsp; >>> def group_by_lines (s, * keywords):
& Nbsp; ... builder = AcoraBuilder (' r', ' n', * słowa kluczowe)
& Nbsp; ... ac = builder.build ()
& Nbsp; ...
& Nbsp; ... current_line_matches = []
& Nbsp; ... last_ending = None
& Nbsp; ...
& Nbsp; ... dla kw, poz w ac.finditer (ów):
& Nbsp; ... jeśli kw w ' r n ":
& Nbsp; ... jeśli last_ending == ' r' i kw == ' n':
& Nbsp; ... dalej # połączeniu CRLF
& Nbsp; ... Wydajność krotka (current_line_matches)
& Nbsp; ... del current_line_matches [:]
& Nbsp; ... last_ending = kw
& Nbsp; ... jeszcze:
& Nbsp; ... last_ending = None
& Nbsp; ... current_line_matches.append (kw)
& Nbsp; ... Wydajność krotka (current_line_matches)
& Nbsp; >>> kwds = ['ab', 'bc', 'de']
& Nbsp; >>> mecze w group_by_lines (" r r NBC r ndede n ', * NAB kwds):
& Nbsp; ... druku (mecze)
& Nbsp; ()
& Nbsp; ()
& Nbsp; ('bc',)
& Nbsp; ("de", "de")
& Nbsp; ()
& Nbsp; ("ab")

Opis :

  • pracuje z Unicode i ciągi bajtów
  • o 2-3x tak szybko, jak wyrażenie regularne silnika Pythona dla większości wejścia
  • znajdzie nakładających mecze, czyli wszystkie mecze z wszystkich słów kluczowych
  • Wsparcie dla rozpoznawania wielkości liter (~ 10x wyszukiwania tak szybko, jak "ponownie")
  • uwalnia GIL podczas wyszukiwania
  • dodatkowe (powolny, ale krótka) czysta implementacja Pythona,
  • Wsparcie dla Pythona 2.5+ 3.x
  • Wsparcie dla wyszukiwania w plikach
  • liberalna licencja BSD

Co nowego w tym wydaniu:

  • Wsparcie Marynata do gotowych wyszukiwarek
  • optymalizacje wydajności w budowniczy
  • parsowanie Unicode jest zoptymalizowany dla Pythona 3.3, a później
  • nie rekompiluje źródeł gdy jest zainstalowany Cython, chyba --with-Cython opcja jest przekazywana do setup.py (wymaga Cython 0,20 +)
  • budowa nie powiodło się z ostatnimi wersjami Cython
  • zbudowany przy użyciu Cython 0.20.1

Co nowego w wersji 1.6:

  • znacznie szybciej automatem budynek
  • nie zawiera już .hg repo w dystrybucji źródłowej
  • zbudowany przy użyciu Cython 0,15 (RC0)

Co nowego w wersji 1.5:

  • Konstrukcja Cython skompilowany 2-NFS działa znacznie szybciej DFA
  • zawsze budowania modułów rozszerzających, nawet jeśli nie jest zainstalowany Cython
  • - no-kompilacji przełącznik w setup.py zapobiec moduł rozszerzający budynek
  • zbudowany przy użyciu Cython 0.14.1 (RC2)

Co nowego w wersji 1.4:

  • niewielkie prędkości w pętli wewnętrznej wyszukiwarki
  • cleanupie
  • zbudowany przy użyciu Cython 0.12.1 (końcowe)

Wymagania :

  • Python

Komentarze do Acora

Komentarze nie znaleziono
Dodaj komentarz
Włącz zdjęć!