Eu construí algumas redes neurais (MLP (totalmente conectadas), Elman (recorrente)) para tarefas diferentes, como jogar Pong, classificar dígitos manuscritos e outras coisas ...
Além disso, tentei criar algumas primeiras redes neurais convolucionais, por exemplo, para classificar notas manuscritas de vários dígitos, mas sou completamente novo para analisar e agrupar textos, por exemplo, nas tarefas de reconhecimento / agrupamento de imagens, podemos confiar em entradas padronizadas, como imagens de tamanho 25x25, RGB ou escala de cinza e assim por diante ... há muitos recursos de pré-suposição.
Para mineração de texto, por exemplo, artigos de notícias, você tem um tamanho de entrada em constante mudança (palavras diferentes, frases diferentes, tamanho de texto diferente, ...).
Como implementar uma ferramenta moderna de mineração de texto utilizando inteligência artificial, de preferência redes neurais / SOMs?
Infelizmente, não consegui encontrar tutoriais simples para começar. Trabalhos científicos complexos são difíceis de ler e não são a melhor opção para aprender um tópico (como na minha opinião). Eu já li alguns artigos sobre MLPs, técnicas de abandono, redes neurais convolucionais e assim por diante, mas não consegui encontrar um básico sobre mineração de texto - tudo o que encontrei foi um nível alto demais para minhas habilidades muito limitadas de mineração de texto.
Além do LDA, você pode usar a Análise Semântica Latente com K-Means . Não são redes neurais, mas agrupamentos "clássicos", mas funcionam muito bem.
Exemplo no sklearn (extraído daqui ):
Agora os rótulos de atribuição de cluster estão disponíveis em
km.labels_
Por exemplo, estes são os tópicos extraídos de 20 grupos de notícias com o LSA:
Você também pode aplicar a fatoração de matriz não negativa , que pode ser interpretada como cluster. Tudo o que você precisa fazer é pegar o maior componente de cada documento no espaço transformado - e usá-lo como atribuição de cluster.
No sklearn:
fonte
O LSA + KMeans funciona bem, mas você precisa inserir a quantidade de clusters que espera. Além disso, o coeficiente de silhueta dos grupos encontrados é geralmente baixo.
Outro método com o qual obtenho melhores resultados é usar o exemplo DBSCAN aqui . Ele procura por centros de alta densidade e se expande para formar aglomerados. Nesse método, ele encontra automaticamente a quantidade ideal de clusters.
Também achei muito importante usar um derivador, como o Snowball para ex, que reduz os erros devido a erros de digitação. Uma boa lista de palavras de parada também é muito importante se você quiser se livrar de alguns clusters que não teriam significado devido à alta ocorrência de palavras comuns sem significado significativo. Quando você constrói sua matriz de contagem, a normalização também é importante, pois permite adicionar peso a uma palavra com baixa ocorrência no conjunto de dados, mas com alta ocorrência em amostras específicas. Essas palavras são significativas e você não quer perdê-las. Também reduz pesos de palavras com altas ocorrências em todas as amostras em particular (quase para interromper a palavra, mas para palavras que podem ter um pouco de significado). Uma última coisa que notei ser importante não é imprimir as 10 principais palavras dos seus clusters, mas uma seleção mais extensa. Geralmente, a qualidade e a relevância das palavras-chave em relação ao rótulo que você daria ao cluster tendem a reduzir drasticamente após essas 10 a 20 palavras principais. Portanto, uma visão ampliada das principais palavras-chave o ajudará a analisar se seu cluster é realmente relevante ou muito poluído por ruído.
fonte
Meu método favorito é o LDA ; você pode procurar aqui um tutorial usando pacotes python.
Você também pode olhar para métodos muito mais simples como este .
fonte