2011-03-15 15 views
6

Tengo un texto que fue generado por otro sistema. Combinó algunas palabras juntas en lo que supongo que fue una especie de subproducto de envoltura de palabras. Entonces algo simple como 'el perro' se combina en 'el perro'.corrección de procesamiento de lenguaje natural para palabras combinadas

Revisé la cadena de caracteres ascii y unicode para ver si no había algún personaje invisible allí, pero no los había. Un problema confuso es que este es texto médico y no hay un corpus para verificar que no esté disponible. Entonces, el verdadero ejemplo es '... la prueba para descartar el SARS versus la neumonía' termina como '... versus la neumonía'.

Alguien tiene una sugerencia para la búsqueda y la separación de estos?

+0

¿Este texto fue OCR? – tchrist

Respuesta

0

Esto es lo que hice. Combiné un par de ideas y utilicé una metodología de arranque general con una solución bastante buena. Usé Python para todo esto.

  1. tomó una muestra de informes, tokenized todas las palabras y creó una tabla de frecuencias.
  2. Para palabras con una frecuencia de 3 o bajo (frecuencia de 4 o más se consideró lo suficientemente comunes para ser correcta), les hechizo comprueba mediante paquete PyEnchant (encantar biblioteca)
  3. construyeron un diccionario médico de la 'mal escrito' palabras, en el paso 2, que fueron clínicas.
  4. para todos los informes, creó una tabla de frecuencias
  5. palabras con una frecuencia inferior a 4, que hechizo comprobado cada uno usando PyEnchant y mi diccionario médico
  6. tomó a cada palabra mal escrita y los dividieron en todas las maneras posibles. Las divisiones se probaron para la creación de 2 palabras correctamente deletreadas.mantuvo cualquier división exitosa
  7. Para cada posible solución, se utilizó la solución de mayor ponderación.
1

Este es un problema bastante complicado.

Probablemente diría que un método de combinación es la mejor opción.

  1. Búsqueda de "palabras mal escritas"
  2. Para cada uno de ellos, comprobar para ver si hay alguna combinación de las palabras del diccionario que pueden hacer. Puede suponer que una palabra solo está formada por dos palabras, debido al paso 4 2.1. Si obtienes una coincidencia, confirma con el humano.
  3. Si no hay ninguna coincidencia, pedir a la humana para decir "esto es una palabra real que no tiene", o "esto es la corrección"

Sería más o menos sea una forma avanzada de corrector ortográfico. Podrías automatizarlo más, pero no lo arriesgaría en algo tan importante.

Como alternativa, puede buscar patrones con cuando se rompe el sucedan. Por lo tanto, si, por ejemplo, cada n-ésimo carácter que debe ser un espacio no lo es, puedes arreglarlo.

2

Esto puede ser de interés para usted http://www.perlmonks.org/?node_id=336331

Probablemente puede utilizar la naturaleza médica del texto para su ventaja mediante el uso de dos diccionarios, uno que contiene sólo la terminología médica y uno de Inglés general.

Si puede aislar palabras médicas y luego ejecutar el resto de la cadena contra el diccionario general, obtendrá algunos resultados decentes.

Cuestiones relacionadas