Вот моя проблема:
Я хочу интегрировать пользовательские метки entity_ruler со стандартными метками статистического объекта spacy, где это возможно.Я думаю (но не уверен), что оба ярлыка должны появляться во всех случаях, кроме точного наложения.
Надежда состоит в том, что если пользовательская метка линейки точно совпадает со статистической меткой для данного диапазона, метка entity_ruler будет перезаписывать статистическую метку, но в противном случае также появятся все стандартные статистические метки.
Прямо сейчас парсер возвращает только метки entity_ruler (и связанные токены) ИЛИ статистические метки (и связанные токены), но не их комбинацию.
Я попытался вставить оба entity_ruler как и раньше = "ner"and after =" ner "и с overwrite = True и overwrite = False.Я даже пытался вставить entity_ruler где-нибудь еще в конвейере (например, перед анализатором, tagger и т. Д.). Ничего из этого не работает.
Вот способ инструкции, как я понимаю (хотя я пробовал все другие возможные варианты, о которых я могу думать, и ничего больше не работает):
from spacy.pipeline import EntityRuler
import en_core_web_lg
nlp = spacy.load("en_core_web_lg")
ruler = EntityRuler(nlp)
patterns = [
{"label": "CEO", "pattern": "John Doe0"},
{"label": "COO", "pattern": "John Doe1"},
{"label": "INVESTOR", "pattern": "John Doe2"},
{"label": "CURRENTCO", "pattern": "Newco0"},
{"label": "PASTCO", "pattern": "Newco1"},
]
ruler.add_patterns(patterns)
nlp.add_pipe(ruler, before="ner")
print(nlp.pipe_names)
ruler.to_disk("/home/user/anaconda3/envs/SPACY/lib/python3.7/site- packages/spacy/patterns.jsonl")
ruler = EntityRuler(nlp).from_disk("/home/km/anaconda3/envs/SPACY/lib/python3.7/site-packages/spacy/patterns.jsonl")
text = open(u'/home/user/anaconda3/envs/SPACY/RAW_DATA/snippet.csv').read()
doc = nlp(text)
for ent in doc.ents:
print(ent.text, ent.start_char, ent.end_char, ent.label_)
ВОЗВРАЩАЕТСЯ:
Джон Доу0 0 12 Генеральный директор
Джон Доу1 130 142 COO
Newco0 169 175 CURRENTCO
Джон Доу1 2997 3012 ИНВЕСТОРА