Практически столько же с гораздо меньшими затратами: пример биомедицинского распознавания именованных сущностей

Может ли простой метод сопоставления строк конкурировать с большой контролируемой моделью?

В начале любого нового проекта НИОКР я ищу наиболее подходящее решение проблемы. Несмотря на то, что доступно несколько очень интересных больших моделей, одна из моих самых больших проблем - запустить это решение в производство без ущерба для результатов, которые я хотел бы поддержать. Недавно у меня возник вопрос, может ли простой метод сопоставления строк - в сочетании с некоторыми простыми оптимизациями - конкурировать с контролируемой моделью в биомедицинской задаче распознавания именованных сущностей (NER). Я протестировал эти два метода лицом к лицу.

На стороне системы сопоставления строк я использовал классификатор QuickUMLS. QuickUMLS [1] - как система сопоставления строк - принимает строку в качестве входных данных (например, статью или реферат статьи, содержащей медицинские концепции) и выводит все промежутки из документа, соответствующие Unified Medical Понятия языковой системы (UMLS). Эти концепции затем можно повторно использовать в других настройках или в качестве входных данных для других систем машинного обучения. По этой причине QuickUMLS можно рассматривать как удобный инструмент предварительной обработки для получения соответствующих концепций из клинических и биомедицинских текстов. Однако в этом сообщении блога мы сосредоточимся на использовании QuickUMLS в качестве классификатора для сложного набора данных MedMentions. [2]

Основные сведения о биомедицинском NER

Прежде чем мы углубимся в проблему, которую пытаемся решить, полезно описать некоторые особенности биомедицинской ЧЭИ. В общем, проблема NER состоит в том, чтобы найти названные объекты (например, известные места, людей, организации и т. Д.) В тексте. Как вы, наверное, догадались, многие из этих сущностей можно найти через контекст. Например, в таком предложении, как: «Сэм и Дрю пошли в Колизей», мы можем сделать вывод, что Колизей - это место, потому что вы обычно ходите в места. Точно так же мы можем предположить, что «Сэм» - это имя собственное, потому что слова в субъектном положении «идти», которые не являются банальными словами, обычно становятся именами.

В отличие от этого, биомедицинский NER предназначен для поиска и устранения неоднозначности биомедицинских терминов, представляющих интерес, из текста, таких как болезни, названия лекарств, а также общих терминов, таких как больница, палата интенсивной терапии или алкоголь. Это важное различие, поскольку существует очень мало контекстной информации, определяющей, имеет ли данное слово медицинское значение. Чтобы дать немного нагруженный пример, рассмотрим слово алкоголь в предложении пациент пил много алкоголя. Серьезность этого вывода зависит от того, относится ли он к алкоголю, например, к пиву или вину, или к чистому алкоголю, например, медицинскому спирту. Для более полного обзора современного состояния биомедицинского NER см. Это сообщение в блоге моего коллеги из Slimmer AI, Сибрен Янсен.

Трудно понять, какие концепции имеют медицинское значение, без большого количества обучающих данных, которые обычно не всегда доступны. Поэтому многие системы используют Unified Medical Language System (UMLS), которая представляет собой большую онтологию, содержащую множество различных концепций вместе с их строковыми представлениями и другой информацией. Обратите внимание, что понятие отличается от строки, потому что многие строки могут относиться к более чем одному понятию. Строка «алкоголь», например, может относиться к медицинскому спирту или к алкогольным напиткам.

В UMLS каждое понятие описывается уникальным идентификатором понятия (CUI), который является символическим идентификатором для любого данного уникального понятия, и семантическим типом (STY), который представляет собой идентификатор семейства, который группирует понятия с похожими характеристиками. Одна из причин, по которой UMLS полезен, но с ним сложно работать, - это его размер; Версия UMLS 2020AB, которую мы будем использовать в дальнейшем, содержит более 3 миллионов уникальных английских концепций. Маловероятно, что значительная часть этих концепций появится даже в больших аннотированных наборах данных.

Использование набора данных MedMentions

