Estou trabalhando em um problema de cluster de texto. Os dados contêm várias frases. Existe um bom algoritmo que alcance alta precisão em textos curtos?
Você pode fornecer boas referências?
Algoritmos como KMeans, clustering espectral não funcionam bem para esse problema.
Isso depende principalmente de quanto "state-of-the-art" (SOTA) você deseja versus a profundidade que deseja ir (trocadilho intencional ...).
Se você pode conviver apenas com combinações de palavras rasas, conforme fornecido por word2vec, Glove ou fastText, acho que a Distância do motor de palavras (WMD [yes, really ...]) é uma boa função para medir distâncias (curtas) de documentos [1] . Eu já vi vários Python Notebooks no passado que fornecem "tutoriais" para essa medida de distância, então é realmente fácil seguir em frente.
No entanto, se você estiver mais interessado em SOTA, terá que analisar um aprendizado profundo (representação de sequência), usando algum tipo de rede recorrente que aprenda um modelo de tópico de suas frases. Além de integrar incorporações (semânticas) de palavras, essas abordagens vão além da abordagem [boa e antiga] do "saco de palavras", aprendendo representações de tópicos usando as dependênciasdas palavras na frase [s]. Por exemplo, o SLRTM (Modelo de Tópico Recorrente no Nível da Sentença) é um modelo recorrente profundo e bastante interessante, baseado nas idéias da LDA mais tradicional (de Blei et al.) Ou LSA (Landauer et al.), Mas é apenas um arXiv documento (para que todos os avisos padrão "leve este grão com sal" sobre pesquisas não revisadas por pares sejam aplicáveis ...) [2]. Não obstante, o artigo possui muitos excelentes indicadores e referências para iniciar sua pesquisa, caso você queira ir a essa toca de coelho.
Por fim, deve ser esclarecido que não afirmo que esses sejam os métodos de melhor desempenho acordados para modelos de sequência de palavras e sequência, respectivamente. Mas eles devem te aproximar do "melhor" SOTA e, pelo menos, servir como um excelente ponto de partida.
Eu tentei o word2vec e ele não funciona bem para texto breve.
Entusiasta
Só para ter certeza: minha resposta acima não recomenda o uso do word2vec (sozinho) para agrupamentos curtos de texto. Em vez disso, recomenda o uso de métodos WMD (sobre vetores incorporados) e / ou Deep Learning. (No entanto, se você pode treinar seus próprios vetores, você obter resultados muito bons com eles sozinho, usando o macio Cosine Similaridade, pelo menos por um "protótipo viável.")
FNL
-1
https://github.com/RandyPen/TextCluster
Este é um método de cluster específico para texto breve, que supera o KMeans etc. Não é necessário definir o número da variável latente.
A idéia básica é tokenizar a frase em palavras. Em seguida, direcione para o balde diferente de acordo com o componente de texto. Em cada bloco, calcule a similaridade entre a frase e o bloco. Se a pontuação de similaridade for maior que o valor específico, anexe esta frase a esse intervalo, caso contrário, procure o próximo intervalo.
https://github.com/RandyPen/TextCluster
Este é um método de cluster específico para texto breve, que supera o KMeans etc. Não é necessário definir o número da variável latente.
A idéia básica é tokenizar a frase em palavras. Em seguida, direcione para o balde diferente de acordo com o componente de texto. Em cada bloco, calcule a similaridade entre a frase e o bloco. Se a pontuação de similaridade for maior que o valor específico, anexe esta frase a esse intervalo, caso contrário, procure o próximo intervalo.
fonte