
كائن خط أنابيب Spacy لإلغاء المفاهيم في النص. بناء على خوارزمية Negex.
NEGEX - خوارزمية بسيطة لتحديد النتائج والأمراض المنقولة في ملخصات التفريغ تشابمان ، بريدويل ، هانبري ، كوبر ، بوكانان https://doi.org/10.1006/jbin.2001.1029
الإصدار 1.0 هو تحديث إصدار رئيسي يوفر الدعم لواجهة Spacy 3.0 الجديدة لإضافة مكونات خطوط الأنابيب. نتيجة لذلك ، لا يتوافق مع الإصدارات السابقة من negspacy.
إذا كان مشروعك يستخدم Spacy 2.3.5 أو قبل ذلك ، فستحتاج إلى استخدام الإصدار 0.1.9. انظر REDME المؤرشفة.
تثبيت المكتبة.
pip install negspacyمكتبة الاستيراد وسباسي.
import spacy
from negspacy . negation import Negexتحميل نموذج لغة Spacy. أضف كائن خط أنابيب negspacy. التصفية على أنواع الكيانات اختيارية.
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النظر في الاقتران مع scispacy للعثور على مفاهيم UMLS في النص والعملية النفيات.
قم بتعيين TermSet للاستخدام ، يتم استخدام en_clinical بشكل افتراضي.
en = عبارات نص اللغة الإنجليزية العامةen_clinical الافتراضي = يضيف عبارات خاصة بالمجال السريري إلى اللغة الإنجليزية العامة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 لاستخراج القيم التي تتوافق مع الكيان المسمى (على سبيل المثال ، تواريخ الولادة أو أرقام الحساب أو نتائج المختبر) ، ألق نظرة على الاستخراج.
