Я пытаюсь найти очень эффективный способ фильтрации редких слов. Этот код в настоящее время занимает 11 секунд с 2D-списком измерения 10000 x 28.
Есть идеи, как мне улучшить производительность этой задачи?
def remove_rare_terms(cluster_word_list):
flatten_list = list(itertools.chain.from_iterable(cluster_word_list))
filter_terms = [key for key, val in Counter(flatten_list).items() if val == 1]
filter_terms_set = set(filter_terms)
return [[k for k in cluster_word if k not in filter_terms_set] for cluster_word in cluster_word_list]
len(cluster_word_list)
> 10000
cluster_word_list[0:2]
> [['buzz', 'woody', 'andy', 'toy', 'lightyear', 'aside', 'afraid', 'onto', 'duo', 'happily', 'difference', 'circumstance', 'birthday', 'separate', 'room', 'brings', 'scene', 'learns', 'owner', 'eventually', 'plot', 'heart', 'put', 'place', 'lose', 'live', 'lead', 'story'],
['game', 'alan', 'jumanji', 'rhinoceros', 'risky', 'enchant', 'monkey', 'judy', 'unwittingly', 'sibling', 'finish', 'magical', 'prof', 'terrify', 'door', 'board', 'freedom', 'adult', 'invite', 'giant', 'inside', 'peter', 'room', 'creature', 'trap', 'open', 'hope', 'evil', 'discover', 'living']]