Автоматизация распознавания химических сущностей создание вашей модели ХимNER

Автоматизация распознавания химических сущностей создание вашей собственной модели ХимNER

Фото Аакаша Даге на Unsplash

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

Вывод

Если вам просто хочется поиграться с моделью ChemNER и/или использовать созданное мной приложение Streamlit, вы можете получить к ним доступ по ссылкам ниже:

Ссылка HuggingFace: https://huggingface.co/victormurcia/en_chemner

Приложение Streamlit: Ссылка на ChemNER

Введение

Подходы к NER можно классифицировать примерно на следующие 3 категории:

  • На основе лексикона: Определение словаря классов и терминов
  • На основе правил: Определение правил для терминов, соответствующих каждому классу
  • Машинное обучение (ML): Позволить модели изучать правила именования на основе обучающего корпуса

У каждого из этих подходов есть свои преимущества и ограничения, и, как всегда, более сложная и изощренная модель не всегда является лучшим подходом.

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

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