Estudio reproducible · 31 jul 2026
Contador de palabras en un texto: comparación de reglas Unicode
La misma cadena puede producir cifras distintas según dónde se corten las palabras. Comparamos tres reglas sobre un corpus abierto y publicamos cada entrada, cada resultado y el script que los genera.
- casos publicados
- 160
- mismo resultado
- 60%
- casos con diferencias
- 64
Método
Tres reglas, una entrada
Los tres conteos reciben el mismo texto después de convertir saltos CRLF/CR a LF y aplicar NFC. Las métricas de caracteres conservan la cadena literal.
- 01
Regla del sitio
Intl.Segmenter en español y ajuste explícito para unir palabras conectadas por guiones Unicode o apóstrofos.
- 02
Segmentación Unicode del runtime
Intl.Segmenter con locale es, granularidad word y filtro isWordLike, sin el ajuste de conectores.
- 03
Separación por espacios
Texto normalizado, trim y split(/\s+/u). Es una base simple, no una referencia de corrección.
Resultados por grupo
Dónde cambian los conteos
Cada grupo contiene 20 casos. El porcentaje indica cuántas entradas discrepan dentro de ese grupo; no mide precisión.
Puntuación española
17 de 20 coinciden
Apóstrofos, guiones y abreviaturas
11 de 20 coinciden
Números, fechas y unidades
12 de 20 coinciden
URL, correos y hashtags
5 de 20 coinciden
Espacios, saltos y NBSP
18 de 20 coinciden
Acentos precompuestos y combinantes
17 de 20 coinciden
Emoji y secuencias ZWJ
3 de 20 coinciden
Mezcla de español, inglés y CJK
13 de 20 coinciden
Datos abiertos
Revisa el corpus completo
Los ejemplos y resultados están publicados con licencia CC0-1.0. Puedes auditar una fila, rehacer toda la comparación o probar el script en otro runtime y registrar sus versiones.
node reproduce.js > results.csv- test-cases.csv160 textos literales, grupos, procedencia y licencia
- results.csvresultado de cada método y métricas de caracteres
- methodology.jsonreglas, preprocesado, fuentes y resumen calculado
- versions.jsoncommit, Node, V8, ICU, Unicode, CLDR y locales
- reproduce.jsscript ESM sin dependencias para repetir el cálculo
- limitations.mdalcance, límites de interpretación y correcciones
Qué significa «carácter»
- Unidad UTF-16
- La unidad que usa String.length en JavaScript.
- Punto de código
- Un valor asignado por Unicode; un emoji puede usar varios.
- Grafema
- Una aproximación programática a un carácter percibido.
- Byte UTF-8
- El espacio de codificación, no una letra ni una palabra.
Fuentes y límites
- Unicode Standard Annex #29 · revisión 47
Especificación de segmentación de texto, Unicode 17.0.0.
- Ayuda de recuento de Google Docs
Referencia de interfaz; este estudio no mide sus reglas internas.
- Ayuda de recuento de Microsoft Word
Referencia de interfaz; este estudio no mide sus reglas internas.
Consulta el archivo limitations.md para el alcance completo. Si detectas un caso incorrecto, escribe a support@contadordepalabras.app con el ID del caso y una reproducción.