Python e algoritmo tfidf, tornam mais rápido?
Estou implementando o tf-idflgoritmo @ em um aplicativo Web usando Python, no entanto, é extremamente lento. O que eu basicamente faço é:
1) Crie 2 dicionários:
Primeiro dicionário: chave (ID do documento), valor (lista de todas as palavras encontradas (incl. Repetidas) no documento)egundo dicionário; chave (ID do documento), valor (conjunto que contém palavras exclusivas do documento)Agora, há uma petição de um usuário para obter os resultados do documento d. O que eu faço é:
2) Passe o loop sobre as palavras exclusivas do segundo dicionário para o documento d e para cada palavra exclusiva que obtemos:
2.1) tf score (quantas vezes w aparece em d: loop sobre a lista de palavras do primeiro dicionário do documento)
2.2) pontuação df (quantos documentos contêm w: repetindo o conjunto de palavras de todos os documentos (segundo dicionário) e verifique se w está contido). Estou usando um conjunto, pois parece ser mais rápido verificar se um conjunto contém uma palavra em comparação com uma list
@Step 2.2 é terrivelmente lento. Por exemplo, com 1000 documentos e para um documento com 2313 palavras únicas, leva cerca de 5 minutos para produzir os resultado
Existe alguma outra maneira de acelerar a etapa 2.2? Os dicionários demoram para iterar?