
Объект трубопровода Spacy для отрицания концепций в тексте. На основе алгоритма Negex.
NEGEX - простой алгоритм для определения отрицательных результатов и заболеваний в Резюме выписки Chapman, Bridewell, Hanbury, Cooper, Buchanan https://doi.org/10.1006/jbin.2001.1029
Версия 1.0 - это основное обновление версии, обеспечивающее поддержку нового интерфейса Spacy 3.0 для добавления компонентов трубопровода. В результате он не совместим с предыдущими версиями OnePacy.
Если ваш проект использует Spacy 2.3.5 или раньше, вам нужно будет использовать версию 0.1.9. См. Архивированный Ридме.
Установите библиотеку.
pip install negspacyИмпорт библиотека и шпажина.
import spacy
from negspacy . negation import NegexЗагрузите модель языка SPACY. Добавить объект трубопровода OnePacy. Фильтрация на типах объектов является необязательной.
nlp = spacy . load ( "en_core_web_sm" )
nlp . add_pipe ( "negex" , config = { "ent_types" :[ "PERSON" , "ORG" ]})Посмотреть отрицания.
doc = nlp ( "She does not like Steve Jobs but likes Apple products." )
for e in doc . ents :
print ( e . text , e . _ . negex ) Steve Jobs True
Apple FalseРассмотрим сопряжение с смазкой, чтобы найти концепции UMLS в текстовых и отрицаниях процесса.
Обозначайте термин для использования, en_clinical используется по умолчанию.
en = фразы для общего текста на английском языкеen_clinical Default = добавляет фразы, специфичные для клинического домена в общий английскийen_clinical_sensitive = добавляет дополнительные фразы, чтобы помочь исключить исторические и, возможно, не относящиеся к делу сущностиЧтобы установить:
from negspacy . negation import Negex
from negspacy . termsets import termset
ts = termset ( "en" )
nlp = spacy . load ( "en_core_web_sm" )
nlp . add_pipe (
"negex" ,
config = {
"neg_termset" : ts . get_patterns ()
}
)Замените все шаблоны своим набором
nlp = spacy . load ( "en_core_web_sm" )
nlp . add_pipe (
"negex" ,
config = {
"neg_termset" :{
"pseudo_negations" : [ "might not" ],
"preceding_negations" : [ "not" ],
"following_negations" :[ "declined" ],
"termination" : [ "but" , "however" ]
}
}
)Добавить и удалить отдельные узоры на лету из встроенных терминов
from negspacy . termsets import termset
ts = termset ( "en" )
ts . add_patterns ({
"pseudo_negations" : [ "my favorite pattern" ],
"termination" : [ "these are" , "great patterns" , "but" ],
"preceding_negations" : [ "wow a negation" ],
"following_negations" : [ "extra negation" ],
})
#OR
ts . remove_patterns (
{
"termination" : [ "these are" , "great patterns" ],
"pseudo_negations" : [ "my favorite pattern" ],
"preceding_negations" : [ "denied" , "wow a negation" ],
"following_negations" : [ "unlikely" , "extra negation" ],
}
)Посмотреть шаблоны используются
from negspacy . termsets import termset
ts = termset ( "en_clinical" )
print ( ts . get_patterns ())В зависимости от названной модели распознавания объектов, которую вы используете, у вас могут быть отрицания «разбиты вместе» с существительными. Например:
nlp = spacy . load ( "en_core_sci_sm" )
doc = nlp ( "There is no headache." )
for e in doc . ents :
print ( e . text )
# no headache Это приведет к тому, что алгоритм Negex пропустит предыдущее отрицание. Чтобы учесть это, вы можете добавить chunk_prefix :
nlp = spacy . load ( "en_core_sci_sm" )
ts = termset ( "en_clinical" )
nlp . add_pipe (
"negex" ,
config = {
"chunk_prefix" : [ "no" ],
},
last = True ,
)
doc = nlp ( "There is no headache." )
for e in doc . ents :
print ( e . text , e . _ . negex )
# no headache True внося
лицензия
Эта библиотека представлена во вселенной Spacy. Проверьте это для других полезных библиотек и вдохновения.
Если вы ищете объект трубопровода Spacy для извлечения значений, которые соответствуют именованной сущности (например, даты рождения, числа счетов или лабораторные результаты), посмотрите на экстрактацию.
