Я хочу сделать функцию кэшируемой, но в аргументы функции мне нужно включить csr_matrix (датафрейм, векторизованный через модель CountVectorizer), но я знаю, что csr_matrix - это тип, который не подлежит хэш-обработке, и я не знаю, как создать хеш-ключж / чср матрица.Кто-нибудь может мне помочь?
Представьте себе функцию (исходная функция слишком велика для контекста: P):
@cached(cache)
def similarities_betw_text(id,vectorized_data):
similarities=[]
selected_id = vectorized_data[id]
for row in vectorized_data:
similarities.append(cosine_similarity(id,vectorized_data))
return similarities
Она дает:
TypeError: unhashable тип: 'csr_matrix'
PD: Я знаю, что в документации к cachetools появляется необязательный тип dict и создается ключ, повторяющийся над элементами с кортежем:
@cached(LRUCache(maxsize=128))
def foo(x, y, z, env={}):
pass
def envkey(*args, env={}, **kwargs):
key = hashkey(*args, **kwargs)
key += tuple(sorted(env.items()))
return key