Puedes probar el generador acá.
La narrativa médica es un tema muy estudiado en estos momentos dado el gran advenimiento de la Inteligencia Artificial en la sociedad en general.
Lograr entender cuál es el significado de una narrativa médica es el objetivo principal del Procesamiento de Lenguaje Natural en Medicina, si llegamos a una perfecta representación sistematizada de la información que escriben los profesionales de la salud en las distintas fuentes de datos clínicos, muchos problemas podrían solucionarse en el área de la salud, desde la justa priorización de un paciente dentro de la temida lista de espera hasta la correcta distribución de recursos dentro de un establecimiento de salud.
La narrativa médica o mejor dicho el lenguaje en general no tiene una distribución al azar, sino que podemos encontrar patrones fácilmente de manera casi intuitiva, por ejemplo al explorar diagnósticos nos encontramos con que la palabra caries en la mayoría de los casos está acompañada de palabras que definen más específicamente el diagnóstico, las cuales tienen una distribución predecible, por ejemplo:
Es muy probable que encontremos los siguientes grupos de 2 palabras (bigramas) con mucha frecuencia:
- caries dentinaria
- caries penetrante
Pero que nos encontremos con una frecuencia casi nula los bigramas:
- caries cerebral
- caries pulmonar
Esto quiere decir que dada una palabra de entrada podemos predecir qué palabras le seguirían con mayor probabilidad.
Uno de los métodos que podemos utilizar para modelar este comportamiento son las Cadenas de Markov, en donde establecemos una matriz de probabilidades en donde como filas tenemos cada una de las palabras de nuestro vocabulario y cada uno de los valores de esta fila nos dice con qué probabilidad aparece una siguiente palabra.
Este modelamiento tiene una desventaja, porque sólo podemos predecir la siguiente palabra dado una única palabra anterior, olvidándonos de todo lo que hayamos escrito antes.
Para modelar el lenguaje utilizado en los diagósticos, se extrajeron las frecuencias de todos los bigramas posibles dentro de alrededor de 2 millones de diagnósticos médicos, el desarrollo del modelo se realizó en Python y el código para poder entrenar tus propios modelos o probar el modelo generado con los 2 millones de diagnósticos se encuentra libre pero los datos de entrenamiento no se encuentran disponibles debido a temas bioéticos.
Ejemplo
synthesizer = src.utils.DiagnosticGenerator( # Clase para construir el Generador de diagnósticos. markov_matrix_file = r"../models/model.npz", # Localización de la matriz de Markov. vocabulary_file = r"../models/vocabulary.txt" # Localización del vocabulario. )
synthesizer.generate() # Método para generar un diagnóstico.
Algunos diagnósticos generados
Todos los siguientes diagnósticos fueron generados por una máquina.
- caries dentinaria penetrante
- periodontitis apical aguda
- pulpitis aguda resuelta
- queratoquiste ramamandibular izquierda sobreinfectada con rx de alta obs
Podemos observar que todos los diagnósticos aparentemente tienen sentido, por lo que somos capaces de simular una narrativa médica de cierto modo basándonos sólamente en la distribución de frecuencias de las palabras.
Felicidades por tu blog fabián. felicidades por tu blog fabián