Contatore bigrammi di caratteri
Inserisca banana e vedrà le sue cinque coppie di lettere in classifica: an e na compaiono due volte ciascuna, ba una. Ogni coppia indica quante volte appare e la sua quota sul totale, un'impronta classica per riconoscere lingue e studiare cifrari. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo
- banana
- Lunghezza
- 6
- Totale dei bigrammi
- 5
- Bigrammi unici
- 3
I bigrammi di caratteri sono ogni coppia di lettere che si trovano una accanto all’altra in una stringa—ba, an, na, an, na dentro banana—e le loro frequenze sono un’impronta classica di lingua, cifrario e layout della tastiera. Linguisti e studenti di NLP usano tabelle di bigrammi come base per il rilevamento della lingua; i corsi di crittoanalisi tracciano i digrammi per individuare struttura simile all’inglese nel testo cifrato; tipografi e ricercatori di metodi di input osservano quali coppie dominano per regolare spaziatura e posizione dei tasti. Questo contatore di frequenza dei bigrammi di caratteri accetta una stringa di testo, unifica opzionalmente le maiuscole, fa scorrere una finestra di due caratteri su tutta la stringa e restituisce una tabella ordinata di ogni coppia unica con conteggio grezzo e quota di tutte le coppie adiacenti.
Cosa sono i bigrammi di caratteri e perché le loro frequenze contano
Un bigramma di caratteri è semplicemente due caratteri consecutivi letti da sinistra a destra: nella parola banana le coppie successive sono ba, an, na, an e na. Contare quante volte compare ciascuna coppia produce una tabella di frequenze a multinsieme molto più ricca degli istogrammi di lettere isolate per molte attività successive. Le lingue naturali mostrano forti preferenze di coppie—th e he dominano l’inglese corrente, mentre altre coppie sono rare—così il profilo di bigrammi di un breve campione separa spesso le lingue meglio del solo conteggio delle lettere.
I manuali classici di crittoanalisi insegnano la frequenza dei digrammi dopo l’analisi dei monogrammi: anche quando le lettere sono sostituite, le coppie inglesi comuni riappaiono come digrammi di cifrato ripetuti e guidano attacchi con crib. Tipografia e layout di tastiera usano le stesse statistiche per un altro motivo: le coppie ad alta frequenza informano candidati di kerning, legature di digrammi e modelli di costo di percorso dei tasti per layout alternativi.
Non indovina etichette di lingua, non rompe cifrari e non raccomanda font; quei prodotti consumano la tabella che Lei riceve. Spazi, punteggiatura e cifre sono caratteri come gli altri, quindi Hello world genera un bigramma con spazio tra o e w. Poiché la finestra si basa sulle unità di codice UTF-16 di JavaScript, le emoji del piano astrale possono comparire come metà surrogati—utili per diagnosi di tipo byte, non per la linguistica dei grafemi.
Mantenga gli input sotto il tetto di caratteri pubblicato e fissi le righe ordinate nei test affinché l’automazione resti riproducibile tra runtime.
Casi d'uso
Esperimenti di rilevamento della lingua
Costruisca profili base di digrammi da paragrafi campione e confronti vettori di quota dei bigrammi tra lingue candidate senza una libreria NLP completa.
Crittoanalisi e CTF in aula
Conti i digrammi del cifrato per individuare coppie ad alta frequenza che possono corrispondere a combinazioni inglesi comuni negli attacchi di sostituzione.
Tipografia e regolazione della tastiera
Ordini le coppie di caratteri adiacenti in frammenti di corpus per prioritizzare candidati di kerning o valutare tastiere alternative in base al costo di percorso tra coppie.
Domande frequenti
Spazi e punteggiatura vengono contati?
Sì. Viene contata ogni coppia adiacente di caratteri, inclusi spazi, cifre e punteggiatura. Non c’è un tokenizzatore che elimini le non-lettere.
Cosa succede se il testo è vuoto o ha un solo carattere?
I bigrammi richiedono due caratteri consecutivi; un input vuoto o di un solo carattere non forma una coppia adiacente e non viene addebitato.
Quante coppie produce un testo?
Sempre una in meno del numero di caratteri, perché le coppie si sovrappongono. Le sei lettere di banana danno cinque coppie (ba, an, na, an e na), di cui solo tre diverse.
Maiuscole e minuscole vengono distinte?
Per impostazione predefinita sì: Ab e ab sono coppie diverse. Se disattiva questa distinzione, tutto il testo passa in minuscolo prima del conteggio, così Hello e hello finiscono nelle stesse coppie.
A che cosa serve la frequenza dei bigrammi?
A confrontare lingue, perché coppie come th e he dominano l'inglese; a individuare le coppie più ripetute in un cifrario a sostituzione; e a scegliere coppie di crenatura o valutare disposizioni di tastiera.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
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)Esempio di richiesta
{
"text": "banana"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.char_bigram_frequency",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_chars | 100000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Testo vuoto e stringhe più corte di due caratteri falliscono con invalid_input invece di una tabella vuota.
Cosa sono i bigrammi di caratteri e perché le loro frequenze contano
Questo endpoint implementa solo il conteggio deterministico: per una stringa di lunghezza n registra n meno una finestre sovrapposte, accumula chiavi identiche di due caratteri, ordina per conteggio decrescente con spareggio lessicografico stabile sulla stringa del bigramma e allega a ogni riga la sua quota del totale delle finestre. Per impostazione predefinita la capitalizzazione è preservata così Ab e ab restano distinti; imposti case_sensitive a false quando desidera un profilo unificato per esperimenti di lingua.
Contratto di input, forma della risposta e comportamento degli errori
Esempio: banana produce cinque bigrammi totali con an e na che contano due ciascuno, ba che conta uno, ranghi ordinati per frequenza e poi per stringa del bigramma. Invii con POST un corpo JSON con un campo obbligatorio, text, la stringa non vuota che desidera scansionare per coppie adiacenti. Sono accettati gli alias input, string, value, content e s così gli script possono riutilizzare nomi comuni. L’opzionale case_sensitive ha valore predefinito true e può anche essere inviato come caseSensitive o sensitive; quando è false l’intera stringa viene convertita in minuscolo prima del conteggio, così Hello e hello condividono le stesse chiavi di digramma. L’opzionale top (alias limit, n) è un intero da uno a diecimila che tronca la tabella ordinata dopo l’ordinamento; lo ometta per ricevere ogni bigramma unico. Assenza di text, stringhe vuote, oggetti e array non stringa, e valori che dopo l’unificazione del caso restano più corti di due caratteri falliscono con invalid_input e un messaggio che nomina il problema—tali fallimenti di validazione non vengono addebitati. Il testo oltre il limite max_chars dichiarato viene pure rifiutato. In caso di successo il corpo riecheggia il testo originale e la sua length, riporta total_bigrams come length meno uno della forma scansionata, unique_bigrams come numero di coppie distinte, case_sensitive risolto, top opzionale se lo ha impostato, un array frequencies di oggetti con rank, bigram, count e share arrotondato a sei decimali, e method uguale a char_bigram_frequency. Abbini la tabella ai propri modelli di lingua o grafici se le servono classificatori o mappe di calore; questo endpoint conta soltanto e non emette grafici né previsioni di modello.
Dove un’API di frequenza dei bigrammi di caratteri conviene
I prototipi di rilevamento della lingua e i laboratori didattici necessitano di un oracolo deterministico di digrammi affinché ogni taccuino dello studente e ogni valutatore concordino sugli stessi ranghi per lo stesso paragrafo campione. Gli esperimenti di tipografia e layout di tastiera estraggono statistiche di coppie da frammenti di corpus per prioritizzare il kerning o valutare il costo di percorso senza consegnare un’intera stack NLP. La validazione fallita non consuma saldo. I corsi di crittoanalisi e i write-up di CTF usano i totali delle coppie adiacenti come primo filtro prima di strumenti più pesanti, e una piccola API di parse evita di reimplementare ordinamento e aritmetica delle quote in ogni linguaggio. Poiché l’implementazione è parse di tier A puro, ogni chiamata riuscita costa il prezzo base pubblicato $0.002 senza token di modello e senza rete in uscita.
Domande tecniche
Come si contano le frequenze dei bigrammi di caratteri in una stringa?
Invii un corpo JSON con text impostato sulla sua stringa (almeno due caratteri). L’API fa scorrere una finestra di due caratteri sul testo e restituisce ogni coppia unica ordinata per conteggio con la quota di tutte le coppie adiacenti.
Cosa fa case_sensitive?
Il valore predefinito true conserva maiuscole e minuscole così Ab e ab sono bigrammi diversi. Imposti case_sensitive a false per convertire il testo in minuscolo prima del conteggio, pratica comune nelle basi di rilevamento della lingua.
Quanto costa il contatore di frequenza dei bigrammi di caratteri?
Lo strumento nel browser è gratuito. Le richieste API usano il saldo prepagato KIT a $0.002 per chiamata riuscita; l’input non valido non viene addebitato.