
Objek pipa spacy untuk meniadakan konsep dalam teks. Berdasarkan algoritma Negex.
Negex - Algoritma sederhana untuk mengidentifikasi temuan dan penyakit yang dinegasikan dalam ringkasan pembuangan Chapman, Bridewell, Hanbury, Cooper, Buchanan https://doi.org/10.1006/jbin.2001.1029
Versi 1.0 adalah pembaruan versi utama yang memberikan dukungan untuk antarmuka baru Spacy 3.0 untuk menambahkan komponen pipa. Akibatnya, ini tidak kompatibel ke belakang dengan versi negspacy sebelumnya.
Jika proyek Anda menggunakan Spacy 2.3.5 atau lebih awal, Anda perlu menggunakan versi 0.1.9. Lihat readme yang diarsipkan.
Instal perpustakaan.
pip install negspacyImpor Perpustakaan dan Spacy.
import spacy
from negspacy . negation import NegexMemuat model bahasa spacy. Tambahkan objek pipa negspacy. Penyaringan pada jenis entitas adalah opsional.
nlp = spacy . load ( "en_core_web_sm" )
nlp . add_pipe ( "negex" , config = { "ent_types" :[ "PERSON" , "ORG" ]})Lihat negasi.
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 FalsePertimbangkan berpasangan dengan scispacy untuk menemukan konsep UMLS dalam negasi teks dan proses.
Tentukan termset untuk digunakan, en_clinical digunakan secara default.
en = frasa untuk teks bahasa Inggris umumen_clinical default = menambahkan frasa khusus untuk domain klinis ke bahasa Inggris umumen_clinical_sensitive = menambahkan frasa tambahan untuk membantu mengesampingkan entitas historis dan mungkin tidak relevanUntuk mengatur:
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 ()
}
)Ganti semua pola dengan set Anda sendiri
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" ]
}
}
)Tambahkan dan lepaskan pola individual dengan cepat dari istilah built-in
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" ],
}
)Lihat pola yang digunakan
from negspacy . termsets import termset
ts = termset ( "en_clinical" )
print ( ts . get_patterns ())Bergantung pada model pengenalan entitas yang disebutkan yang Anda gunakan, Anda mungkin memiliki negasi "dikelompokkan bersama" dengan kata benda. Misalnya:
nlp = spacy . load ( "en_core_sci_sm" )
doc = nlp ( "There is no headache." )
for e in doc . ents :
print ( e . text )
# no headache Ini akan menyebabkan algoritma Negex melewatkan negasi sebelumnya. Untuk memperhitungkan ini, Anda dapat menambahkan 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 berkontribusi
lisensi
Perpustakaan ini ditampilkan di Semesta Spacy. Lihatlah perpustakaan dan inspirasi lain yang berguna.
Jika Anda mencari objek pipa spacy untuk mengekstraksi nilai yang sesuai dengan entitas yang disebutkan (misalnya, tanggal lahir, nomor akun, atau hasil laboratorium) lihat ekstraktasi.
