NER на основе правил в Spacy: удаление шаблонов

Я добавляю правила в свою пользовательскую модель распознавания именованных сущностей Spacy, используя новый EntityRuler (https://spacy.io/usage/rule-based-matching#entityruler).

Я добавил 1 миллион названий белков, на выполнение которых ушли часы, и теперь понял, что многие из них имеют имена, являющиеся общими словами (например, «ЗА» и «11»).

Я хотел бы удалить некоторые шаблоны из объекта EntityRuler (https://spacy.io/api/entityruler < / а>). Но я не знаю, как это сделать ...

Как я могу удалить правила / шаблоны из моего объекта EntityRuler? Не выгружая все и не загружая то, что должно остаться.


person Valdegg    schedule 11.03.2020    source источник


Ответы (1)


Глядя на исходный код (https://github.com/explosion/spaCy/blob/master/spacy/pipeline/entityruler.py) объект EntityRuler передает шаблоны непосредственно в объект Matcher. Вы можете легко получить доступ к объекту Matcher EntityRuler следующим образом (при условии, что ваш объект EntityRuler называется entity_ruler):

matcher = entity_ruler.matcher

У объекта Matcher есть метод удаления шаблонов / правил, как описано в API (https://spacy.io/api/matcher). Таким образом, вы можете удалить шаблоны, набрав

matcher.remove(<insert pattern ID here>)
person Niels    schedule 15.03.2020