Поведение Spacy Tokenizer состоит в том, чтобы раздавать отдельные пробелы в свойство whitespace
предыдущего токена, и более двух последовательных пробелов объединяются в один отдельный токен. Один пробел в начале предложения также образует один токен. Эти жетоны только с пробелом имеют pos_
как SPACE
.
Мне нужен способ изменить это поведение, чтобы даже последовательные пробелы добавлялись в свойство whitespace
предыдущего токена вместо формирования отдельного токена.
Пример:
предложение 'Это работает правильно?'
Текущее поведение токенизатора -
предложений.токены : ['', 'Есть', 'это', '', 'работает', 'правильно', '.']
token.whitespace : ['', '', '', '', '', '', ''] (0 или 1 пробел)
Ожидаемое пользовательское поведение токенизатора -
Предложение.Токены : ['', 'Есть', 'это', 'работает', 'правильно', '.'] (Первый пробел нельзя избежать)
token.whitespace : ['', '', '', '', '', ''] (0 или более пробелов)
Я могу сделать это с помощью цикла после токенизации и установки нового ._.whitespaces
настраиваемого свойства spacy для каждого токена. Но это будет включать преобразование объекта doc в список токенов, которых я хочу избежать, потому что объект doc предоставляет некоторые хорошие свойства для всех токенов. Если бы я должен был создать новый объект документа с токенами без пробелов, используя tokenizer.tokens_from_list
, я не получил бы правильные POS-теги для токенов, так как текст слова содержал бы пробелы.