Cómo se detectan las menciones complejas de patologías en IOMED

August 22, 2022

El Procesamiento de Lenguaje Natural (NLP por su terminología inglesa) ha atraído una gran atención en los últimos tiempos en el dominio clínico. El motivo de este interés es que los datos en formato texto, que consisten en notas clínicas que contienen el historial médico de los pacientes, diagnósticos, medicamentos, etc., son un recurso muy abundante en el entorno clínico. Una de las aplicaciones más frecuentes de los métodos de NLP en la investigación clínica consiste en encontrar instancias de un determinado concepto médico (una enfermedad o tratamiento específico) en un enorme corpus de notas clínicas (por ejemplo, en todo un hospital).

Esta tarea generalmente consta de dos partes: Named Entity Recognition (NER), que reconoce la entidad en el texto, y Named Entity Linking (NEL), que asigna a cada entidad un código que especifica el significado de la entidad bajo alguna terminología médica. Estas dos tareas son la base de muchos casos de uso de NLP clínico, como el reclutamiento de pacientes para estudios clínicos, la búsqueda de pacientes infra diagnosticados, la farmacovigilancia, etc.

En IOMED desarrollamos sistemas específicos responsables de las tareas NER y NEL. Sin embargo, ningún modelo es perfecto y el modelo ignora algunas menciones clínicas. La razón por la que estos casos no se detectan con éxito puede ser que son una mención rara o una abreviatura de una enfermedad que no se mostró previamente al modelo, o tal vez una falta de ortografía de los términos objetivo.

¿Por qué es importante detectar estas menciones perdidas? Por ejemplo, imaginemos que queremos identificar a todos los pacientes de un hospital que tienen Psoriasis. Nuestro modelo es capaz de detectar todas las menciones de Psoriasis en las notas clínicas, sin embargo, omite aquellos casos en los que esta patología se reconoce como PSO, aunque los médicos suelen utilizar abreviaturas como PSO para referirse a este término médico. Como consecuencia estaremos perdiendo pacientes con esta patología.

Además, la detección de estas entidades omitidas también es importante para saber qué tan bien están funcionando nuestros modelos y, lo que es más importante, para que los modelos mejoren, aprendiendo de ejemplos que no se pudieron identificar correctamente. Los sistemas NER-NEL se evalúan clásicamente utilizando las nociones de Verdaderos Positivos (TP, entidades encontradas por el sistema que son correctas), Falsos Positivos (FP, entidades detectadas que son incorrectas) y Falsos Negativos (FN, entidades que no fueron encontradas), siendo estos últimos, los que nos interesan en este post.

En la imagen de arriba se ilustra un ejemplo del sistema NER-NEL. En el primer escenario el modelo detecta dos entidades en las notas, psoriasis y manos. Centrémonos por ahora en la mención de psoriasis. Este resultado puede ser validado por expertos que evaluarán las predicciones del modelo. Así, si es correcto se consideraría un Verdadero Positivo (TP), y en caso contrario un Falso Positivo (FP). Por otro lado, en el segundo escenario, el modelo, como en el ejemplo presentado anteriormente, no ha detectado ninguna entidad en una nota donde se menciona PSO. Entonces, esta mención no identificada de la patología Psoriasis sería considerada como un Falso Negativo (FN).

Al evaluar un sistema NER-NEL, los verdaderos positivos y los falsos positivos se pueden estimar fácilmente al anotar manualmente una muestra representativa de los documentos clínicos con los que estamos trabajando. Sin embargo, esto no es una opción factible para la estimación de Falsos Negativos, debido a la gran cantidad de textos clínicos que hay en un hospital (a menudo del orden de decenas de millones). Por lo tanto, necesitamos un sistema capaz de detectar aquellas menciones que nuestro modelo no está siendo capaz de detectar. A pesar de que el sistema perfecto sería revisar manualmente todas las notas clínicas para encontrar las entidades omitidas por el modelo, existen formas mucho más inteligentes y efectivas de encontrar estas menciones.

Para simplificar este problema, volvamos a nuestro ejemplo de Psoriasis. Tanto Psoriasis como PSO son formas diferentes de mencionar un mismo concepto médico, por lo que podemos suponer que el contexto de estas menciones en las notas clínicas sería el mismo. Teniendo esto en cuenta, para encontrar notas donde se mencione PSO, podemos reformular el problema para encontrar notas similares donde se haya encontrado Psoriasis. Esto reduciría la cantidad de notas que se deberían revisar de forma manual para encontrar falsos negativos de la patología concreta.

Por lo tanto, lo que proponemos para este problema es una configuración intermedia donde en lugar de encontrar automáticamente entidades FN, automaticemos la búsqueda de notas con alta probabilidad de contenerlas. Así, ante una entidad de la que nos interesa hallar posibles menciones no detectadas, utilizamos las notas clínicas que contienen menciones positivas encontradas por nuestro sistema NER/NEL para buscar notas similares donde este sistema no ha encontrado ningún caso positivo. La solución que planteamos es un paso extra que realizamos después de la ejecución del modelo y la metodología propuesta consiste en tres simples pasos:

  1. Transformar todas las notas en una representación numérica a través de tu algoritmo favorito.

Con el objetivo de simplificar, mostramos cómo las notas se pueden representar numéricamente a través del algoritmo más simple, Bag of Words. Cada nota está representada por una secuencia de 0 y 1. Cada posición en la secuencia representa una palabra que se ha encontrado en las notas. Si la nota representada tiene la palabra, esa posición se completará con un 1. Algunos algoritmos más recientes tienden a mostrar un mejor rendimiento, - TF-IDF, los modelos de vectorización de palabras y los Transformers pueden hacer un gran trabajo en esta tarea.

  1. Seleccionar notas donde el modelo haya encontrado una mención de la entidad de destino y promediar su representación numérica en una sola representación.

Una vez más, digamos que nuestro modelo es bastante tonto y solo detecta la psoriasis cuando encuentra la palabra Psoriasis, pero existen varias otras formas de referirse a esta patología, por ejemplo, PSO. Este paso consistiría en seleccionar todas las notas donde se haya detectado Psoriasisy promediar sus secuencias por columnas. Este vector final lo denominaremos vector de consulta.

  1. Clasificar el resto de notas dada la distancia de coseno al vector de consulta y enviar a validación.

Hay algo bastante sorprendente acerca de las secuencias de números, la distancia entre dos secuencias se puede medir como el coseno del ángulo que forma estas secuencias en el espacio. De esta forma, cuanto más cerca estén las secuencias en el espacio, más similares serán las notas. Para este ejemplo, al usar el algoritmo Bag of Word, las secuencias más cercanas serán notas con una mayor cantidad de palabras compartidas. Posteriormente, las secuencias más cercanas al vector de consulta, es decir, a la representación de la entidad que queremos detectar, tendrán una mayor probabilidad de contener una referencia de dicha entidad.

Y esto sería todo, con este sistema de tres pasos se pueden identificar y priorizar para su validación las notas con alta probabilidad de contener menciones de una patología. Cabe señalar que para cada etapa se ha descrito el procedimiento más sencillo, sin embargo este sistema es flexible y permite cambiar los diferentes componentes por métodos más potentes.



Image Description

María Vivó

NLP data scientist