Acora

צילום מסך תוכנה:
Acora
פרטי תוכנה:
גרסה: 1.8
טען תאריך: 11 May 15
מפתחים: Stefan Behnel
רשיון: ללא תשלום
פופולריות: 8

Rating: 3.0/5 (Total Votes: 1)

acora הוא 'fgrep' לפייתון, מנוע חיפוש טקסט רב-מילות מפתח מהיר.
בהתבסס על קבוצה של מילות מפתח, שהוא מייצר אוטומט חיפוש (DFA) ומפעיל אותו על קלט מחרוזת, או Unicode או בתים.
Acora מבוסס על אלגוריתם אהו-Corasick ובניית Powerset NFA לDFA.
Acora מגיע עם שתי יישום פייתון טהור ומודול בינארי מהיר נכתב בCython.
כיצד אוכל להשתמש בו?
לייבא את החבילה:
>>> מAcoraBuilder יבוא acora
לאסוף כמה מילות מפתח:
>>> בונה = AcoraBuilder ('לפני הספירה' 'ab', 'דה')
>>> Builder.add ('', ב ')
צור מנוע חיפוש acora לקבוצה הנוכחית של מילות המפתח:
>>> AC = builder.build ()
חיפוש מחרוזת לכל המופעים:
>>> Ac.findall ('abc')
[(, 0 ''), ("ab", 0), (ב ', 1), (' לפני הספירה ", 1)]
>>> Ac.findall ("עבד ')
[(, 0 ''), ("ab", 0), (ב ', 1), (' דה ', 2)]
לחזר על תוצאות החיפוש כפי שהם באים ב:
>>> לקילוואט, קופה בac.finditer ("עבד '):
... הדפסה ("2s% [% d]"% (כ"ס, POS))
& Nbsp; [0]
ab [0]
& Nbsp; ב [1]
דה [2]
שאלות נפוצות ומתכונים
1. איך אני מפעיל את חיפוש חמדנים למילות מפתח ההתאמה הארוכה ביותר?
& Nbsp; >>> בונה = AcoraBuilder (, "ab '' ',' abc ')
& Nbsp; >>> AC = builder.build ()
& Nbsp; >>> לקילוואט, קופה בac.finditer ('abbabc'):
& Nbsp; ... הדפסה (כ"ס)
& Nbsp;
& Nbsp; ab
& Nbsp;
& Nbsp; ab
& Nbsp; abc
& Nbsp; >>> מitertools לייבא את חוליה ב
& Nbsp; >>> מitemgetter יבוא המפעיל
& Nbsp; >>> def longest_match (משחקים):
& Nbsp; ... לקופה, match_set בחוליה ב( גפרורים, itemgetter (1)):
& Nbsp; ... מקסימום תשואה (match_set)
& Nbsp; >>> לקילוואט, קופה בlongest_match (ac.finditer ('abbabc')):
& Nbsp; ... הדפסה (כ"ס)
& Nbsp; ab
& Nbsp; abc
2. איך אני לנתח את השורה אחר שורה, כfgrep עושה, אבל עם קצות קו שרירותיים?
& Nbsp; >>> def group_by_lines (ים, * מילות מפתח):
& Nbsp; ... בונה = AcoraBuilder ('r ', ' n ", * מילות מפתח)
& Nbsp; ... AC = builder.build ()
& Nbsp; ...
& Nbsp; ... current_line_matches = []
& Nbsp; ... last_ending = אין
& Nbsp; ...
& Nbsp; ... לקילוואט, קופה בac.finditer (ים):
& Nbsp; ... אם קילוואט ב'n r ':
& Nbsp; ... אם last_ending == ' r "וק"ו ==' n ':
& Nbsp; ... להמשיך # בשילוב CRLF
& Nbsp; ... tuple תשואה (current_line_matches)
& Nbsp; ... דל current_line_matches [:]
& Nbsp; ... = ק"ו last_ending
& Nbsp; ... אחר:
& Nbsp; ... last_ending = אין
& Nbsp; ... current_line_matches.append (כ"ס)
& Nbsp; ... tuple תשואה (current_line_matches)
& Nbsp; >>> kwds = [, 'לפני הספירה' 'ab', 'דה']
& Nbsp; >>> להתאמות בgroup_by_lines (" r r NBC r ndede n ללכוד את ', * kwds):
& Nbsp; ... הדפסה (גפרורים)
& Nbsp; ()
& Nbsp; ()
& Nbsp; ('לפני הספירה ",)
& Nbsp; ('דה', 'דה')
& Nbsp; ()
& Nbsp; ("ab",)

תכונות :

    • עובד עם מחרוזות Unicode ומחרוזות בתים
    • על 2-3x מהר ככל ביטוי המנוע הרגיל של פייתון עבור רוב הקלט
    • מוצא חופף גפרורים, כלומר כל המשחקים של כל מילות המפתח
    • תמיכה בחיפוש חסר רגישות מקרה (~ 10x מהר ככל 'מחדש')
    • משחרר GIL תוך חיפוש
    • נוסף יישום פייתון טהור (איטי אך קצר)
    • תמיכה בפייתון 2.5+ ו3.x
    • תמיכה לחיפוש בקבצים
    • רישיון BSD מתירני

    מה חדש בהודעה זו :

    • תמיכה חמוץ למנועי חיפוש שנבנה מראש
    • >
    • optimisations ביצועים בבונה
    • ניתוח Unicode הוא מותאם לפייתון 3.3, ומאוחר יותר
    • כבר לא מבצע הידור מחדש של מקורות כאשר Cython מותקן, אלא אם כן --with-cython אפשרות מועברת לsetup.py (דורש Cython 0.20 +)
    • לבנות נכשל עם גרסאות Cython האחרונות
    • נבנה באמצעות Cython 0.20.1

    מה חדש בגרסה 1.6:

    • בניין באופן משמעותי מהר יותר אוטומט
    • כבר לא כולל ריפו .hg בהפצת מקור
    • נבנה באמצעות Cython 0.15 (rc0)

    מה חדש בגרסת 1.5:

    • בניית NFS-2-DFA Cython הידור פועלת באופן משמעותי מהר יותר
    • תמיד לבנות מודולים סיומת גם אם Cython אינו מותקנת
    • - לא לקמפל מתג בsetup.py למנוע בניית מודול הרחבה
    • נבנה באמצעות Cython 0.14.1 (RC2)

    מה חדש בגרסת 1.4 :

    • מהיר עד קטין במנוע חיפוש לולאה פנימית
    • >
    • כמה ניקוי קוד
    • נבנה באמצעות Cython 0.12.1 (סופיים)

    דרישות :

    • פייתון

  • תגובות ל Acora

    תגובות לא נמצא
    להוסיף הערה
    הפעל את התמונות!