Como otimizar um algoritmo de análise de sentimentos para conjuntos de dados maiores?

8

Sou iniciante na análise de sentimentos e encontrei um bom recurso para a Bayesian Opinion Mining e uma maneira de torná-la auto-aperfeiçoadora . Fiquei me perguntando, se a análise ideal depende do conjunto de dados fornecido e, como o aprimoramento automático significaria adicionar padrões conhecidos ao conjunto de dados (meu entendimento), o aplicativo não ficaria sobrecarregado demais com um conjunto enorme de dados no decorrer do tempo? tempo com mais e mais padrões sendo adicionados ao conjunto de dados todos os dias? Qual deve ser a abordagem adequada para tornar o aplicativo escalável (se eu estiver usando o termo certo no lugar certo)?

gentrobot
fonte
3
Pode ser o que você está procurando. Mas não tenho certeza se Java é sua opção. Assim, um comentário. mahout.apache.org . É escalável e possui vários algoritmos que você pode usar.
toy
1
Qual o tamanho dos conjuntos de dados que você está usando aqui? O Mahout seria o seu caminho se estiver lidando com terabytes de novos dados. Dê uma olhada no Hadoop também
Dan Ciborowski - MSFT 08/08

Respostas:

1

Parece-me que você está construindo um classificador de texto com um estágio de treinamento supervisionado no início, onde atribui rótulos manualmente. Seu modelo está com bom desempenho (alta precisão e recuperação), portanto, você deseja complementar o modelo de treinamento inicial com um processo de treinamento não supervisionado em novas seqüências de entrada.

Essas novas entradas terão alguns sinais conhecidos (palavras que você já viu antes), para que seu modelo possa fazer seu trabalho bem, mas também terão sinais desconhecidos (palavras que você não viu antes). Você deseja que seu processo de treinamento não supervisionado associe essas novas palavras às conhecidas, para "aprender". Dessa forma, você confia que a associação entre a nova palavra e a palavra conhecida está correta. Como o processamento de idiomas é tão difícil, você provavelmente irá gerar associações positivas positivas automaticamente, que teriam sido excluídas / corrigidas em um ambiente supervisionado. Assim, ao fazer o aprendizado não supervisionado, você corre o risco de diminuir sua precisão.

Sua pergunta é sobre estar "sobrecarregado" com muitos dados. Essa é uma preocupação justa e depende muito do tamanho dos dados, da escolha da implementação e das expectativas de comportamento do sistema. Embora a capacidade de resposta e a capacidade de lidar com grandes quantidades de dados sejam uma coisa, sinto que a precisão e o recall do seu algoritmo de rotulagem de sentimentos são provavelmente da maior importância.

No artigo que você vinculou, o autor possui uma pontuação de confiança que faz com que associações não supervisionadas sejam consideradas apenas se houver uma "alta confiança". Isso é bom, mas ainda existe o risco de que, com o tempo, sua precisão geral caia. Seu sistema precisaria ser avaliado periodicamente quanto à precisão e recuperação, e treinado novamente. O exemplo "Bad Santa" nos comentários é um bom exemplo. Sugiro que você leia sobre o treinamento semi-supervisionado e obtenha essa rotulagem corretamente em pequenos conjuntos de dados antes de confiar que funcione bem em conjuntos de dados muito maiores. O processamento de idiomas é difícil!

Uma resposta
fonte
0

Para outras tarefas , como parte da marcação da fala , a condensação após o autotreinamento tornou o modelo menor e melhor! Se você identificar um problema de escalabilidade, observe primeiro este aspecto antes de tentar otimizar seu código.

A ideia é que, após o autotreinamento, você crie iterativamente um modelo inicialmente vazio. Você adiciona pontos de dados ao novo modelo somente se eles não foram classificados corretamente. Isso evita o ajuste excessivo e mantém o modelo o menor possível.

Quentin Pradet
fonte