
Spacy -Pipeline -Objekt zum Negieren von Konzepten im Text. Basierend auf dem Negex -Algorithmus.
Negex - Ein einfacher Algorithmus zur Identifizierung negierter Befunde und Krankheiten in Entlassungsfassen Chapman, Bridewell, Hanbury, Cooper, Buchanan https://doi.org/10.1006/jbin.2001.1029
Version 1.0 ist ein Hauptversions -Update, das die neue Schnittstelle von Spacy 3.0 für das Hinzufügen von Pipeline -Komponenten unterstützt. Infolgedessen ist es nicht rückwärts kompatibel mit früheren Versionen von Negspacy.
Wenn Ihr Projekt Spacy 2.3.5 oder früher verwendet, müssen Sie Version 0.1.9 verwenden. Siehe Archived Readme.
Installieren Sie die Bibliothek.
pip install negspacyBibliothek und Spacing importieren.
import spacy
from negspacy . negation import NegexLaden Sie das Spacy -Sprachmodell. Fügen Sie das Negspacy -Pipeline -Objekt hinzu. Die Filterung der Entitätstypen ist optional.
nlp = spacy . load ( "en_core_web_sm" )
nlp . add_pipe ( "negex" , config = { "ent_types" :[ "PERSON" , "ORG" ]})Negationen anzeigen.
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Überlegen Sie, wie Sie mit der Schärfe zusammenpassen, um UMLS -Konzepte in Text- und Prozessnegationen zu finden.
Bezeichnende Termset, die verwendet werden soll, wird standardmäßig en_clinical verwendet.
en = Phrasen für den allgemeinen englischsprachigen Texten_clinical DEFAULT = Fügt Phrasen hinzu, die für die klinische Domäne spezifisch sind, dem allgemeinen Englischen_clinical_sensitive = fügt zusätzliche Phrasen hinzu, um historische und möglicherweise irrelevante Entitäten auszuschließenZu setzen:
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 ()
}
)Ersetzen Sie alle Muster durch Ihren eigenen Satz
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" ]
}
}
)Fügen Sie individuelle Muster im laufenden Fliegen von eingebauten Begriffen hinzu und entfernen Sie sie
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" ],
}
)Im verwendete Ansichtsmuster anzeigen
from negspacy . termsets import termset
ts = termset ( "en_clinical" )
print ( ts . get_patterns ())Abhängig vom benannten Entitätserkennungsmodell, das Sie verwenden, haben Sie möglicherweise Negationen, die mit Substantiven zusammengeführt werden. Zum Beispiel:
nlp = spacy . load ( "en_core_sci_sm" )
doc = nlp ( "There is no headache." )
for e in doc . ents :
print ( e . text )
# no headache Dies würde dazu führen, dass der Negex -Algorithmus die vorhergehende Negation verpasst. Um dies zu berücksichtigen, können Sie ein chunk_prefix hinzufügen:
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 beitragen
Lizenz
Diese Bibliothek ist im Spacy -Universum zu sehen. Probieren Sie es für andere nützliche Bibliotheken und Inspirationen aus.
Wenn Sie nach einem Spacy -Pipeline -Objekt suchen, um Werte zu extrahieren, die einer benannten Entität (z. B. Geburtsdaten, Kontonummern oder Laborergebnissen) entsprechen, schauen Sie sich die Extraktakatur an.