Один из таких наборов данных - MedMentions. Он состоит из 4392 опубликованных статей (названия и аннотации) за 2016 г .; аннотировано 352 тыс. концепций (идентификаторов CUI) и семантических типов из UMLS. В документах содержится около 34 тысяч аннотированных уникальных концепций, что по-прежнему составляет лишь около 1% от общего количества концепций в UMLS. Это показывает, что аннотирование упоминаний UMLS - сложная задача, которую невозможно решить с помощью машинного обучения с учителем.

Особый интерес в этом отношении представляет то, что корпус MedMentions включает в набор тестов CUI, которые не встречаются при обучении. В целом, однако, к этой задаче по-прежнему подходят как к задаче контролируемого машинного обучения с использованием семантических типов концепций UMLS в качестве меток. Поскольку UMLS имеет 127 семантических типов, это по-прежнему приводит к большому пространству меток. Набор данных MedMentions также имеет уменьшенную версию, набор данных st21pv, который состоит из тех же документов, что и обычный набор данных, но с аннотациями только 21 наиболее часто встречающегося семантического типа.

Полумарковский базовый уровень дает около 45,3 F-балла на уровне сущностей. [2] Были протестированы другие подходы, в том числе BlueBERT [3] и BioBERT [4], и их результат улучшился до 56,3 с использованием точного соответствия на уровень сущности. [5] Обратите внимание, что все эти подходы контролируются и, таким образом, зависят от определенной степени совпадения концепций обучающего и тестового набора. Если концепция или ярлык никогда не появлялись во время обучения, подходу контролируемого машинного обучения будет сложно правильно классифицировать его. В дальнейшем мы будем использовать семантические типы набора данных MedMentions в качестве меток.

QuickUMLS: неконтролируемый и основанный на знаниях

В отличие от BERT, QuickUMLS по своей сути является неконтролируемым методом, что означает, что он не полагается на данные обучения. Точнее, QuickUMLS - это метод, основанный на знаниях. Это означает, что модель вместо параметров, которые говорят ей, что прогнозировать, полагается на внешнюю базу знаний для прогнозирования меток. Это подразумевает две вещи:

  1. Качество модели ограничено качеством базы знаний. Модель не может предсказать вещи, которых не содержит база знаний.
  2. Модель может быть обобщена за пределы аннотированных данных. Модель с учителем, которая не увидела конкретный ярлык во время обучения, в целом не может точно предсказать эти вещи. Исключением из этого правила являются методы обучения с нулевым выстрелом.

Основываясь на этих двух фактах, мы утверждаем, что методы, основанные на знаниях, хорошо подходят для набора данных MedMentions. Что касается первого пункта, база данных MedMentions была аннотирована с использованием концепций UMLS, поэтому сопоставление между базой знаний и набором данных является точным. Что касается второго пункта, набор данных MedMentions содержит тестируемые концепции, которых нет в обучающем наборе.

Архитектура модели QuickUMLS

QuickUMLS, как модель, прост. Сначала он анализирует текст с помощью парсера spacy. Затем модель выбирает нграммы слов, то есть последовательные последовательности слов, на основе части шаблонов речевых тегов и списков запрещенных слов. Вкратце, это означает, что модель отбрасывает определенные нграммы слов, если они содержат нежелательные токены и знаки препинания. Подробности этих правил можно найти в оригинальной статье. [1] После выбора всех кандидатов в словарные нграммы вся база данных UMLS запрашивается на предмет понятий, частично совпадающих со словесными нграммами. Поскольку точное сопоставление в такой огромной базе данных неэффективно и сложно, авторы выполняют приблизительное сопоставление строк с помощью simstring. [6] Таким образом, при получении текста QuickUMLS возвращает список понятий в UMLS вместе с их сходством со строкой запроса и другой связанной информацией. Например, текст: У пациента было кровотечение возвращает следующих кандидатов с использованием порога сходства строк (по умолчанию) 0,7:

Для слова пациент:

