Detectar nombres propios en un texto

En el análisis de un texto detectar los nombres propios es importante ya que aporta información de que se habla en el texto. Permite extraer nombres e personas empresas y de hecho es una tarea habitual en muchos sistemas inteligentes de gestión de documentos.

Empiezan por mayúscula

Detectar nombres propios en español parece una tarea sencilla, lo primero que se nos ocurre es: “Empiezan por mayúscula” y es cierto, cualquier palabra que empiece por mayúsculas en un texto es sospechoso de ser un nombre propio. As que nuestro primer paso es recopilar esas palabras.

No es suficiente con que empiece por mayúscula. Cualquier palabra al principio de una oración también empieza por mayúscula y precisame el principio de la oración es un lugar muy habitual para los nombres (propios o comunes). En ese caso la mayúscula no servirá de pista. Es necesario obtener la información de si una palabra “sospechosa de se un nombre” va o no al principio de una frase.

Pero no es el único caso en que una palabra que no sea un nombre propio empieza por mayúscula. Siglas, meses, días de la semana, notas musicales, cargos, períodos históricos….. Hay muchos casos en los que correcta o erróneamente (los días de la semana no deberían ir en mayúsculas pero no es raro verlos así) se suelen poner la letra inicial en mayúscula.

Siglas y acrónimos

Como caso especial están las siglas y acrónimos. El problema aquí es distinguir los que generalmente indican nombres propios de otros que no lo son, por ejemplo ONU, OTAN, USA son nombres propios mientras que SOS, WTF, OMG no lo son. Para distinguir siglas del resto de palabras de un texto es sencillo, están completamente escritas en mayúsculas y a veces tiene puntos entre ellas. Sin embargo, por motivos esteticos, puede darse el caso de encontrar siglas con minúsculas, sobre todos cuando son nombres de empresas.

Números Romanos

Son fáciles de confundir con las siglas. De hecho a veces son indistinguibles, por ejemplo CC puede ser 200 o significar “con copia”.

Los números romanos van sin punto al final y solo pueden contener las letras M,D,C,L,X,I.

Diccionarios

Necesitamos dos diccionarios, uno de palabras comunes que van en mayúsculas y no son nombres y otro de nombres.

Si una palabra empieza por mayúscula y está en el diccionario de nombres se puede considerar un nombre. Este diccionario a veces es difícil de crear ya que no se sabe que nombres se buscan, sin embargo cuando se sabe exactamente lo qué se busca puede ser una herramienta muy potente.

El diccionario de términos que pueden ir en mayúsculas y no son nombres es más genérico. Está formado por palabras que se suelen escribir en mayúsculas y otras que pueden ir al principio de una frase. Podemos incluir:

  • Meses del año
  • Días de la semana
  • Festivos
  • Notas musicales
  • Abreviaturas
  • Títulos, cargos y nombres de dignidad
  • Signos del zodíaco
  • Puntos cardinales
  • Siglas y acrónimos de nombres comunes o expresiones
  • Palabras que a veces se escriben con mayúsculas: patria, gobierno, biblia, dios,….
  • Onomatopeyas
  • Determinantes
  • Pronombres

Ojo que hay casos en que un nombre propio puede confundirse con alguno de los casos anteriores. Por ejemplo: Abril o Domingo son nombres de personas.

Hay que tener en cuenta que en el caso de los nombres compuestos pueden empezar por alguno de los elementos que están en este diccionario. Por ejemplo: “El Dorado, Los Ángeles”

Hay una mejora al diccionario de nombres y es añadir dinámicamente los nombres que vamos encontrando en el texto. Los nombres generalmente se repiten varias veces en el texto y puede ayudar a despejar las dudas sobre alguna palabra.

Palabras dudosas

Vamos a repasar los pasos que tenemos hechos hasta ahora.

  1. Seleccionar palabras que empiezan por mayúscula.
  2. Del paso anterior seleccionar aquellas que no están detrás de un punto o al inicio de una frase.
  3. Descartar excepciones usando reglas (como los números romanos) o el diccionario de palabras en mayúsculas que no son nombres.
  4. Las restantes del paso anterior se consideran nombres.
  5. Se añaden al diccionario de nombres
  6. Se toman las palabras del paso 1 que van detrás de un punto o al principio de una frase.
  7. Si están en el diccionario de nombres se consideran nombres.

Tras estos pasos nos quedan un conjuntos de palabras que no sabemos si son nombres o no. Podemos usar alguna heurística más como considerarlo un nombre si van dos palabras con mayúsculas seguidas o si son siglas.

Al final nos quedan palabras que dudamos si son nombres o no. Si el texto ha de pasar a revisión por un humano lo mejor es marcarlos como “posibles nombres”, si no hay más opciones que marcarlo como nombre o no hay que valorar que opción es menos costosa, detectar como nombres palabras que no lo son o dejarse nombres sin detectar.

Nombres compuestos

Por ahora hemos tratado los nombres como si solo fueran una palabra, pero eso es muy irreal, gran cantidad de nombres están compuestos por más de una palabra. Para detectarlos vamos juntar todos aquellas palabras que empiecen por mayúscula y vayan seguidas (sin otras palabras o signos de puntuación entre ellas).

Si una de esas palabras cumple los requisitos para ser nombre se extiende a las demás palabras en mayúsculas que la rodean.

Mejoras

Uno de los elementos más importantes de este enfoque son los diccionarios. Cuando el sistema solo va a trabaja con textos de una temática concreta unos buenos diccionarios pueden dar resultados muy exactos.

Algo parecido pasa con reglas propias para textos de ciertos ámbitos. Por ejemplo si se buscan nombres de empresas se podría usar como pista que terminen en “S.A.”, “S.L.”, “INC”, …

Hay nombres como los títulos de libros o películas que entrañan bastante dificultad ya que las reglas ortográficas dicen que tienen que ir en mayúsculas solo la primera palabra. Suelen ir entrecomilladas, en cursiva o en negrita, pero aún así no es un problema sencillo.