Este error se descubrió cuando tenía una especificación de autoetiquetado en una cadena corta, por ejemplo, “art”. Como resultado, se etiquetaron automáticamente temas con “artificial”, etc.
Por si acaso: la función “probar” en la página de especificación de autoetiquetado funciona correctamente (para el autoetiquetado de “art”, “artificial” no genera una etiqueta en la prueba).
Es probable que el error no haya sido notado porque quizás es poco común aplicar autoetiquetado a una palabra vigilada corta.
Supongo que tenía watched_word_regular_expression activado de forma predeterminada y no me di cuenta de que esto rompe la función de “actuar sobre palabras completas”. ¿Es necesario que actuar sobre palabras completas sea incompatible con las expresiones regulares?
Es decir, ¿debería seguir considerándolo un error o una restricción necesaria derivada de otra característica?
Hasta ahora, sigo considerándolo un error. No veo ninguna razón por la que el análisis de palabras completas sin usar expresiones regulares deba ser incompatible con el análisis mediante expresiones regulares cuando se especifica una.
Si estás usando expresiones regulares (regex) para algunas de tus palabras vigiladas, esto se aplica a todas. Por lo tanto, si la regex está habilitada y tienes la etiquetación automática configurada para art, se espera que artificial sea etiquetado. Para buscar únicamente la palabra art, utiliza el metacarácter de límite de palabra \\b. En el caso de art, esto se vería así: \\bart\\b.
Deberíamos asegurarnos de que la interfaz de usuario nos indique cuándo esto está habilitado, ya que el significado del campo es bastante diferente cuando está activo.
Un poco como cuando aparece “MAYÚSCULAS ACTIVAS” al ingresar tu contraseña, etc.
Muchas gracias a todos. Debo disculparme si mi comprensión bastante sencilla de las expresiones regulares ha sido deficiente y ha llevado a malinterpretar cómo funcionan para las palabras vigiladas. Pero… unos cuantos puntos:
Supongo que pensé que el contexto de la expresión regular se tomaba como algo así como “cadena dentro de límites de palabra”. ¿Qué otra cosa tendría sentido? ¿Seguramente no todo el documento del tema? En este caso, para que “artificial” se etiquetara, tendría que especificar art* (o art.* o algo así, como se menciona en el título de este tema).
Joshua: gracias por tu sugerencia del metacarácter de límite de palabra. Acabo de probarlo y no funcionó. Ni en la función de prueba ni en la práctica real. Así que… actualmente parece no haber ninguna solución alternativa (o “manera correcta” de obtener el comportamiento deseado).
La función de prueba es muy buena. Parece comportarse exactamente como yo intuitivamente pensaba que debería. art se activa solo cuando aparece “art” como palabra (y no se activa en “artificial”), art* se activa en “artificial”, como era de esperar. Además, art* life se activa tanto en “art life” como en “artificial life”. También pensé que tal vez la función de prueba no estuviera usando el análisis de expresiones regulares si solo ingresaba una sola palabra, pero no… foo* art se activa en “foobar art”, no se activa en “foobar artificial”. Así que… quien escribió la función de prueba estaba pensando como yo pienso (creo).
En resumen,
La sugerencia de Jeff de un recordatorio de que watched_words_regular_expressions está habilitado es buena.
El comportamiento de la función de prueba debe coincidir con el comportamiento real.
Y por cierto, mi preferencia es que el comportamiento real coincida con el comportamiento actual de la función de prueba.
Si uno necesita más conocimientos de expresiones regulares de los que sugiere la función de prueba actual, sería bueno tener ejemplos en algún lugar.
Si hay una solución alternativa o una “manera correcta” (como “usar \\bart\\b para obtener el comportamiento deseado”), estaré encantado de usarla.
De nuevo, gracias a todos por su atención a este problema bastante menor para una gran plataforma.
He añadido un aviso cuando la configuración del sitio para expresiones regulares de palabras vigiladas está habilitada en este PR:
Así se ve con las expresiones regulares deshabilitadas y luego habilitadas (observa el aviso y el marcador de posición del campo de entrada diferente):
Pero Bianca,
mi intento con '\\bart\\b' no activó la coincidencia en “art” (ni en “artificial”, como no debería).
Este intento fue para el etiquetado automático.
¿Hay alguna razón por la que no podamos utilizar exactamente la función Test existente para analizar los temas (y así realizar el etiquetado automático)?
Si tienes habilitada la configuración del sitio watched words regular expressions, debes usar \bart\b, donde \b representa el límite de palabra. Si la configuración del sitio está deshabilitada, no es necesario usarlo, ya que los límites de palabra se incluyen automáticamente.
Acabo de probarlo y funciona perfectamente en mi caso, incluyendo el modal de prueba:
Estaba confundido sobre la activación de expresiones regulares de palabras vigiladas. Pensé que se configuraba automáticamente si usaba un comodín * en mi especificación de autotriggers. Veo que no es así, por lo que no es sorprendente que mi intento con \\bart\\b haya fallado.
Revisaré la ‘última versión’ para obtener tu implementación de la función de prueba. Para mí, Test siempre funcionó, al igual que para ti.