Есть 1000 ключевых фраз, максимум 5-6 слов. Есть так-же 20 тысяч статей, в которых эти фразы разбавлены. Нужно каждой фразе подобрать пару, т.е. ту статью, которая более всех остальных использует эту фразу.
Написал функцию, которая сначала разбивает все фразы на слова, удаляет дубликаты и заносит в dict в таком формате - {фраза:ключ.слова}. Далее поочередно берется каждая статься, разбивается на слова и методом левинштейна рассчитывает схожесть каждого ключ.слова с словом из статьи, общее кол-во суммируется и складывается в список, а когда все тексты обработаны выбирается тот, что набрал макс. кол-во очков и таким образом находится пара.
Эта функция работает слишком медленно - я ставил обработку текстов в multiproccecing.pool и выходило максимум 3-4 статьи в секунду. А мне нужно всего обработать 20к * 1000 = 20млн раз, и это минут за 15 максимум.
Помогите пожалуйста.