ClariCat: construir un corrector català local, auditable i independent
Un prototip funcional per demostrar que la tecnologia lingüística també es pot construir des de baix
He publicat la primera versió alfa de ClariCat, un corrector pensat específicament per al català que funciona localment i no depèn del motor ni de les regles de LanguageTool.
Encara queda molta feina per fer. ClariCat no és, ara mateix, un substitut complet dels correctors madurs que disposen d’anys de desenvolupament, grans bases lingüístiques i sistemes avançats d’anàlisi morfològica i sintàctica. És una versió 0.1.2, una alfa funcional, i convé dir-ho des del principi.
Però tampoc no és només una maqueta.
Ja disposa d’un motor propi de regles, un diccionari de gairebé un milió de formes catalanes, una interfície de línia d’ordres, una API HTTP local i connectors inicials per a navegadors, Microsoft Word i LibreOffice. També incorpora, de manera completament opcional, una segona capa de revisió mitjançant models d’intel·ligència artificial executats localment amb Ollama.
La qüestió no és afirmar que ClariCat ja ho corregeix tot. La qüestió és que la base existeix, funciona i es pot continuar ampliant.
Per què construir un altre corrector?
LanguageTool és una eina coneguda, extensa i útil. ClariCat no neix perquè LanguageTool no existeixi, ni perquè calgui negar la feina feta per altres projectes.
Neix d’una pregunta diferent:
Podem construir una base de correcció catalana que sigui local, comprensible, modificable i adaptable, sense haver de dependre permanentment d’un gran sistema ja construït?
La dependència tecnològica no sempre és visible. Sovint adoptem una plataforma perquè ja resol una part considerable del problema. És una decisió lògica i, moltes vegades, inevitable. Però, amb el temps, també podem acabar subordinant els nostres projectes a arquitectures, prioritats i ritmes de desenvolupament que no controlem.
ClariCat intenta explorar una altra via.
El seu motor no incorpora codi ni regles de LanguageTool. Sí que ofereix un endpoint compatible amb una part del seu protocol, perquè aquesta compatibilitat permet connectar-lo amb programari que ja sap comunicar-se amb servidors LanguageTool. És el cas de LibreOffice.
La diferència és important: utilitzar un protocol compatible no significa utilitzar el motor que habitualment hi ha darrere del protocol.
LibreOffice pot enviar el text a l’adreça local de ClariCat, però és ClariCat qui el processa amb les seves pròpies regles, el seu diccionari i els seus recursos.
No es tracta de reinventar totes les rodes per orgull. Es tracta de saber quines rodes podem fabricar, estudiar i reparar.
Local per defecte
La revisió principal de ClariCat es fa localment.
En el navegador, el motor base s’executa dins del mateix complement. En Word i LibreOffice, el text es comunica amb un servidor que només escolta, per defecte, a l’adreça local de l’ordinador:
127.0.0.1
ClariCat no envia el text a LanguageTool ni a una API remota pròpia. No requereix crear cap compte ni contractar cap servei al núvol per fer funcionar la revisió bàsica.
Aquesta decisió té implicacions pràctiques, però també conceptuals.
La privadesa no hauria de ser una funció de pagament ni una promesa abstracta escrita al peu d’una política legal. Quan és possible, també pot formar part de l’arquitectura.
Si el text no necessita sortir de l’ordinador, la manera més senzilla de protegir-lo és no enviar-lo enlloc.
Naturalment, “local” no significa automàticament “perfectament segur”. Els serveis locals també han de validar orígens, limitar els accessos i protegir els endpoints de configuració. Per això la seguretat del servidor continua formant part de les tasques pendents abans d’una versió estable.
Dir que un programa és local no eximeix d’auditar-lo. Precisament hauria de facilitar-ho.
Un motor petit, propi i ampliable
El nucli actual de ClariCat està escrit en JavaScript i funciona tant a Node com al navegador. No necessita dependències externes de npm en temps d’execució.
Aquesta elecció no pretén demostrar cap puresa tècnica. Respon a una necessitat concreta: disposar d’un motor que pugui viatjar entre entorns diferents amb poques barreres.
La revisió segueix, de manera simplificada, aquest procés:
Detecta i protegeix elements que no s’han de tractar com a llenguatge ordinari.
Aplica les regles lingüístiques pròpies.
Comprova les paraules mitjançant el diccionari.
Utilitza recursos auxiliars per reforçar alguns suggeriments.
Filtra les categories excessivament sorolloses segons el connector.
Pot afegir una revisió opcional amb IA local.
La protecció dels fragments tècnics és especialment important. Els correctors no treballen sempre sobre prosa neta. Poden trobar variables, placeholders, etiquetes, adreces web, fragments de codi o elements interns d’un videojoc o d’una aplicació.
Una paraula desconeguda no és necessàriament una paraula incorrecta.
Part d’aquest coneixement prové de l’experiència acumulada amb Fractalis, el sistema que he anat desenvolupant per treballar amb traduccions, corpus i localització de videojocs. ClariCat incorpora una exportació lingüística auxiliar preparada per funcionar offline, però Fractalis, les dades originals i els processos interns continuen sent un projecte diferenciat.
És una transferència de coneixement entre projectes: allò que es descobreix resolent un problema pot convertir-se en infraestructura per resoldre’n d’altres.
Gairebé un milió de formes catalanes
ClariCat incorpora un diccionari de 991.388 formes úniques, generat a partir dels recursos de Softcatala/catalan-dict-tools.
No significa que el corrector “conegui” el significat profund de gairebé un milió de paraules. Un diccionari de formes permet comprovar si una seqüència apareix entre les formes admeses, però no substitueix una anàlisi lingüística completa.
Per exemple, dues paraules poden ser correctes per separat i formar una construcció incorrecta quan apareixen juntes. Per detectar determinats problemes de concordança, règim verbal o estructura sintàctica no n’hi ha prou amb preguntar si cada paraula existeix.
Aquesta és una de les principals fronteres actuals de ClariCat.
El diccionari proporciona una base ortogràfica potent. La morfologia i la sintaxi profunda encara requereixen molt més desenvolupament.
Una mateixa base per a molts connectors
Una de les parts més valuoses del projecte no és necessàriament la més visible: la reutilització del mateix nucli en entorns diferents.
ClariCat ja disposa de portes d’entrada per a:
Chrome i Microsoft Edge;
Firefox;
Microsoft Word;
LibreOffice;
línia d’ordres;
clients HTTP locals.
Els navegadors poden revisar una selecció, un camp de text o part del contingut visible d’una pàgina. Word utilitza un panell lateral. LibreOffice es comunica amb el servidor mitjançant un endpoint compatible amb LanguageTool. La línia d’ordres permet provar textos o documents sense obrir cap interfície gràfica.
Encara hi ha limitacions específiques.
Word no substitueix el subratllat natiu del processador de textos i treballa principalment sobre seleccions. Office.js, a més, carrega part de la seva infraestructura des dels serveis oficials de Microsoft, de manera que el complement no és completament independent d’Internet encara que el text i el motor de ClariCat es mantinguin locals.
Firefox estable necessita que Mozilla signi el complement perquè es pugui instal·lar permanentment.
Les pàgines web també poden contenir elements inaccessibles per a una extensió convencional, com alguns iframes, components tancats o textos representats dins d’un canvas.
La compatibilitat multiplataforma no consisteix a fingir que totes les plataformes funcionen igual. Consisteix a construir una base comuna i documentar les diferències reals.
Intel·ligència artificial, però no com a dependència
ClariCat pot connectar-se opcionalment amb Ollama i demanar una segona revisió a un model instal·lat a l’ordinador, com Salamandra.
Aquesta integració no converteix ClariCat en un model d’intel·ligència artificial propi.
Salamandra és el model. Ollama és l’entorn que l’executa. ClariCat és el sistema que prepara la petició, valida la resposta, descarta suggeriments inadequats i combina els resultats amb els del motor principal.
La distinció és important perquè actualment s’utilitza el terme “intel·ligència artificial” per descriure gairebé qualsevol programa que enviï un text a un model.
En ClariCat, la IA és una capa subordinada al sistema, no el centre obligatori de l’arquitectura.
Està desactivada per defecte. Si Ollama no respon, el corrector continua funcionant. Si el model proposa una modificació que no correspon a cap fragment real del text, ClariCat la descarta. També intenta evitar que la IA converteixi una revisió ortogràfica en una reescriptura de to, estil o concisió.
Els models poden ajudar a detectar fenòmens que un conjunt inicial de regles encara no cobreix. Però també poden equivocar-se, inventar problemes o presentar preferències estilístiques com si fossin normes.
Per això la IA no substitueix el motor auditable. El complementa.
Un prototip no és un producte acabat
Publicar ClariCat implica deixar clares les seves limitacions.
Encara no disposa d’un analitzador morfològic i sintàctic complet. Falta ampliar les regles, crear perfils dialectals, reduir falsos positius, afegir un diccionari personal, sincronitzar preferències entre connectors i fer créixer molt el conjunt d’avaluació.
Actualment hi ha 31 proves automatitzades i un primer conjunt de 9 casos d’avaluació. És una base útil per evitar regressions evidents, però encara no és una avaluació exhaustiva de la llengua catalana.
ClariCat pot detectar errors reals. També pot no detectar-ne. Pot proposar suggeriments adequats i pot generar falsos positius.
No és una autoritat normativa ni substitueix una revisió professional.
Afirmar-ho no debilita el projecte. El situa honestament en el seu punt de desenvolupament.
La tecnologia oberta no necessita propaganda. Necessita documentació.
Replicar no és només copiar un repositori
Una de les idees centrals de ClariCat és la replicabilitat.
Això no significa únicament que algú pugui descarregar el codi. Significa que l’arquitectura ha d’estar prou separada i documentada perquè una altra persona pugui comprendre-la, modificar-la o adaptar-la.
Idealment, una comunitat lingüística amb pocs recursos hauria de poder reutilitzar una part de la infraestructura:
el motor de regles;
la interfície del diccionari;
la protecció de fragments tècnics;
el servidor local;
els connectors;
el sistema d’empaquetatge;
les proves;
la integració opcional amb un model local.
Després hauria de substituir el contingut lingüístic català pels seus propis diccionaris, regles i recursos.
No seria automàtic ni trivial. Cada llengua té els seus problemes, la seva morfologia i les seves necessitats. Però partir d’una base funcional és diferent de començar davant d’una carpeta buida.
Aquesta és una de les ambicions del projecte: no construir un altre gran sistema del qual tothom hagi de dependre, sinó una base que altres persones puguin estudiar i fer seva.
Sobirania lingüística també vol dir infraestructura
Defensem sovint que una llengua ha de ser present a Internet, als videojocs, a les aplicacions i als dispositius.
Però la presència no depèn només de traduir interfícies. També depèn de les eines que permeten escriure, revisar, cercar, transcriure, sintetitzar i processar aquella llengua.
Una llengua que només existeix dins de serveis que no controla continua existint, però ho fa en una posició fràgil.
ClariCat és un projecte modest comparat amb les grans infraestructures tecnològiques. No disposa dels seus equips, pressupostos ni anys acumulats de desenvolupament.
Però la sobirania no comença quan ja es pot competir en igualtat de condicions.
Comença quan algú decideix que és millor deixar una base imperfecta, documentada i ampliable que continuar assumint que tota la infraestructura important ha de venir feta de fora.
ClariCat és, ara mateix, aquesta base.
No és el corrector català definitiu.
És una prova funcional que podem començar a construir-ne un.
Nota:
ClariCat ja es pot consultar, provar i seguir a GitHub:
https://github.com/juliarscat/ClariCat
El projecte es troba encara en fase alfa i té molta feina per endavant, però el nucli, els connectors i la documentació ja són públics. L’objectiu és continuar convertint aquesta base en una infraestructura lingüística local, auditable, modificable i útil per al català.
Ut alii vivant — perquè els altres visquin.


