Softcatala / conjugador

conjugador
7 stars 3 forks source link

Ignorar els accents, dièresis, trencs i punts volats en la cerca i autocompleció #8

Closed jmontane closed 4 years ago

jmontane commented 4 years ago

La cerca requereix haver d'escriure els diacrítics correctament. Caldria ignorar els diacrítics (accents, dièresis, punts volats, trencs de la ce trencada). Un tema relacionat però que segur requeriria tractament ad hoc seria reconèixer grafies de la ela geminada alternatives. Per exemple l'IEC reconeix L.L.

Els caràcters que caldria considerar són, almenys: àèéíòóúïüç· (i també en majúscula). Potser amb l'opció Accent Folding de Whoosh? Sembla que permetria tractar tots els caràcters base de l'alfabet llatí [a-z] i tots els possibles diacrítics. El punt volat potser sí que necessitaria un tractament més específic.

Per exemple:

jordimas commented 4 years ago

Hola Joan. Ignorar els diacrítics per mi voldria dir només els verbs que el diacrític serveix per diferenciar-los d'altres paraules. Vols dir que només verbs com "sé" o vols dir tots els accents en general? Gràcies

jmontane commented 4 years ago

No, em refereixo al diacrítics en sentit ampli (accents, dièresis, el trenc de la ç i el punt volat).

És l'experiència que esperen els usuaris. Si cerquen "coneixer", "arguir", "alcar" o "pul.lular" haurien d'obtenir la flexió de "conèixer", "argüir", "alçar" o "pul·lular", respectivament.

jordimas commented 4 years ago

Hola Joan,

Podem anar editant el primer comentari per anar-lo polint amb aquesta discussió i que reflecteixi el que volem fer? Gràcies

De fet no parlem de diacrítics ja que un diacrític és "Un signe diacrític és un signe que s'afegeix a una lletra per a alterar la pronunciació d'una paraula, o per a distingir-la entre paraules similars". Intentaria ser el més precís possible per no caure en interpretaccions incorrectes de la necessitat.

Alguns comentaris / qüestions per aclarir la necessitat:

jmontane commented 4 years ago

Gràcies. Modifico el text perquè sigui més clar. El significat del terme "diacrític" depèn força del context. En ortografia catalana és el que indiques, però en codificació de text s'entén per diacrític qualsevol signe gràfic que s'afegeix a un caràcter base (habitualment A-Z)

jaumeortola commented 4 years ago

Jordi: el terme diacrític és absolutament precís (en anglès: diacritical mark). Del mateix lloc on has tret tu la definició (la Viquipèdia): imatge

jordimas commented 4 years ago

D'acord, gràcies. No ho sabia. Jo sempre l'havia interpretat com un accent que ajuda a desambiguar la funció d'un paraula que s'escriu igual (bé vs be). El més important doncs es tenir la llista exacta de caràcters als quals volem incidir

jaumeortola commented 4 years ago

Ja hi ha funcions que fan això, la del mateix Whoosh que esmenta Joan, o altres en Python. Així i tot, la ela geminada segurament necessitarà un tractament especial (que de totes maneres caldria si volem admetre grafies errònies: l.l, etc.):

>>> import unidecode
>>> print(unidecode.unidecode("acaçar, argüir, dèiem, il·luminar, il·lustrar"))
acacar, arguir, deiem, il*luminar, il*lustrar
jordimas commented 4 years ago

@jmontane Entenc que això ha de funcionar per l'autocomplete i la cerca, les dues funcions? Si és així, si us plau comentau en el primer comentari

jordimas commented 4 years ago

He pujat una versió amb la feina que hi ha a la branca:

https://github.com/Softcatala/conjugador/commits/search_diatritics

El primer problema que veig era el que feia referència abans. Per exemple, cerquem "plaçar" però ara surten les formes de placar en c i tot just el que has escrit "plaçar" no apareix a l'autocomplete malgrat existeix. El problema que veig a l'accent folding aquest és que llavors no es dóna prioritat a la forma que estàs buscant ja que s'equiparà amb altres que coincideix.

Els canvis que està fent en @xavivars no solucionaran això ja que només es prioritiza l'infinitiu i el seu canvi no està pensat per adreçar aquest problema.

jaumeortola commented 4 years ago

Amb el que s'ha fet veig un petit problema. Quan l'usuari cerca "vénc" (o un cas semblant: vénen) dóna això: imatge I aquí: https://www.softcatala.org/api/conjugadorsearch/v%C3%A9nc Els "vénc" de vendre i vèncer són erronis, no existeixen. Caldria mantenir la forma que s'ha trobat, que és diferent en cada cas, i posar-la en un camp nou de l'API que no tenim:

Hauríem d'aplicar aquesta lògica:

(Tot això és filar molt prim, i segurament passa en molt pocs casos.)

jordimas commented 4 years ago

La meva proposta és:

Per implementar això caldrà tenir dos índexos (un amb diàtrics i altre sense) ja que això es fa en temps d'indexació.

xavivars commented 4 years ago

Jo, com a usuari, el que esperaria és que si busque sense accents, em torne coses amb accents i sense (perquè potser només sé com s'escriu).

Si busque amb accents, només esperaria coincidències amb accent.

jordimas commented 4 years ago

D'acord. Ara ha producció tenim que en la cerca, si la cerca normal torna 0 resultats fa una sense diacritics. Veure: https://github.com/Softcatala/conjugador/tree/search_diatritics

Encara no he tingut temps de fer que la coincidència s'inclogui al resultat de la cerca (últim punt de la proposta del Jaume)

jordimas commented 4 years ago

Jaume, caldria veure el comportament que té això en producció ara:

https://web2015.softcatala.org/conjugador-de-verbs

Perquè el cas de "venc" ja no es dóna ja que en la primera cerca exata ja el troba com a part de "vendre" i llavors ja no fa la cerca amb diácritics (ja que només la fa si la primera cerca no troba res).

jaumeortola commented 4 years ago

Jo ara veig bé el comportament de la cerca.

Només falta, com ja havies dit, els casos de la ela geminada.

jordimas commented 4 years ago

Si, el tema de la ela geminada no el farem de moment.

jordimas commented 4 years ago

Ho tanco, si hi ha alguna cosa més re-obrim-ho