x = np.arange(len(words)) width = 0.35 fig, axes = plt.subplots(1, 2, figsize=(14, 5)) fig.patch.set_facecolor(“#FAFAF8”) # Izquierda: ID de tokens uno al lado del otro ax = axes[0]
ax.set_facecolor(“#FAFAF8″) bars1 = ax.bar(x – ancho/2, ids_ws, ancho, etiqueta=”Con espacio inicial”, color=”#3B6FE0″, alpha=0.85) bars2 = ax.bar(x + ancho/2, ids_nws, ancho, etiqueta=”Sin espacio inicial”, color=”#E05C3B”, alpha=0.85) ax.set_xticks(x) ax.set_xticklabels(palabras, rotación=30, ha=”right”, fontsize=9) ax.set_ylabel(“ID de token”, tamaño de fuente=10) ax.set_title(“ID de token: ‘palabra’ vs ‘palabra'”, fontsize=12, fontweight=”bold”, pad=12) ax.legend(fontsize=9) ax.spines[[“top”, “right”]].set_visible(False) ax.grid(axis=”y”, alpha=0.3) para barra en barras1: ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 50, str(int(bar.get_height())), ha=”center”, va=”bottom”, fontsize=7, color=”#3B6FE0″) para barra en barras2: ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 50, str(int(bar.get_height())), ha=”center”, va=”bottom”, fontsize=7, color=”#E05C3B”) # Derecha: delta ax2 = ejes[1]
ax2.set_facecolor(“#FAFAF8”) barras_color = [“#E05C3B” if d > 500 else “#F0A070” if d > 100 else “#A8C4F0” for d in delta]
bars3 = ax2.bar(words, delta, color=color_bars, alpha=0.9) ax2.set_ylabel(“Distancia absoluta de ID de token”, fontsize=10) ax2.set_title(“¿A qué distancia están los ID de token?”, fontsize=12, fontweight=”bold”, pad=12) ax2.set_xticklabels(words, rotation=30, ha=”right”, tamaño de fuente = 9) ax2.spines[[“top”, “right”]].set_visible(False) ax2.grid(axis=”y”, alpha=0.3) para barra, d en zip(bars3, delta): ax2.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 10, str(d), ha=”center”, va=”bottom”, fontsize=9, fontweight=”bold”) high = mpatches.Patch(color=”#E05C3B”, alpha=0.9, label=”> 500 de diferencia”) med = mpatches.Patch(color=”#F0A070″, alpha=0.9, label=”100-500 de diferencia”) low = mpatches.Patch(color=”#A8C4F0″, alpha=0.9, label=”< 100 de diferencia") ax2.legend(handles=[high, med, low]fontsize=8) plt.tight_layout(pad=2) plt.suptitle("Artefactos de tokenización: un espacio, token completamente diferente", fontsize=14, fontweight="bold", y=1.02) plt.savefig("tokenization_artifact.png", dpi=150, bbox_inches="tight", facecolor="#FAFAF8") plt.show()
palabras = [p[1] para p en pares]ids_ws = [tokenizer.encode(” ” + w, add_special_tokens=False)[0] para w en palabras]ids_nws = [tokenizer.encode(w, add_special_tokens=False)[0] para w en palabras]delta = [abs(a – b) for a, b in zip(ids_ws, ids_nws)]