Что касается определения нового пользовательского объекта, вы можете легко добавить его в список объектов: ents
. Чтобы узнать, как вы можете это сделать, я рекомендую взглянуть на этот сравнительно короткий пример SpaCy, который делает нечто очень похожее на то, что вы хотите сделать:
https://spacy.io/usage/rule-based-matching#on_match
В этом примере они соответствуют слову и, основываясь на совпадении, добавляют пользовательский объект. Здесь они используют свойство ORTH, но вы можете использовать {"POS": "NUM"} в соответствии с вашими потребностями. Кроме того, вам может быть полезно использовать Matcher Explorer на основе правил, чтобы поиграть со своими матерями в приятном дружественном пользовательском интерфейсе. В этом примере нет необходимости устанавливать пользовательский атрибут.
Если, однако, вы решите пойти по пути пользовательского атрибута, то вы правы, что вам нужно использовать Token.set_extension (...), чтобы включить пользовательское свойство уровня токена. Я предполагаю, что вы хотите установить значение по умолчанию False
, а затем перезаписать это False
с помощью True
, если токен является «Streitwert». Вы можете сделать это, добавив параметр по умолчанию.
Token.set_extension("Streitwert", default=None, force=True)
Кроме того, я заметил, что ваш метод get_key_word (...) большую часть времени ничего не возвращает. т.е. если какое-либо из условий False
, какое значение должно быть возвращено?