Página 1 de 1

Identificación de edades

NotaPublicado: 2011-07-24 12:07 @547
por otorices
Me gustaría saber qué tecnica puede ser la más efectiva para identificar edades en un texto. Está claro que no es suficiente con buscar la cadena "X años" ya que puede ser confundido con un periodo de tiempo (p.e trabajó durante 2 años).

¿Alguien tiene alguna idea?

Gracias.

Re: Identificación de edades

NotaPublicado: 2011-07-24 15:27 @685
por pvaldes
Obviamente depende del texto... hay decenas de enfoques posibles, imagino que echar un vistazo al verbo ayudará

por ejemplo

1 - sacar con grep() todo lo que lleve números seguido de años, meses (o días o minutos si vas a incluir recién nacidos)

@validos = ('tiene', 'nace hace', 'nació hace','cumplió');
@no_validos = ('trabajo', 'estuvo','está', 'cumplió');

observa que 'cumplió' puede aparecer en ambos casos: 'cumplió X años' (de condena) así que tendrás que tratarlo como un caso especial y poder diferenciarlo o no funcionará. Buscar la cadena "y un día" puede ayudar aquí.

2 - sacar la palabra anterior con un regexp
3 - bucle if() para comparar esa palabra

si existe en válidos seguido de número seguido de años o meses o días... hacer algo, por ej. print()

si existe en no_válidos seguido de número seguido de años o meses o días ... next

else print "no sé qué hacer con esto"

etc

Re: Identificación de edades

NotaPublicado: 2011-07-25 03:16 @178
por explorer
Sí, es muy complicado, pues lo ideal sería hacer una interpretación del significado de lo que se dice, y eso está algo alejado de los temas que tratamos aquí. Es más bien un trabajo de tesis doctoral :)

La forma sencilla es buscar por palabras clave ("edad", "años", "nacimiento", "fecha", "tiene", etc), extraer esas frases, e intentar filtrar los falsos positivos.