{‘term’: ‘Inpatient’, ‘cui’: ‘C1548438’, ‘similarity’: 0.71, ‘semtypes’: {‘T078’}, ‘preferred’: 1},
{‘term’: ‘Inpatient’, ‘cui’: ‘C1549404’, ‘similarity’: 0.71, ‘semtypes’: {‘T078’}, ‘preferred’: 1},
{‘term’: ‘Inpatient’, ‘cui’: ‘C1555324’, ‘similarity’: 0.71, ‘semtypes’: {‘T058’}, ‘preferred’: 1},
{‘term’: ‘*^patient’, ‘cui’: ‘C0030705’, ‘similarity’: 0.71, ‘semtypes’: {‘T101’}, ‘preferred’: 1},
{‘term’: ‘patient’, ‘cui’: ‘C0030705’, ‘similarity’: 1.0, ‘semtypes’: {‘T101’}, ‘preferred’: 0},
{‘term’: ‘inpatient’, ‘cui’: ‘C0021562’, ‘similarity’: 0.71, ‘semtypes’: {‘T101’}, ‘preferred’: 0}

Для слова кровоизлияние:

{‘term’: ‘No hemorrhage’, ‘cui’: ‘C1861265’, ‘similarity’: 0.72, ‘semtypes’: {‘T033’}, ‘preferred’: 1},
{‘term’: ‘hemorrhagin’, ‘cui’: ‘C0121419’, ‘similarity’: 0.7, ‘semtypes’: {‘T116’, ‘T126’}, ‘preferred’: 1},
{‘term’: ‘hemorrhagic’, ‘cui’: ‘C0333275’, ‘similarity’: 0.7, ‘semtypes’: {‘T080’}, ‘preferred’: 1},
{‘term’: ‘hemorrhage’, ‘cui’: ‘C0019080’, ‘similarity’: 1.0, ‘semtypes’: {‘T046’}, ‘preferred’: 0},
{‘term’: ‘GI hemorrhage’, ‘cui’: ‘C0017181’, ‘similarity’: 0.72, ‘semtypes’: {‘T046’}, ‘preferred’: 0},
{‘term’: ‘Hemorrhages’, ‘cui’: ‘C0019080’, ‘similarity’: 0.7, ‘semtypes’: {‘T046’}, ‘preferred’: 0}

Как видите, слово «пациент» трижды соответствует правильному семантическому типу (T101) и два - правильному понятию (C0030705). Слово «кровоизлияние» также имеет лишние совпадения, в том числе понятие «без кровоизлияния». Тем не менее, кандидат с наивысшим рейтингом, если исходить из сходства, является правильным в обоих случаях.

В приложении QuickUMLS по умолчанию мы сохраняем только предпочтительные термины, то есть термины, для которых предпочтительным является 1, а затем сортируем по сходству. Затем мы берем семантический тип (т.е. семантический тип) кандидата с наивысшим рейтингом в качестве прогноза - мы называем это базовой моделью. Мы использовали seqeval с парадигмой строгого соответствия, которая сравнима с предыдущей работой. [5]

╔═══╦══════╦═══════╗
║   ║ BERT ║ QUMLS ║
╠═══╬══════╬═══════╣
║ P ║  .53 ║   .27 ║
║ R ║  .58 ║   .36 ║
║ F ║  .56 ║   .31 ║
╚═══╩══════╩═══════╝
Table 1: baseline performance

Не слишком впечатляюще, правда? К сожалению, базовый уровень страдает из-за того, что он не оптимизирован для конкретной задачи. Таким образом, давайте оптимизируем базовый уровень с помощью простой эвристики.

Улучшение QuickUMLS с помощью простых оптимизаций

Есть несколько способов улучшить QuickUMLS сверх его первоначальной производительности. Во-первых, отметим, что стандартный синтаксический анализатор, используемый QuickUMLS, является пространственной моделью по умолчанию, то есть en_core_web_sm. Учитывая, что мы имеем дело с биомедицинским текстом, нам лучше использовать биомедицинскую языковую модель. В нашем случае мы заменили модель на scispacy [7] модель, en_core_sci_sm. Это уже немного улучшает производительность без каких-либо затрат.

