Respondiendo directamente a su pregunta, usted comienza por verificar si un token dado es numérico, alfanumérico o alfabético (puede usar la expresión regular aquí) y luego lo clasifica como tal. En general, el enfoque que está buscando se llama jerarquía de generalización de tokens o selección jerárquica de características (Google it). La idea básica es que podrías tratar a cada token como un elemento separado, pero ese no es el mejor enfoque ya que no puedes cubrirlos a todos [*]. En su lugar, utiliza funciones comunes entre tokens (por ejemplo, 2000
y 1981
son tokens distintos pero comparten una característica común de ser números de 4 dígitos y posiblemente años).Luego tiene una clase para números de cuatro dígitos, otra para alfanuméricos, y así sucesivamente. Este proceso de generalización lo ayuda a simplificar su enfoque de clasificación.
Con frecuencia, si comienza con una cadena de tokens, debe preprocesarlos (por ejemplo, eliminar signos de puntuación o símbolos especiales, eliminar palabras que no son relevantes, derivar, etc.). Pero tal vez puedas usar algunos símbolos (por ejemplo, puntuación entre ciudades y países, por ejemplo, Melbourne, Australia
), por lo que debes asignar ese conjunto de símbolos de puntuación útiles a otro símbolo (#
) y usarlo como contexto (entonces la próxima vez que encuentres un palabra al lado de una coma al lado de un país conocido, puede usar ese conocimiento para suponer que la palabra desconocida es una ciudad.
De todos modos, esa es la idea general detrás de la clasificación usando una ontología (basada en una taxonomía de términos). también es posible que desee leer sobre part-of-speech tagging.
Por cierto, si sólo quiere tener 3 categorías (numéricos, alfanuméricos, alfabético), una opción viable sería utilizar edit distance (lo que es más probable, que UA4E30 pertenecen s a la categoría alfanumérica o numérica, considerando que no se corresponde con el formato tradicional de las cadenas numéricas prefijadas?). Entonces, usted asume un costo por cada operación (inserción, eliminación, sustitución) que transforma su token desconocido en uno conocido.
Finalmente, aunque dijiste que estás usando Protege (que no he usado) para construir tu ontología, te recomendamos que consultes WordNet.
[*] Existen enfoques probabilísticos que lo ayudan a determinar la probabilidad de un token desconocido, por lo que la probabilidad de dicho evento no es cero. Por lo general, esto se hace en el contexto de Hidden Markov Models. En realidad, esto podría ser útil para mejorar la sugerencia dada por etov.
Una cadena podría ser tanto el nombre de una ciudad como el nombre de un país (bueno, conceptualmente, se basa en los hechos dados hasta ahora). Una ontología no necesita tener herencia única. –