Eu sou um novato quando se trata de aprendizado de máquina. Estou tentando obter experiência prática analisando diferentes algoritmos de aprendizado supervisionado usando a biblioteca scikit-learn de python. Estou usando o conjunto de dados sentiment140 de 1,6 milhão de tweets para análise de sentimentos usando vários desses algoritmos.
Não sei se é uma pergunta estúpida, mas estava pensando se seria possível classificar em três classes (positiva, negativa e neutra) quando você treinou apenas duas classes (positiva e negativa). O conjunto de treinamento sentiment140 consiste em apenas duas classes (positivas e negativas) de 1,6 milhão de tweets no total, mas o conjunto de testes consiste em 500 tweets em três classes (positiva, negativa e neutra), por isso me fez pensar.
Então isso é possível? Se sim, como procedo para identificar os tweets neutros? Intuitivamente, eu posso usar para encontrar a probabilidade condicional de cada tweet classificado no conjunto de testes de cada classe (usando prever_proba) e dizer se é neutro se estiver abaixo de um determinado limite (digamos, menos de 0,7) para as classes positiva e negativa . Este é o caminho certo a seguir?
fonte
sentiment 140 training set
consiste em apenas duas classes, como é que o conjunto de treinamento consiste em três classes? Não está claro.Respostas:
A resposta rápida (e não muito satisfatória) é "depende" - especificamente depende de qual é o seu modelo conceitual subjacente de emoção humana e de como ela se manifesta no comportamento verbal / escrito .
Qual é a sua caracterização da neutralidade em relação à valência positiva e negativa? Os documentos podem ser colocados em algum tipo de escala quantitativa com neutro imprensado entre positivo e negativo? Esta posição tem suporte linguístico, pelo menos, com frases simples que expressam estados de valência únicos ( a solução é { ótimo > bom > aceitável > ruim > horrível }).
Como o pôster do @dmb sugeriu, se esse é o seu modelo conceitual, você pode argumentar razoavelmente que as quedas neutras entre pos / neg e tudo que você precisa fazer é determinar os limites / pontos de corte ideais . Portanto, você pode atribuir neutro a um caso de teste, mesmo que o classificador não tenha sido treinado em casos neutros (embora você precise de alguma maneira de determinar esses pontos de corte).
Mas e os casos mais complexos? O que acontece quando você passa do nível da unidade frasal para unidades sentenciais e discursivas maiores? Como você classificaria a frase " Eu amo maçãs, mas odeio bananas "? Os elementos positivo e negativo se cancelam para criar um ponto morto? Você pode ver facilmente como isso fica confuso quando começamos a falar sobre textos humanos reais . Na minha opinião, não acho que seja particularmente significativo falar sobre uma pontuação emocional no nível do documento. Em vez disso, acredito que as pessoas expressam emoções / sentimentos direcionados a objetos individuais "Eu odeio bananas" -> ódio (subj, obj) que são combinados em construções no nível do discurso.
Então, sim, acho que você poderia defender razoavelmente o uso de gerar uma categoria neutra se apenas pos / neg forem usados para treinar ... MAS você precisará justificar o uso de pontos de corte específicos e considerar como lidar com documentos mais longos que expressam emoções múltiplas (conflitantes). Meu curso de ação preferido seria fazer as pessoas lerem e rotularem os tweets como pos, neg, neutro e misto (para garantir a confiabilidade entre codificadores) para criar meus dados de treinamento ... deixe o algoritmo fazer o trabalho duro para encontrar o ponto de corte valores.
fonte
Digamos que os resultados de uma amostra sejamP( p o s i t i v e | s a m p l e ) = 0,15 e P( n e ga t i v e | s a m p l e ) = 0,05 , em vez de usar apenas o grupo de maior probabilidade, você pode definir um limite mínimo, digamos 0,3. Como ambos estão abaixo disso, você o classifica como neutro
fonte
Isso realmente depende de quão abrangente é o modelo que você usa. Na maioria dos casos, o modelo para análise de sentimentos é bastante simples e baseado no "pacote de palavras". Nesse caso, as amostras positivas e negativas no conjunto de treinamento permitem, basicamente, extrair palavras positivas e negativas carregadas de emoção.
Agora imagine que você fez esse trabalho perfeitamente, mas você tem algum texto que não contém palavras positivas nem negativas. Este texto pode ser considerado neutro.
Outro caso é quando o texto contém palavras positivas e negativas em números iguais. Potencialmente, isso significa que o texto contém sentenças negativas e positivas. Ou pode haver negações no texto que invertam o sentimento de algumas palavras. Este texto poderia ser considerado neutro? Talvez. Mas modelos simples de "pacote de palavras" não conseguem distinguir esse caso do anterior.
Tudo isso significa que os dados de treinamento contendo apenas pontos positivos e negativos ainda podem reconhecer textos "neutros". Mas será necessário pensar cuidadosamente nos critérios de neutralidade aceitáveis para o seu caso de uso e no modelo que você usará para obter o comportamento exato que deseja.
Para obter mais informações sobre este tópico, consulte esta postagem no blog que vários colegas e eu escrevemos sobre a criação de conjuntos de dados de treinamento e teste: https://blog.griddynamics.com/creating-training-and-test-data-sets -e-preparando-os-dados-para-twitter-análise-de-sentimentos-de-social-cinema-resenhas
fonte