Вопрос или проблема
Одним из тех, что мы рассматривали ранее, является AeroText, но похоже, что он больше не существует как самостоятельный проект. Я думаю, что его можно написать на любом языке, поскольку нас интересует вывод (аннотированные сущности), хотя, безусловно, было бы плюсом, если бы у него был Java API, с которым можно было бы взаимодействовать. Любой уровень от бесплатного до платного был бы оценен.
Примечание по использованию: мы будем использовать это как дополняющий аннотатор. Это не будет нашим основным источником сгенерированных именованных сущностей. Так что да, я прошу только правилами основанные предложения.
Вы можете использовать пакет программного обеспечения deid (зеркало), предоставляемый PhysioNet/mimic.
- основанный на правилах
- бесплатный и с открытым исходным кодом (написан на Perl)
- именованные сущности являются защищенной медицинской информацией (PHI)
Вопросу 3 года, но вот еще один ответ:
Что насчет Spacy?
- написан на Python
- бесплатный
- нет Java API, насколько мне известно
Сопоставление на основе правил. Найдите фразы и токены, и сопоставьте сущности.
Ответ или решение
Да, существует несколько библиотек и проектов для распознавания именованных сущностей (NER — Named Entity Recognition), основанных на правилах. Ниже представлены наиболее заметные примеры, которые могут удовлетворить ваши требования, включая информацию о языке программирования, лицензировании и других аспектах.
1. deid Software Package
- Язык: Perl
- Лицензия: Свободное программное обеспечение с открытым исходным кодом
- Описание: Этот пакет, разработанный в рамках PhysioNet, предназначен для защиты персональной информации (PHI) в медицинских данных. Он использует правила для извлечения именованных сущностей, относящихся к защищенной информации о здоровье.
- Преимущества:
- Способен обрабатывать медицинские тексты.
- Высокая точность в выделении сущностей, связанных с PHI.
- Недостатки:
- Работает на Perl, что может быть неудобно, если вы ищете решение для Java.
2. SpaCy
- Язык: Python
- Лицензия: Свободное программное обеспечение
- Описание: SpaCy предлагает возможность выполнения сопоставления на основе правил при распознавании сущностей. Это означает, что вы можете создать свои правила для извлечения необходимых сущностей из текста.
- Преимущества:
- Легко настраиваемый и интегрируемый инструмент.
- Поддерживает множество языков и форматов.
- Имеет хорошо документированное API для создания настраиваемых правил.
- Недостатки:
- Нет прямой поддержки Java, что может быть недостатком для вашего проекта.
3. Apache OpenNLP
- Язык: Java
- Лицензия: Свободное программное обеспечение под лицензией Apache 2.0
- Описание: Хотя OpenNLP в основном ориентирован на статистические методы, он также позволяет использовать правила для распознавания сущностей. Вы можете определить регулярные выражения и правила для извлечения конкретных типов сущностей.
- Преимущества:
- Полная интеграция с Java, что удобно для работы с существующими Java-приложениями.
- Гибкость в использовании как правил, так и моделей машинного обучения.
- Недостатки:
- Требует некоторого времени на настройку правил, если вы не знакомы с библиотекой.
4. Stanford NLP
- Язык: Java
- Лицензия: Свободное программное обеспечение под лицензией GPL
- Описание: Stanford NLP предоставляет инструменты для обработки естественного языка, включая возможности для правилами-основанного распознавания именованных сущностей. Вы можете создать свои наборы правил и использовать их для извлечения сущностей.
- Преимущества:
- Высокая точность распознавания.
- Хорошо документирован и поддерживается.
- Недостатки:
- Может быть избыточным для простых задач, если не требуется весь функционал библиотеки.
Итог
Ваш выбор будет зависеть от конкретных требований к языку программирования и функциональности. Решения, основанные на правилах, могут выступать отличным дополнением к вашему существующему процессу аннотирования именованных сущностей. Выбор между Perl, Python и Java также будет важен. Настоящие библиотеки обеспечивают гибкость и настраиваемость, что позволяет адаптировать их под ваши нужды.