Skip to content

Instantly share code, notes, and snippets.

@guilhermesilveira
Created August 28, 2024 13:52
Show Gist options
  • Save guilhermesilveira/d584eac850f87a41f71ca86cdc9c2407 to your computer and use it in GitHub Desktop.
Save guilhermesilveira/d584eac850f87a41f71ca86cdc9c2407 to your computer and use it in GitHub Desktop.
function processaTexto() {
const textoEntrada = document.getElementById("textoEntrada").value;
const palavrasChave = pegaPalavrasChave(textoEntrada);
const resultado = document.getElementById("resultado");
resultado.textContent = palavrasChave.join(", ");
}
// Busca o botão
const botaoProcessarTexto = document.getElementById("processarTexto");
botaoProcessarTexto.addEventListener("click", processaTexto);
function pegaPalavrasChave(texto) {
// Quebra o texto em palavras com regex
let palavras = texto.split(/\P{L}+/u);
// Converte todas as palavras para minúsculas
for (let i in palavras) {
palavras[i] = palavras[i].toLowerCase();
}
palavras = tiraPalavrasRuins(palavras);
const frequencias = contaFrequencia(palavras);
// Ordena a palavra por frequência
function ordenaPalavra(p1, p2) {
return frequencias[p2] - frequencias[p1];
}
let ordenadas = Object.keys(frequencias).sort(ordenaPalavra);
return ordenadas.slice(0, 10);
}
function tiraPalavrasRuins(palavras) {
const boas = [];
for (let palavra of palavras) {
if (!palavrasRuins.has(palavra) && palavra.length > 2) {
boas.push(palavra);
}
}
return boas;
}
function contaFrequencia(palavras) {
const frequencias = {};
for (let palavra of palavras) {
if (frequencias[palavra]) {
frequencias[palavra]++;
} else {
frequencias[palavra] = 1;
}
}
return frequencias;
}
// VARIACAO MENOR, se sobrar tempo?
function contaFrequencia() {
const frequencias = {};
for (let palavra of palavrasBoas) {
frequencias[palavra] = (frequencias[palavra] ?? 0) + 1;
}
return frequencias;
}
// Palavras ruins
const PALAVRAS_RUINS = new Set([
"de",
"a",
"o",
"e",
"que",
"do",
"da",
"em",
"um",
"para",
"é",
"com",
"não",
"uma",
"os",
"no",
"se",
"na",
"por",
"mais",
"as",
"dos",
"como",
"mas",
"foi",
"ao",
"ele",
"das",
"tem",
"à",
"seu",
"sua",
"ou",
"ser",
"quando",
"muito",
"há",
"nos",
"já",
"está",
"eu",
"também",
"só",
"pelo",
"pela",
"até",
"isso",
"ela",
"entre",
"era",
"depois",
"sem",
"mesmo",
"aos",
"ter",
"seus",
"quem",
"nas",
"me",
"esse",
"eles",
"estão",
"você",
"tinha",
"foram",
"essa",
"num",
"nem",
"suas",
"meu",
"às",
"minha",
"têm",
"numa",
"pelos",
"elas",
"havia",
"seja",
"qual",
"será",
"nós",
"tenho",
"lhe",
"deles",
"essas",
"esses",
"pelas",
"este",
"fosse",
"dele",
"tu",
"te",
"vocês",
"vos",
"lhes",
"meus",
"minhas",
"teu",
"tua",
"teus",
"tuas",
"nosso",
"nossa",
"nossos",
"nossas",
"dela",
"delas",
"esta",
"estes",
"estas",
"aquele",
"aquela",
"aqueles",
"aquelas",
"isto",
"aquilo",
"estou",
"está",
"estamos",
"estão",
"estive",
"esteve",
"estivemos",
"estiveram",
"estava",
"estávamos",
"estavam",
]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment