Similaridade de cosseno entre textos por frequência
Meça o quanto dois textos se parecem nas palavras que usam, de 0 quando não compartilham nenhuma a 1 quando o padrão de palavras coincide, e veja quais termos eles têm em comum. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Texto a
- The quick brown fox jumps over the dog.
- Texto b
- A quick brown dog jumps over the fox.
- Similaridade do cosseno
- 0,894427191
- Produto escalar
- 8
- Magnitude de a
- 3,1622776602
- Magnitude de b
- 2,8284271247
Esta calculadora transforma cada trecho em um vetor de frequência de palavras e mede o ângulo entre eles. A pontuação vai de 0, sem termos contados em comum, a 1, quando os padrões apontam na mesma direção. Ela também informa contagens, vocabulário, magnitudes, produto escalar e termos compartilhados de forma determinística e verificável.
Como cada texto vira uma lista de contagens
A calculadora passa os dois textos para minúsculas, separa as palavras formadas por letras ou números e mantém os apóstrofos internos das palavras. Pontuação e espaços não contam. Cada palavra diferente que aparece em qualquer um dos textos vira uma dimensão de um vocabulário comum, e o número de vezes que ela aparece em cada texto vira a coordenada daquele texto: uma palavra usada três vezes vale três, não apenas presente. Em seguida, o produto escalar das duas listas é dividido pelo produto dos seus tamanhos. Assim, o resultado depende menos do comprimento dos textos do que uma simples contagem de palavras em comum.
O que a pontuação diz e o que ela não diz
Uma pontuação de 1 significa que os dois textos usam as palavras nas mesmas proporções, mesmo que um repita tudo mais vezes; 0 significa que não há nenhuma palavra em comum. Não há sinônimos, radicais nem remoção de palavras comuns: «correr» e «correu» contam como palavras diferentes, e a ordem das palavras não entra no cálculo. A medida serve como base rápida e explicável para comparar rascunhos, descrições curtas ou exemplos em sala de aula, mas não prova autoria, cópia nem que os textos digam a mesma coisa. Junto com a pontuação, você vê quantas palavras tem cada texto, o tamanho do vocabulário e a lista de termos compartilhados.
Transforme dois trechos em vetores comparáveis
Cole um trecho em cada campo. A ferramenta converte tudo em minúsculas, extrai sequências Unicode de letras ou números e preserva apóstrofos internos. Cada termo distinto vira uma dimensão, e sua quantidade de ocorrências define a coordenada.
A saída permite que você confira os termos comuns e entenda o resultado.
Interprete corretamente a pontuação
A similaridade de cosseno divide o produto escalar pelo produto das magnitudes. O valor 1 indica padrões relativos iguais; 0 indica ausência de termos comuns. Não há limite universal: defina um com documentos representativos.
Essa medida descreve estrutura lexical, não comprova autoria, cópia ou equivalência de sentido.
Escolha uma comparação lexical transparente
Use esta métrica como referência explicável para comparar versões, ensinar modelos vetoriais ou analisar descrições. Diferentemente da distância de edição, ela ignora a ordem; diferentemente de embeddings, só valoriza coincidências reais.
Casos de uso
Ensinar similaridade vetorial
Mostre como frequências, produto escalar e magnitudes geram uma pontuação reproduzível.
Comparar versões de documentos
Meça se duas revisões mantêm vocabulário semelhante e examine os termos comuns.
Criar uma referência lexical
Obtenha uma base transparente antes de avaliar métodos semânticos mais complexos.
Perguntas frequentes
O que significa a pontuação?
Ela vai de 0, sem termos comuns, a 1, com vetores na mesma direção; valores intermediários indicam sobreposição parcial.
Maiúsculas e pontuação afetam o resultado?
Maiúsculas não afetam. A pontuação separa termos, exceto apóstrofos internos.
A ferramenta detecta sinônimos?
Não. Ela compara termos exatos em minúsculas e suas frequências.
A ordem das palavras é considerada?
Não. O vetor registra quantas vezes cada termo aparece, não sua posição.
Qual pontuação indica que dois textos são parecidos o suficiente?
Não existe um limite universal. Valores entre 0 e 1 mostram sobreposição parcial de palavras, então defina o seu próprio limite com exemplos representativos dos seus documentos e use-o sempre da mesma forma.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/edu/cosine-text-similarity \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text_a":"The quick brown fox jumps over the dog.","text_b":"A quick brown dog jumps over the fox."}'const res = await fetch("https://api.kit.forhosting.com/edu/cosine-text-similarity", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text_a": "The quick brown fox jumps over the dog.",
"text_b": "A quick brown dog jumps over the fox."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/edu/cosine-text-similarity",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text_a": "The quick brown fox jumps over the dog.",
"text_b": "A quick brown dog jumps over the fox."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/edu/cosine-text-similarity", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text_a":"The quick brown fox jumps over the dog.","text_b":"A quick brown dog jumps over the fox."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text_a":"The quick brown fox jumps over the dog.","text_b":"A quick brown dog jumps over the fox."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/edu/cosine-text-similarity", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text_a": "The quick brown fox jumps over the dog.",
"text_b": "A quick brown dog jumps over the fox."
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "edu.cosine_text_similarity",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_chars_per_text | 100000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Escolha uma comparação lexical transparente
Solicitações API custam US$ 0,002, sem rede, aleatoriedade ou modelo externo.
Perguntas técnicas
Quanto custa uma solicitação API?
Cada solicitação API custa US$ 0,002; nenhum modelo ou serviço externo é necessário.