No olvides que en la informática un problema casi siempere suele tener diferentes resoluciones, pero aquí compartiremos lo más óptimo y mejor.
Solución:
Esas son todas las reglas generales (y buenas), pero el inglés no es un idioma para los débiles de corazón :-).
Mi propia preferencia sería tener un motor de transformación junto con un conjunto de transformaciones (sorprendentemente) para hacer el trabajo real. Ejecutaría las transformaciones (de específico a general) y, cuando se encontrara una coincidencia, aplicaría la transformación a la palabra y se detendría.
Las expresiones regulares serían un enfoque ideal para esto debido a su expresividad. Un conjunto de reglas de ejemplo:
1. If the word is fish, return fish.
2. If the word is sheep, return sheep.
3. If the word is "radii", return "radius".
4. If the word ends in "ii", replace that "ii" with "us" (octopii,virii).
5. If a word ends with -ies, replace the ending with -y
6. If a word ends with -es, remove it.
7. Otherwise, just remove any trailing -s.
Tenga en cuenta el requisito de mantener actualizada esta configuración de transformación. Por ejemplo, supongamos que alguien agrega el nombre de la tabla types
. Esto sería capturado actualmente por la regla #6
y obtendrías el valor singular typ
lo que obviamente es incorrecto.
La solución es insertar una nueva regla en algún lugar. antes de#6
algo como:
3.5: If the word is "types", return "type".
para una transformación muy específica, o quizás en algún lugar posterior si se puede hacer más general.
En otras palabras, básicamente deberá mantener actualizada esta tabla de transformación a medida que encuentre todas esas maravillosas excepciones que el inglés ha generado a lo largo de los siglos.
los otro posibilidad es no perder el tiempo con reglas generales en absoluto.
Dado que los nombres de las tablas serán relativamente limitados, simplemente cree otro tabla (o algún tipo de estructura de datos) llamada singulars
que mapea todos los nombres de tablas plurales relevantes (employees
, customers
) a nombres de objetos singulares (employee
, customer
).
Luego, cada vez que se agregue una tabla a su esquema, asegúrese de agregar una entrada a la “tabla” de singulares para que pueda singularizarla.
El problema es que se basa en las reglas generales, pero el inglés tiene (en sentido figurado) mil millones de excepciones… ¿Qué haces con palabras como “pez” o “gansos”?
Además, las reglas son sobre cómo convertir sustantivos singulares en plurales. El mapeo inverso no es necesariamente posible (considere “obsequios”).
Andrew Peters tiene una clase llamada Inflector.NET que proporciona métodos de plural a singular y de singular a plural. Como Tal ha señalado, ningún algoritmo es infalible, pero cubre una cantidad decente de sustantivos irregulares en inglés.
Agradecemos que desees añadir valor a nuestro contenido participando con tu veteranía en las interpretaciones.