-
Notifications
You must be signed in to change notification settings - Fork 629
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feat: add Lexrank text summarization #62
base: master
Are you sure you want to change the base?
Conversation
Parabéns amigo! Que show! Vou implementar e testar no meu projeto também! Irado!!!! 👍👍👍 PS.: Estou fazendo em TS https://github.com/maycrodrigues/video-maker-typescript 😎 |
Show de bola! |
Parabéns @genesluna! Tinha pensado nisso assim que vi o vídeo, porém não conhecia essa inteligência de classificação lexicográfica. |
Sensacional!!!! |
@genesluna Tenho uma dúvida: os segundo exemplo que você deu foi gerado pela análise?
"these features" não está diretamente em concordância com a última frase anterior. Esta segunda frase perdeu o contexto depois da Lexrank... antes estava assim:
Alguma ideia? |
@genesluna Tudo bom? Tentei implementar mas ele me retorna erros como a falta de módulos do lexrank, alguma dica para corrigir isso?? C:\Users\Felipe\video-maker>node index.js Error: Cannot find module 'lexrank.js' |
Olá, vi que varias pessoas estavam com problemas nesta branch e resolvi dar uma ajuda. Eu consegui implementar o algoritmo do lexrank (https://www.npmjs.com/package/lexrank) seguindo os seguintes passos: 1 - Instalar no projeto:
versão utilizada: "lexrank": "^1.0.5" |
@HelioLuna, poderia por favor dar uma olhada no meu comentário #62 (comment)? Consegue aproveitar a implemetação e testar talvez com o mesmo texto do OP? |
Então, eu rodei o lexrank em cima do texto inteiro, e o lexrank que se encarregou de procura e me devolver as melhores sentenças baseadas no seu algoritmo de rankeamento. |
Fiquei bem interessado, mas tomei este erro e fiquei preso nele.
Isso foi dentro do sentence-tokenizer: dependencia do lexrank |
@guilherme-argentino, eu resolvi isso usando o lexrank.js mesmo. colocando meu codigo abaixo:
O erro no codigo do @genesluna era que estava chamando na funcao summary.lexrank. |
O Problema
Atualmente o robô de texto escolhe as primeiras n-frases do conteúdo que é retornado da wikipedia. Acontece que estas primeiras frases nem sempre são a melhor representação(resumo) do conteúdo da página.
Com isso em mente e sabendo que a ideia do projeto é utilizar ao máximo a automatização, resolvi contribuir trazendo suporte a sumarização não supervisionada de texto usando o algorítimo Lexrank de Radev http://www.jair.org/papers/paper1523.html. Basicamente, ele aplica uma classificação lexicográfica a cada frase de um documento, encontrando as frases mais importantes e reproduzindo-as.
Exemplo
Atualmente, se fizermos uma busca com o termo "Javascript" no video-maker, receberemos como resultado as seguintes frases:
Com o uso da sumarização automatizada teríamos o seguinte resultado:
Observem que além da ordem de algumas frases ter sido alterada de acordo com a sua relevância, outras foram removidas e substituídas por frases consideradas mais relevantes pelo algorítimo.
Segue abaixo o texto completo analisado:
Para ver um exemplo com o termo "Michael Jackson" clique aqui. Acredito que seja um exemplo até melhor que o anterior.
Também modifiquei o resultado da busca no algorithmia de
wikipediaContent.content
parawikipediaContent.summary
, pois o primeiro elemento retornado dentro do 'content' é justamente o 'summary'. Com isso nós agilizamos o processamento das expressões regulares e ainda de quebra ajudamos o algorítimo Lexrank, pois ele terá que fazer um 'resumo do resumo' e não um resumo de todo conteúdo.Tenho ciência de que o PR não será 'mergeado'. A intenção é somente a de mostrar mais uma, dentre as muitas possibilidade de automação que temos a nossa disposição hoje em dia.