Qual é um bom método para agrupar curtos textos?


15

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.

Respostas:


10

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.

[1] Matt J. Kusner et al. De incorporação de palavras a distâncias de documentos. Anais da 32ª Conferência Internacional sobre Aprendizado de Máquina, JMLR, 2015.

[2] Fei Tian et al. SLRTM: Deixar os tópicos falarem por si mesmos. arXiv 1604.02038, 2016.


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.

básico


Você precisa elaborar sua resposta. Não cite apenas um link.
Michael R. Chernick 01/12/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.