Como encontrar frases comuns em um grande corpo de texto
-
20-09-2019 - |
Pergunta
Estou trabalhando em um projeto no momento em que preciso escolher as frases mais comuns em um enorme corpo de texto. Por exemplo, digamos que temos três frases como as seguintes:
- O cachorro pulou sobre a mulher.
- O cachorro pulou No carro.
- O cachorro pulou subindo as escadas.
Do exemplo acima, eu gostaria de extrair "O cachorro pulou"Como é a frase mais comum no texto. No começo, pensei:" Oh, vamos usar um gráfico direcionado [com nós repetidos] ":
Gráfico direcionado http://img.skitch.com/20091218-81ii2femnfgfipd9jtdg32m74f.png
EDITAR: Desculpas, cometi um erro ao fazer este diagrama "sobre", "em" e "up", todos deveriam vincular a "o".
Eu ia manter uma contagem de quantas vezes ocorreu uma palavra em cada objeto de nó ("o" seria 6; "cachorro" e "pular", 3; etc.), mas apesar de muitos outros problemas, o principal surgiu quando surgiu quando surgiram Adicionamos mais alguns exemplos como (por favor, ignore a gramática ruim :-)):
- Cachorro pulou para cima e para baixo.
- O cachorro pulou como se nenhum cachorro tivesse pulado antes.
- O cachorro pulou alegremente.
Agora temos um problema desde "cão"Começaria um novo nó raiz (no mesmo nível que" o ") e não identificaríamos"cachorro pulou"Como agora sendo a frase mais comum. Então agora estou pensando que talvez eu possa usar um gráfico não direcionado para mapear as relações entre todas as palavras e, eventualmente, escolher as frases comuns, mas não tenho certeza de como isso vai funcionar, À medida que você perde o relacionamento importante da ordem entre as palavras.
Portanto, alguém tem idéias gerais sobre como identificar frases comuns em um grande corpo de texto e qual estrutura de dados eu usaria.
Obrigado, Ben
Solução
Confira esta pergunta relacionada: Quais técnicas/ferramentas existem para descobrir frases comuns em pedaços de texto? Também relacionado a o mais longo problema de substring de substring.
Eu já publiquei isso antes, mas eu uso R Para todas as minhas tarefas de mineração de dados e é adequado para esse tipo de análise. Em particular, veja o tm
pacote. Aqui estão alguns links relevantes:
- Artigo sobre o pacote no Journal of Statistical Computing: http://www.jstatsoft.org/v25/i05/paper. O artigo inclui um bom exemplo de análise da lista de discussão R-devel (https://stat.ethz.ch/pipermail/r-devel/) Publicações de grupo de notícias de 2006.
- PACOTE HOMEPAGEM: http://cran.r-project.org/web/packages/tm/index.html
- Veja a vinheta introdutória: http://cran.r-project.org/web/packages/tm/vignettes/tm.pdf
De maneira mais geral, há um grande número de pacotes de mineração de texto na visão de processamento de linguagem natural em cran.