#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.