Применить FuzzyLogic к очень большому файлу

#python #fuzzy-logic #fuzzywuzzy #fuzzy-comparison

#python #нечеткая логика #fuzzywuzzy #нечеткое сравнение

Вопрос:

Привет, я пытаюсь применить fuzzylogic для сравнения строк из двух разных файлов. Этот код отлично работает для небольших наборов данных. Но я сталкиваюсь с проблемами с памятью, когда пытаюсь применить тот же код к большому набору данных. Когда я запускаю код, он говорит Low memory Unable to create 6.6GB array .

 from fuzzywuzzy import fuzz
from fuzzywuzzy import process
import difflib
import pandas as pd

df_To_beMatched = pd.read_excel('Vendor_file.xlsx', encoding='utf-8', usecols=["VENDOR_NAME"])
df_To_beMatched['VENDOR_NAME'] = df_To_beMatched['VENDOR_NAME'].fillna('')
original_list = df_To_beMatched['VENDOR_NAME'].tolist()
# print(original_list)

df_exceptionlist = pd.read_excel('Exceptionfile.xlsx', encoding='utf-8', usecols=["Entity_Name"])
df_exceptionlist['Entity_Name'] = df_exceptionlist['Entity_Name'].fillna('')
exception_list = df_exceptionlist['Entity_Name'].tolist()

# print(exception_list)

result = []
result_difflib = []
for exp in exception_list:
    to_delete = exp
    for orig in original_list:
        original = orig
        # print(to_delete, original)
        ratio = fuzz.ratio(to_delete, original)
        token = fuzz.token_set_ratio(to_delete, original)
        partial_ratio = fuzz.partial_ratio(to_delete, original)
        # print(ratio, to_delete, original)
        if ratio > 75 and token > 75 and partial_ratio > 85:
            print(ratio, to_delete, original)
            result.append({'Entity_Name': to_delete, 'VENDOR_NAME': original, 'Ratio': ratio, 'Token': token,
                           'Status': 'Match'})
            break

    difflib_result = difflib.get_close_matches(to_delete, original_list)
    matches = "^".join(difflib_result)
    result_difflib.append({'Entity_Name': to_delete, 'Matches': matches})

    fuzzy_df = pd.DataFrame(result)

    fuzzy_df.to_csv('FuzzyLogic_Results.csv', index=False)


  

Комментарии:

1. Не могли бы вы уточнить, какие проблемы с памятью возникают, чтобы увеличить вероятность того, что кто-то ответит на ваш вопрос?

2. Я получаю сообщение об ошибке, в котором не удается создать массив объемом 6,6 ГБ из-за нехватки памяти.

3. Я добавил информацию в тело вопроса. Однако я заметил, что на ваш вопрос уже был дан ответ в Data Science Stack Exchange.