
Этот репозиторий содержит пользовательские трубы и модели, связанные с использованием Spacy для научных документов.
В частности, существует пользовательский токенизатор, который добавляет правила токенизации по вершине токенизатора на основе правил Spacy, POS Tagger и синтаксического анализатора, обученного биомедицинским данным и модели обнаружения баллов. Отдельно существуют также модели NER для более конкретных задач.
Просто хотите проверить модели на ваших данных? Проверьте нашу демонстрацию (примечание: эта демонстрация запускает более старую версию Scispacy и может дать различные результаты, чем последняя версия).
Установка Scispacy требует двух шагов: установка библиотеки и инцентрация моделей. Чтобы установить библиотеку, запустите:
pip install scispacyЧтобы установить модель (см. Наш полный выбор доступных моделей ниже), запустите команду, подобную следующему:
pip install https://s3-us-west-2.amazonaws.com/ai2-s2-scispacy/releases/v0.5.4/en_core_sci_sm-0.5.4.tar.gzПримечание: мы настоятельно рекомендуем вам использовать изолированную среду Python (такую как VirtualEnv или Conda) для установки Scispacy. Посмотрите ниже в разделе «Настройка виртуальной среды», если вам нужна помощь с этим. Кроме того, Scispacy использует современные особенности Python и, как таковой, доступен только для Python 3.6 или более .
За эти годы установка NMSLIB становится довольно сложной. Есть ряд проблем с GitHub в отношении Scispacy и сама NMSLIB по этому поводу. Эта матрица является попыткой помочь пользователям установить NMSLIB в любой среде, которую они имеют. У меня нет доступа к каждому типу среды, поэтому, если вы можете что -то проверить, откройте проблему или обращайте запрос!
| Windows 11 | Подсистема Windows для Linux | Mac M1 | Mac M2 | Mac M3 | Mac M4 | Intel Mac | |
|---|---|---|---|---|---|---|---|
| Python 3.8 | ✅ | ✅ | ❓ | ❓ | ? | ❓ | |
| Python 3.9 | ? | ✅ | ? | ❓ | ? | ❓ | |
| Python 3.10 | ? | ✅ | ❓ | ❓ | ❓ | ? | ✅ |
| Python 3.11 | ? | ? | ❓ | ❓ | ❓ | ? | |
| Python 3.12 | ? | ?? | ❓ | ❓ | ❓ | ? | ❓ |
✅ = нормально работает с PIP установки ссадства
= не работает нормально с PIP установки ссадости
? = может быть установлен с mamba install nmslib
= может быть установлен с помощью CFLAGS="-mavx -DWARN(a)=(a)" pip install nmslib
? = может быть установлен с помощью pip install nmslib-metabrainz
? = может быть установлен с помощью conda install -c conda-forge nmslib
❓ = неподтвержден
Другие методы, упомянутые в вопросах GitHub, но не подтвердили, на какие версии они работают:
CFLAGS="-mavx -DWARN(a)=(a)" pip install nmslibpip install --no-binary :all: nmslibpip install "nmslib @ git+https://github.com/nmslib/nmslib.git/#subdirectory=python_bindings"pip install --upgrade pybind11 + pip install --verbose 'nmslib @ git+https://github.com/nmslib/nmslib.git#egg=nmslib&subdirectory=python_bindings' Mamba может быть использован настройкой виртуальной среды с версией Python, необходимой для ссадства. Если у вас уже есть среда Python, которую вы хотите использовать, вы можете пропустить раздел «Установка через PIP».
Следуйте инструкциям по установке для Мамбы.
Создайте среду Conda под названием «Scispacy» с Python 3.9 (любая версия> = 3,6 должна работать):
mamba create -n scispacy python=3.10Активировать среду мамбы. Вам нужно будет активировать среду Conda в каждом терминале, в которой вы хотите использовать Scispacy.
mamba activate scispacy Теперь вы можете установить scispacy и одну из моделей, используя шаги выше.
После того, как вы выполнили приведенные выше шаги и загрузили одну из моделей ниже, вы можете загрузить модель Scispacy, как и любая другая модель Spacy. Например:
import spacy
nlp = spacy . load ( "en_core_sci_sm" )
doc = nlp ( "Alterations in the hypocretin receptor 2 and preprohypocretin genes produce narcolepsy in some animals." ) Если вы обновляете scispacy , вам нужно будет снова загрузить модели, чтобы модели были совместимы с версией scispacy , которая у вас есть. Ссылка на модель, которую вы загружаете, должна содержать номер scispacy , который у вас есть.
Чтобы установить модель, нажмите на ссылку ниже, чтобы загрузить модель, а затем запустить
pip install < / path / to / download >В качестве альтернативы, вы можете установить непосредственно из URL, щелкнув правой
pip install CMD - V ( to paste the copied URL )| Модель | Описание | Установить URL |
|---|---|---|
| en_core_sci_sm | Полный трубопровод SPACY для биомедицинских данных с ~ 100K словарь. | Скачать |
| en_core_sci_md | Полный трубопровод SPACY для биомедицинских данных с ~ 360 тысячам словарной и 50 тысяч слов. | Скачать |
| en_core_sci_lg | Полный трубопровод SPACY для биомедицинских данных с ~ 785K словарь и 600K Word Vectors. | Скачать |
| en_core_sci_scibert | Полный трубопровод SPACY для биомедицинских данных с ~ 785K словарь и allenai/scibert-base в качестве модели трансформатора. Вы можете использовать GPU с этой моделью. | Скачать |
| en_ner_craft_md | Модель Spacy NER, обучающаяся на ремесленном корпусе. | Скачать |
| en_ner_jnlpba_md | Модель Spacy NER, обучающаяся на корпусе JNLPBA. | Скачать |
| en_ner_bc5cdr_md | Модель Spacy NER, обученная на корпусе BC5CDR. | Скачать |
| en_ner_bionlp13cg_md | Модель Spacy NER, обученная корпусу BionLP13CG. | Скачать |
Аббревиатура - это компонент SPACY, который реализует алгоритм обнаружения аббревиатуры в «простом алгоритме для определения определений аббревиатуры в биомедицинском тексте». (Schwartz & Hearst, 2003).
spacy.tokens.Span можете получить доступ к списку сокращений через атрибут doc._.abbreviations span._.long_form
import spacy
from scispacy . abbreviation import AbbreviationDetector
nlp = spacy . load ( "en_core_sci_sm" )
# Add the abbreviation pipe to the spacy pipeline.
nlp . add_pipe ( "abbreviation_detector" )
doc = nlp ( "Spinal and bulbar muscular atrophy (SBMA) is an
inherited motor neuron disease caused by the expansion
of a polyglutamine tract within the androgen receptor (AR).
SBMA can be caused by this easily." )
print ( "Abbreviation" , " t " , "Definition" )
for abrv in doc . _ . abbreviations :
print ( f" { abrv } t ( { abrv . start } , { abrv . end } ) { abrv . _ . long_form } " )
> >> Abbreviation Span Definition
> >> SBMA ( 33 , 34 ) Spinal and bulbar muscular atrophy
> >> SBMA ( 6 , 7 ) Spinal and bulbar muscular atrophy
> >> AR ( 29 , 30 ) androgen receptorПримечание Если вы хотите иметь возможность сериализовать ваши объекты
doc, загрузите детектор аббревиатуры с помощьюmake_serializable=True, напримерnlp.add_pipe("abbreviation_detector", config={"make_serializable": True})
EntityLinker - это компонент Spacy, который выполняет связь с базой знаний. Линкер просто выполняет поиск на основе строки на основе (Char -3Grams) на именованных объектах, сравнивая их с понятиями в базе знаний, используя приблизительный поиск ближайших соседей.
В настоящее время (v2.5.50) есть 5 поддерживаемых линкеров:
umls : Ссылки на единую медицинскую языковую систему, уровни 0,1,2 и 9. Это имеет ~ 3 -метровые понятия.mesh : ссылки на медицинские заголовки. Он содержит меньший набор более качественных объектов, которые используются для индексации в PubMed. Сетка содержит ~ 30 тыс. Сущностей. Примечание. Сетка KB получена непосредственно из самой сетки, и, как таковое, использует различные уникальные идентификаторы, чем другие KB.rxnorm : ссылки на онтологию Rxnorm. RXNORM содержит ~ 100K концепции, ориентированные на нормализованные имена для клинических препаратов. Он состоит из нескольких других словесных лекарств, обычно используемых в управлении фармации и взаимодействием лекарств, включая первый банк данных, микромеедекс и базу данных лекарств из золотых стандартов.go : Ссылки на онтологию гена. Ген -онтология содержит ~ 67K концепции, ориентированные на функции генов.hpo : связи с онтологией фенотипа человека. Онтология фенотипа человека содержит 16K концепции, ориентированные на фенотипические аномалии, встречающиеся при заболеваниях человека.Вы можете поиграть с некоторыми из приведенных ниже параметров, чтобы адаптироваться к вашим варианту использования (более высокая точность, более высокий отзыв и т. Д.).
resolve_abbreviations : bool = True, optional (default = False) следует ли разрешить сокращения, идентифицированные в DOC, прежде чем выполнять связь. Этот параметр не влияет, если в трубопроводе Spacy нет AbbreviationDetector .k : int, optional, (default = 30) Количество ближайших соседей, которые можно посмотреть от генератора кандидатов за упоминание.threshold : float, optional, (default = 0.7) порог, который упоминает кандидат, должен быть добавлен к упоминанию в DOC в качестве упоминания кандидата.no_definition_threshold : float, optional, (default = 0.95) порог, который кандидат в организацию должен достичь, чтобы быть добавленным в упоминание в DOC в качестве упоминания кандидата, если кандидат от организации не имеет определения.filter_for_definitions: bool, default = True следует ли фильтровать объекты, которые можно вернуть, включающие только те, которые с определениями в базе знаний.max_entities_per_mention : int, optional, default = 5 Максимальное количество объектов, которые будут возвращены для данного упоминания, независимо от того, сколько находятся ближайшие соседи. max_entities_per_mention класс задает атрибут ._.kb_ents
Вы можете найти больше информации для данного идентификатора, используя атрибут KB этого класса:
print(linker.kb.cui_to_entity[concept_id])
import spacy
import scispacy
from scispacy . linking import EntityLinker
nlp = spacy . load ( "en_core_sci_sm" )
# This line takes a while, because we have to download ~1GB of data
# and load a large JSON file (the knowledge base). Be patient!
# Thankfully it should be faster after the first time you use it, because
# the downloads are cached.
# NOTE: The resolve_abbreviations parameter is optional, and requires that
# the AbbreviationDetector pipe has already been added to the pipeline. Adding
# the AbbreviationDetector pipe and setting resolve_abbreviations to True means
# that linking will only be performed on the long form of abbreviations.
nlp . add_pipe ( "scispacy_linker" , config = { "resolve_abbreviations" : True , "linker_name" : "umls" })
doc = nlp ( "Spinal and bulbar muscular atrophy (SBMA) is an
inherited motor neuron disease caused by the expansion
of a polyglutamine tract within the androgen receptor (AR).
SBMA can be caused by this easily." )
# Let's look at a random entity!
entity = doc . ents [ 1 ]
print ( "Name: " , entity )
> >> Name : bulbar muscular atrophy
# Each entity is linked to UMLS with a score
# (currently just char-3gram matching).
linker = nlp . get_pipe ( "scispacy_linker" )
for umls_ent in entity . _ . kb_ents :
print ( linker . kb . cui_to_entity [ umls_ent [ 0 ]])
> >> CUI : C1839259 , Name : Bulbo - Spinal Atrophy , X - Linked
> >> Definition : An X - linked recessive form of spinal muscular atrophy . It is due to a mutation of the
gene encoding the ANDROGEN RECEPTOR .
> >> TUI ( s ): T047
> >> Aliases ( abbreviated , total : 50 ):
Bulbo - Spinal Atrophy , X - Linked , Bulbo - Spinal Atrophy , X - Linked , ....
>> > CUI : C0541794 , Name : Skeletal muscle atrophy
> >> Definition : A process , occurring in skeletal muscle , that is characterized by a decrease in protein content ,
fiber diameter , force production and fatigue resistance in response to ...
>> > TUI ( s ): T046
> >> Aliases : ( total : 9 ):
Skeletal muscle atrophy , ATROPHY SKELETAL MUSCLE , skeletal muscle atrophy , ....
> >> CUI : C1447749 , Name : AR protein , human
> >> Definition : Androgen receptor ( 919 aa , ~ 99 kDa ) is encoded by the human AR gene .
This protein plays a role in the modulation of steroid - dependent gene transcription .
> >> TUI ( s ): T116 , T192
>> > Aliases ( abbreviated , total : 16 ):
AR protein , human , Androgen Receptor , Dihydrotestosterone Receptor , AR , DHTR , NR3C4 , ...Этот компонент реализует автоматическое авизирование гипонимов из крупных текстовых корпораций с использованием компонента Spacy Matcher.
Передача extended=True The HyponymDetector будет использовать расширенный набор шаблонов HERST, который включает в себя более высокий отзыв, но более низкие отношения с высокой точностью (например, x по сравнению с Y, x, аналогичным Y и т. Д.).
Этот компонент создает атрибут уровня DOC в Spacy Doc: doc._.hearst_patterns , который представляет собой список, содержащий кортежи из извлеченных пар гипоним. Клетки содержат:
str )spacy.Span )spacy.Span ) import spacy
from scispacy . hyponym_detector import HyponymDetector
nlp = spacy . load ( "en_core_sci_sm" )
nlp . add_pipe ( "hyponym_detector" , last = True , config = { "extended" : False })
doc = nlp ( "Keystone plant species such as fig trees are good for the soil." )
print ( doc . _ . hearst_patterns )
> >> [( 'such_as' , Keystone plant species , fig trees )]Если вы используете Scispacy в своем исследовании, пожалуйста, цитируйте Scispacy: быстрые и надежные модели для обработки биомедицинских естественных языков. Кроме того, укажите, какую версию и модель ссадости вы использовали, чтобы ваше исследование было воспроизведено.
@inproceedings{neumann-etal-2019-scispacy,
title = "{S}cispa{C}y: {F}ast and {R}obust {M}odels for {B}iomedical {N}atural {L}anguage {P}rocessing",
author = "Neumann, Mark and
King, Daniel and
Beltagy, Iz and
Ammar, Waleed",
booktitle = "Proceedings of the 18th BioNLP Workshop and Shared Task",
month = aug,
year = "2019",
address = "Florence, Italy",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/W19-5034",
doi = "10.18653/v1/W19-5034",
pages = "319--327",
eprint = {arXiv:1902.07669},
abstract = "Despite recent advances in natural language processing, many statistical models for processing text perform extremely poorly under domain shift. Processing biomedical and clinical text is a critically important application area of natural language processing, for which there are few robust, practical, publicly available models. This paper describes scispaCy, a new Python library and models for practical biomedical/scientific text processing, which heavily leverages the spaCy library. We detail the performance of two packages of models released in scispaCy and demonstrate their robustness on several tasks and datasets. Models and code are available at https://allenai.github.io/scispacy/.",
}
Scispacy-это проект с открытым исходным кодом, разработанный Институтом искусственного интеллекта Аллена (AI2). AI2 является некоммерческим институтом с миссией внести свой вклад в человечество с помощью высокоэффективных исследований и инженерии ИИ.