Contador de bigramas de caracteres
Digite banana e veja seus cinco pares de letras em ordem: an e na aparecem duas vezes cada, ba uma vez. Cada par traz quantas vezes saiu e sua parte do total, uma impressão digital clássica de idiomas e cifras. 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
- banana
- Comprimento
- 6
- Total de bigramas
- 5
- Bigramas únicos
- 3
Bigramas de caracteres são cada par de letras que ficam lado a lado em uma string—ba, an, na, an, na dentro de banana—e suas frequências são uma impressão clássica de idioma, cifra e layout de teclado. Linguistas e estudantes de NLP usam tabelas de bigramas como base para detecção de idiomas; cursos de criptoanálise traçam digrafos para encontrar estrutura parecida com o inglês no texto cifrado; designers tipográficos e pesquisadores de métodos de entrada observam quais pares dominam para ajustar espaçamento e posição das teclas. Este contador de frequência de bigramas de caracteres aceita uma string de texto, opcionalmente unifica maiúsculas e minúsculas, desliza uma janela de dois caracteres por toda a string e devolve uma tabela ordenada de cada par único com contagem bruta e participação de todos os pares adjacentes.
O que são bigramas de caracteres e por que suas frequências importam
Um bigrama de caracteres é simplesmente dois caracteres consecutivos lidos da esquerda para a direita: na palavra banana os pares sucessivos são ba, an, na, an e na. Contar quantas vezes cada par aparece produz uma tabela de frequências de multiconjunto bem mais rica do que histogramas de letras isoladas para muitas tarefas posteriores.
Línguas naturais mostram preferências fortes de pares—th e he dominam o inglês corrido, enquanto outros pares são raros—assim o perfil de bigramas de uma amostra curta costuma separar idiomas melhor do que a contagem bruta de letras. Manuais clássicos de criptoanálise ensinam a frequência de digrafos após a análise de monogramas: mesmo quando letras são substituídas, pares comuns do inglês reaparecem como digrafos de cifrado repetidos e guiam ataques com crib.
Tipografia e layout de teclado usam as mesmas estatísticas por outro motivo: pares de alta frequência informam candidatos a kerning, ligaduras de digrafos e modelos de custo de deslocamento entre teclas em layouts alternativos. Não adivinha rótulos de idioma, não quebra cifras nem recomenda fontes; esses produtos consomem a tabela que você recebe. Espaços, pontuação e dígitos são caracteres como quaisquer outros, então Hello world gera um bigrama com espaço entre o e w.
Como a janela se baseia em unidades de código UTF-16 do JavaScript, emojis do plano astral podem aparecer como metades substitutas—úteis para diagnósticos tipo byte, não para linguística de grafemas. Mantenha as entradas abaixo do teto de caracteres publicado e fixe as linhas ordenadas nos testes para que a automação permaneça reproduzível entre runtimes.
Casos de uso
Experimentos de detecção de idioma
Monte perfis base de digrafos a partir de parágrafos de amostra e compare vetores de participação de bigramas entre idiomas candidatos sem uma biblioteca NLP completa.
Criptoanálise e CTFs de sala de aula
Conte digrafos do texto cifrado para localizar pares de alta frequência que possam mapear combinações comuns do inglês em ataques de substituição.
Tipografia e ajuste de teclado
Ordene pares de caracteres adjacentes em trechos de corpus para priorizar candidatos a kerning ou pontuar teclados alternativos pelo custo de deslocamento entre pares.
Perguntas frequentes
Espaços e pontuação são contados?
Sim. Cada par adjacente de caracteres é contado, incluindo espaços, dígitos e pontuação. Não há tokenizador que remova o que não é letra.
E se meu texto estiver vazio ou tiver só um caractere?
Bigramas precisam de dois caracteres consecutivos; entrada vazia ou de um único caractere não forma um par adjacente e não é cobrada.
Quantos pares um texto gera?
Sempre um a menos que o número de caracteres, porque os pares se sobrepõem. As seis letras de banana geram cinco pares (ba, an, na, an e na), dos quais só três são diferentes.
Maiúsculas e minúsculas contam separado?
Por padrão, sim: Ab e ab são pares diferentes. Se você desligar essa distinção, o texto inteiro vira minúsculas antes da contagem, e Hello e hello somam nos mesmos pares.
Para que serve a frequência de bigramas?
Para comparar idiomas, já que pares como th e he dominam o inglês; para achar os pares mais repetidos em uma cifra de substituição; e para escolher pares de kerning ou avaliar layouts de teclado.
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/str/char-bigram-frequency \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"banana"}'const res = await fetch("https://api.kit.forhosting.com/str/char-bigram-frequency", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "banana"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/char-bigram-frequency",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "banana"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/char-bigram-frequency", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"banana"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"banana"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/char-bigram-frequency", 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": "banana"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.char_bigram_frequency",
"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 | 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
Texto vazio e strings com menos de dois caracteres falham com invalid_input em vez de uma tabela oca.
O que são bigramas de caracteres e por que suas frequências importam
Este endpoint implementa apenas a contagem determinística: para uma string de comprimento n registra n menos uma janelas sobrepostas, acumula chaves idênticas de dois caracteres, ordena por contagem decrescente com desempate lexicográfico estável na string do bigrama e anexa a cada linha sua participação no total de janelas. Por padrão a capitalização é preservada para que Ab e ab permaneçam distintos; defina case_sensitive como false quando quiser um perfil unificado para experimentos de idioma.
Contrato de entrada, formato da resposta e comportamento de erros
Exemplo: banana produz cinco bigramas no total com an e na contando dois cada, ba contando um, ranks ordenados por frequência e depois pela string do bigrama. Envie por POST um corpo JSON com um campo obrigatório, text, a string não vazia que você deseja varrer em busca de pares adjacentes. Os aliases input, string, value, content e s são aceitos para que scripts reutilizem nomes comuns. O opcional case_sensitive tem padrão true e também pode ser enviado como caseSensitive ou sensitive; quando false toda a string é convertida para minúsculas antes da contagem, de modo que Hello e hello compartilham as mesmas chaves de digrafo. O opcional top (aliases limit, n) é um inteiro de um a dez mil que trunca a tabela ordenada após a classificação; omita-o para receber todos os bigramas únicos. Ausência de text, strings vazias, objetos e arrays que não são string, e valores que após unificar maiúsculas ficam com menos de dois caracteres falham com invalid_input e uma mensagem que nomeia o problema—essas falhas de validação não são cobradas. Texto acima do limite max_chars declarado também é rejeitado. Em caso de sucesso o corpo ecoa o texto original e seu length, informa total_bigrams como length menos um da forma varrida, unique_bigrams como o número de pares distintos, case_sensitive resolvido, top opcional se você o definiu, um array frequencies de objetos com rank, bigram, count e share arredondado a seis casas decimais, e method igual a char_bigram_frequency. Combine a tabela com seus próprios modelos de idioma ou gráficos se precisar de classificadores ou mapas de calor; este endpoint apenas conta e não emite gráficos nem previsões de modelo.
Onde uma API de frequência de bigramas de caracteres vale a pena
Protótipos de detecção de idioma e laboratórios de ensino precisam de um oráculo determinístico de digrafos para que cada caderno de aluno e cada avaliador concordem nos mesmos ranks para o mesmo parágrafo de amostra. Experimentos de tipografia e layout de teclado extraem estatísticas de pares de trechos de corpus para priorizar kerning ou pontuar custo de deslocamento sem entregar uma pilha completa de NLP. Validação falha não consome saldo. Cursos de criptoanálise e write-ups de CTF usam totais de pares adjacentes como primeiro filtro antes de ferramentas mais pesadas, e uma API de parse pequena evita reimplementar ordenação e aritmética de participação em cada linguagem.
Perguntas técnicas
Como conto frequências de bigramas de caracteres em uma string?
Envie um corpo JSON com text igual à sua string (pelo menos dois caracteres). A API desliza uma janela de dois caracteres pelo texto e devolve cada par único ranqueado por contagem com a participação de todos os pares adjacentes.
O que case_sensitive faz?
O padrão true mantém maiúsculas e minúsculas para que Ab e ab sejam bigramas diferentes. Defina case_sensitive como false para converter o texto para minúsculas antes de contar, o que é comum em bases de detecção de idioma.
Quanto custa o contador de frequência de bigramas de caracteres?
A ferramenta do navegador é gratuita. Solicitações API usam saldo pré-pago KIT a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.