Я реализую алгоритм tf-idf в веб-приложении с использованием Python, однако он работает очень медленно. В основном я делаю следующее:
1) Создаю 2 словаря:
Теперь существует петиция пользователя, чтобы получить результаты tfidf документа d. Что я делаю:
2) Перебираю уникальные слова второго словаря для документа d, и для каждого уникального слова w получаю:
2.1) tf score (сколько раз w появляется в d: цикл список слов первого словаря для документа)
2.2) df score (сколько документов содержат w: цикл по множеству слов всех документов (второй словарь) и проверка, содержится ли w). Я использую набор, поскольку кажется, что он быстрее проверяет, содержит ли набор слово, по сравнению со списком.
Шаг 2.2 выполняется ужасно медленно. Например, имея 1000 документов и документ с 2313 уникальными словами, вывод результатов занимает около 5 минут.
Есть ли другой способ ускорить шаг 2.2? Неужели словари так медленно повторяются?