Quanto tempo os classificadores scikit levam para classificar?

10

Estou planejando usar o classificador SVM (scikit linear support vector machine) para classificação de texto em um corpus composto por 1 milhão de documentos rotulados. O que pretendo fazer é que, quando um usuário digitar alguma palavra-chave, o classificador primeiro a classifique em uma categoria e, em seguida, uma consulta subsequente de recuperação de informações ocorrerá nos documentos dessa categoria. Eu tenho algumas perguntas:

  1. Como confirmo que a classificação não levará muito tempo? Não quero que os usuários gastem tempo aguardando o término de uma classificação para obter melhores resultados.
  2. O uso da biblioteca scikit do Python para sites / aplicativos da web é adequado para isso?
  3. Alguém sabe como a amazon ou o flipkart realizam a classificação nas consultas dos usuários ou usam uma lógica completamente diferente?
user3498
fonte
Você pode classificar todas as palavras-chave com antecedência e, em seguida, basta puxar a categoria do índice.
ffriend
@ffriend parece ser uma resposta para uma consulta de palavra. Mas se a consulta de pesquisa é composta por mais palavras .. ou combinações de palavras .. eu tenho que criar um índice para todas as combinações !!!
user3498
11
O SVC é rápido, portanto, se você quiser usá-lo para classificação de consulta em um aplicativo de carga moderada, ele funcionará. Mas a classificação por uma única (ou até várias palavras) é uma má ideia na maioria dos casos. Tomemos palavras ambíguas, por exemplo: e se alguma palavra pertencer a 2 categorias com muito pouca diferença de probabilidades? Você vai jogar fora apenas uma categoria um pouco menos provável da pesquisa? O que você provavelmente deseja é um termo adicional na fórmula de classificação durante a pesquisa, sem rejeitar categorias menos prováveis.
F1

Respostas:

3

A única maneira confiável de ver quanto tempo leva é codificá-lo e tentar. O treinamento levará mais tempo, e você poderá salvar seu modelo (pickle) para usá-lo mais tarde.

user1269942
fonte
3

Não vejo um grande problema aqui. Então, eu tentaria responder a todas as suas perguntas do ponto de vista do nível de produção:

Como confirmo que a classificação não levará muito tempo?

Pegue um subconjunto dos dados do corpus que você possui (você pode fazê-lo aleatoriamente, sem necessidade de amostragem) e teste seu algoritmo nele, e eles os aproximam / generalizam no conjunto de dados geral.

(O SVM é comparativamente mais rápido. No entanto, faça o processo acima apenas para ter certeza.)

E teste-o no ambiente de desenvolvimento antes de avançar para a produção.

O uso da biblioteca scikit do Python para sites / aplicativos da web é adequado para isso?

É sim. Ele está sendo usado por um bom grupo de empresas por aí.

A terceira pergunta sobre Amazon e Flipkart não pode ser respondida por alguém de fora de suas equipes.

Além disso, recomendo que você use as técnicas de mapreduce para treinar seus modelos. E, como já recomendado, escolha seus modelos para que você não precise treiná-los com todas as solicitações.

Dawny33
fonte