Когда я применяю negspacy к моему предложению, я хочу, чтобы negspacy рассматривал определенную c фразу как единое целое и давал мне вывод для него.
import en_core_sci_lg
from negspacy.negation import Negex
nlp = en_core_sci_lg.load()
negex = Negex(nlp, language = "en_clinical_sensitive")
nlp.add_pipe(negex, last=True)
doc = nlp(""" patient has no signs of shortness of breath. """)
for word in doc.ents:
print(word, word._.negex)
Результат -
patient False
shortness True
Я хочу, чтобы результат был -
patient False
shortness of breath True
Как я могу рассматривать такие фразы, как «одышка», «боль в горле», «респираторный дистресс» как единое целое.
Я пробовал -
import en_core_sci_lg
from negspacy.negation import Negex
nlp = en_core_sci_lg.load()
from spacy.pipeline import EntityRuler
ruler = EntityRuler(nlp)
patterns = [{"label": "ENTITY", "pattern": [{"LOWER": "shortness"}, {"LOWER": "of"}, {"LOWER": "breath"}]}]
ruler.add_patterns(patterns)
nlp.add_pipe(ruler)
negex = Negex(nlp, language = "en_clinical")
nlp.add_pipe(negex, last=True)
doc = nlp("""patient has no signs of shortness of breath. """)
for word in doc.ents:
print(word, word._.negex)
Результат все еще идет -
patient False
shortness True
Что я могу сделать, чтобы решить эту проблему