╔═══╦══════╦═══════╦═════════╗
║   ║ BERT ║ QUMLS ║ + Spacy ║
╠═══╬══════╬═══════╬═════════╣
║ P ║  .53 ║   .27 ║     .29 ║
║ R ║  .58 ║   .36 ║     .37 ║
║ F ║  .56 ║   .31 ║     .32 ║
╚═══╩══════╩═══════╩═════════╝
Table 2: adding scispacy

Другие улучшения можно получить, используя некоторую информацию из учебного корпуса. Хотя это действительно превращает QuickUMLS из чисто неконтролируемого метода в контролируемый, по-прежнему нет зависимости от большого количества конкретных аннотаций. Другими словами, в конкретном корпусе нет явного шага «подгонки»: улучшения, которые мы собираемся сделать, также можно оценить с помощью небольшого набора аннотаций или предварительных знаний врача.

Оптимизация порога QuickUMLS

Настройки по умолчанию для QuickUMLS включают порог 0,7 и набор показателей. Метрика определяет, как подсчитывается схожесть строк, и может быть установлена ​​на «Жаккар», «косинус», «перекрытие» и «игра в кости». Мы выполняем поиск по сетке по метрике и различным пороговым значениям. Наилучшие результаты оказались порогом 0,99, что означает, что мы выполняем только точные совпадения с использованием SimString и метрики «Жаккард», которая превосходит все другие варианты с точки зрения скорости и оценки. Как видите, мы все ближе и ближе приближаемся к производительности BERT.

╔═══╦══════╦═══════╦═════════╦════════╗
║   ║ BERT ║ QUMLS ║ + Spacy ║ + Grid ║
╠═══╬══════╬═══════╬═════════╬════════╣
║ P ║  .53 ║   .27 ║     .29 ║    .37 ║
║ R ║  .58 ║   .36 ║     .37 ║    .37 ║
║ F ║  .56 ║   .31 ║     .32 ║    .37 ║
╚═══╩══════╩═══════╩═════════╩════════╝
Table 3: Grid searching over settings

Преимущества добавления априорных цен

Напомним, что выше мы просто выбрали наиболее подходящего кандидата на основе того, является ли это предпочтительной строкой, и их сходства. Однако во многих случаях разные концепции будут иметь одно и то же строковое представление, как, например, в вышеупомянутом примере «алкоголь». Это затрудняет выбор оптимального кандидата без модели разрешения неоднозначности, которая требует контекста и снова превращает проблему обучения в контролируемую или, по крайней мере, в такую, которая требует примеров контекстов, в которых встречаются термины. Один из простых выходов из этой головоломки - считать, что при прочих равных некоторые семантические типы просто более вероятны, а значит, более вероятны в данном корпусе. Это также называется предшествующим.

В нашем случае мы оцениваем предшествующий класс через обучающую выборку, как вы это делаете в хорошо известном наивном байесовском классификаторе. Затем для каждого семантического типа, который мы извлекаем для каждого набора кандидатов, мы берем максимальное сходство, а затем умножаем его на предыдущее. В терминах нейронных сетей это можно представить как максимальный пул на уровне класса. Это также означает, что мы игнорируем предпочтительный статус термина для любых кандидатов.

╔═══╦══════╦═══════╦═════════╦════════╦══════════╗
║   ║ BERT ║ QUMLS ║ + Spacy ║ + Grid ║ + Priors ║
╠═══╬══════╬═══════╬═════════╬════════╬══════════╣
║ P ║  .53 ║   .27 ║     .29 ║    .37 ║      .39 ║
║ R ║  .58 ║   .36 ║     .37 ║    .37 ║      .39 ║
║ F ║  .56 ║   .31 ║     .32 ║    .37 ║      .39 ║
╚═══╩══════╩═══════╩═════════╩════════╩══════════╝
Table 4: adding priors

