С помощью spaCy (Python) вы сможете написать собственный компонент и внедрить в него оболочку для текущей модели NER. Пользовательские компоненты всегда принимают doc
в качестве входных данных, изменяют его и возвращают. Это позволяет объединять как пользовательские, так и готовые компоненты.
Например, если ваша модель NER принимает в качестве входных данных список токенов и возвращает список их BILUO-тегов , вы можете обернуть эту модель следующим образом:
from spacy.gold import offsets_from_biluo_tags
def custom_ner_wrapper(doc):
words = [token.text for token in doc]
custom_entities = your_custom_ner_model(words)
doc.ents = spans_from_biluo_tags(doc, custom_entities)
return doc
Как только вы определили этот пользовательский компонент конвейера с именем custom_ner_wrapper
, вы должны добавить его в свой nlp
конвейер следующим образом:
nlp.add_pipe(custom_ner_wrapper)
Более подробную информацию можно найти здесь: https://spacy.io/usage/processing-pipelines#wrapping-models-libraries