Добавить собственную пунктуацию в просторную модель
Как добавить пользовательскую пунктуацию (например, звездочку) в список инфиксов в токенизаторе и сделать так, чтобы nlp.explain распознал ее как знаки препинания? Я хотел бы иметь возможность добавлять символы, которые в настоящее время не распознаются как знаки препинания, в список знаков препинания из списка установленных инфиксов, чтобы Matcher мог использовать их при сопоставлении {'IS_PUNCT': True}
Здесь был дан ответ на аналогичную проблему:Как добавить пользовательские знаки к функциям пунктуации spaCy?
Единственная проблема в том, что я не могу упаковать недавно распознанную пунктуацию с моделью.
Примечание: токенизатор уже распознает инфиксы с желаемой пунктуацией, поэтому все, что осталось, - это передать это в Matcher.
1 ответ
Атрибут lexeme полностью отделен от любых настроек токенизатора. В упакованном конвейере вы должны либо создать собственный язык (https://spacy.io/usage/linguistic-features#language-subclass), либо запустить настройку в обратном вызове в
[nlp.before_creation]
(https://spacy.io/usage/training#custom-code-nlp-callbacks).
Имейте в виду, что изменение
EnglishDefaults
влияет на все англоязычные конвейеры, загруженные в один и тот же сценарий, поэтому вариант настраиваемого языка более понятен (в частности, если вы распространяете эту модель для общего использования), но также требует немного больше работы для реализации.
С другой стороны, если вы просто используете Matcher, может быть проще использовать
REGEX
шаблон для соответствия нужным токенам вместо настройки
IS_PUNCT
.