К сожалению, это все, что мы могли сделать, используя простую систему в QuickUMLS. Учитывая, что мы в конечном итоге использовали порог 0,99, это означает, что мы вообще не используем функцию приблизительного сопоставления QuickUMLS. Удаление приблизительного сопоставления также значительно ускорит работу всей системы, поскольку большая часть времени алгоритма теперь тратится на сопоставление в QuickUMLS.

Подробный анализ ошибок: соответствовало ли наше решение поставленной задаче?

Выполняя задачу распознавания именованных сущностей, мы можем допустить несколько классов ошибок. Во-первых, мы можем извлечь правильный диапазон, но не тот класс. Это происходит, когда мы находим правильный термин, но даем ему неправильную этикетку, например, мы думаем, что «алкоголь» относится к напитку, когда он относится к дезинфицирующему средству. Во-вторых, мы также можем частично извлечь диапазон, но все же сопоставить правильную метку. В этом случае мы можем думать о матче как о «частичном совпадении». При подсчете очков мы считали правильными только точные совпадения. Примером этого является извлечение «слабого анестетика», когда золотым стандартом является «анестетик». Мы также можем полностью пропустить промежутки, например, потому что UMLS не содержит термин, или извлечь промежутки, которые не соответствуют упоминаниям золотого стандарта. На рисунке ниже показано, какие типы этих ошибок делает наша система:

Это показывает, что ошибки, которые делает QuickUMLS, не относятся к одной конкретной категории. Он извлекает слишком много элементов, но, когда он извлекает элементы, он также часто присваивает этим элементам неправильную метку. Это показывает, что QuickUMLS можно использовать в качестве системы предварительного извлечения, после чего можно использовать систему устранения неоднозначности для присвоения правильной метки.

Заключение

Как видно из результатов, готовую систему извлечения терминологии можно использовать как эффективную и действенную систему NER без обучения. Получение данных обучения для конкретных случаев использования часто может быть трудоемким процессом, снижающим скорость исследований и разработок. Созданный нами классификатор QuickUMLS показывает, что мы можем пройти долгий путь с очень небольшим количеством обучающих примеров. И, разумно применяя наши ресурсы, мы сэкономили много времени в процессе исследований и разработок в области биомедицинского NER. Наш модифицированный классификатор QuickUMLS можно попробовать здесь, на github. Преимущество этого подхода может означать решение, достаточно надежное для результата, простое в разработке и тестировании и достаточно маленькое, чтобы его можно было легко внедрить в разработку продукта.

Ссылки

[1] Л. Солдаини, Н. Гохарян. Quickumls: быстрый, неконтролируемый подход к извлечению медицинских концепций, (2016), семинар MedIR, SIGIR

[2] С. Мохан и Д. Ли, Medmentions: большой биомедицинский корпус, аннотированный концепциями UMLS, (2019), препринт arXiv arXiv: 1902.09476

[3] Я. Пэн, К. Чен и З. Лу, Эмпирическое исследование многозадачного обучения на BERT для биомедицинского анализа текста, (2020), препринт arXiv arXiv: 2005.02799

[4] Дж. Ли, В. Юн, С. Ким, Д. Ким, С. Ким, C.H. Так, и Дж. Канг, BioBERT: предварительно обученная модель представления биомедицинского языка для биомедицинского анализа текста, (2020), Bioinformatics, 36 (4)

[5] К.С. Fraser, I. Nejadgholi, B. De Bruijn, M. Li, A. LaPlante и K.Z.E. Абидин, Извлечение концепций UMLS из медицинского текста с использованием общих и предметно-ориентированных моделей глубокого обучения, (2019), препринт arXiv arXiv: 1910.01274.

[6] Н. Окадзаки, Д.И. Цуджи, Простой и эффективный алгоритм приблизительного сопоставления словарей, (2010, август), В трудах 23-й Международной конференции по компьютерной лингвистике (Coling 2010)

[7] М. Нойман, Д. Кинг, И. Бельтаги и В. Аммар, Scispacy: быстрые и надежные модели для биомедицинской обработки естественного языка, (2019), препринт arXiv arXiv: 1902.07669.