Поиск строки Benmark Time Python - PullRequest
0 голосов
/ 06 ноября 2019

Для моего проекта я хочу написать программу, которая ищет слово в строковом / длинном документе на python. Если слово отсутствует в строке / документе, я должен искать приблизительные совпадения.

Например, слово «мозг», «Исключения: дождь бейн брин бран отрубей». Замены: тренируй зерна Блейн Брайн ... У меня уже есть функция удаления и замены, но я не уверен, как искать слово в среде исполнения Brute Force / Benchmark Runtime

string = "hereharewereworeherareteartoredeardareearrearehrerheasereseersearrah"
# the string can be much longer
Pattern = "ware"
# the output should have 4 deletion and 6 subtitutions


#string0 is Pattern, string1 is the word we compare, if it is the type, append to the list 
Deletions = []
def deletions(string0, string1):
    deletionlist = []
    #append list of deletion word
    for i in range(len(string0)):
        deletionlist.append(string0.replace(string0[i], ""))
        #delete first string and last

    if string1[1:] in deletionlist:
            Deletions.append(string1[1:])
            return 1

    elif string1[:-1] in deletionlist:
        if len(string1[:-1]) == 1:

            Deletions.append(string1[:-1])
            return 1

Substitutions = []
def subsitutions(string0, string1):
    if len(string0) == len(string1):
        sublist = []
        #append list of deletion word
        for i in range(len(string0)):
            sublist.append(string0.replace(string0[i], ""))
        for j in range(len(string1)):
            if string1.replace(string1[j], "") in sublist:
                Substitutions.append(string1)
                break

1 Ответ

0 голосов
/ 06 ноября 2019

Лучшим является алгоритм Левенштейна, вы можете рассчитать расстояние между 2 словами или предложениями (сколько замен символов требуется для преобразования одного в другое) или коэффициент подобия, если вам нравится:

>>> import Levenshtein
>>> Levenshtein.distance( 'hello, guys', 'hello, girls' )
3
>>> Levenshtein.ratio( 'hello, guys', 'hello, girls' )
0.782608695652174

Выможете проверить детали реализации и другую информацию здесь: https://en.wikipedia.org/wiki/Levenshtein_distance

...