Пользовательский пробел с помощью Spacy - PullRequest
0 голосов
/ 12 марта 2019

Поведение Spacy Tokenizer состоит в том, чтобы раздавать отдельные пробелы в свойство whitespace предыдущего токена, и более двух последовательных пробелов объединяются в один отдельный токен. Один пробел в начале предложения также образует один токен. Эти жетоны только с пробелом имеют pos_ как SPACE.

Мне нужен способ изменить это поведение, чтобы даже последовательные пробелы добавлялись в свойство whitespace предыдущего токена вместо формирования отдельного токена.

Пример:

предложение 'Это работает правильно?'

Текущее поведение токенизатора -

предложений.токены : ['', 'Есть', 'это', '', 'работает', 'правильно', '.']

token.whitespace : ['', '', '', '', '', '', ''] (0 или 1 пробел)

Ожидаемое пользовательское поведение токенизатора -

Предложение.Токены : ['', 'Есть', 'это', 'работает', 'правильно', '.'] (Первый пробел нельзя избежать)

token.whitespace : ['', '', '', '', '', ''] (0 или более пробелов)

Я могу сделать это с помощью цикла после токенизации и установки нового ._.whitespaces настраиваемого свойства spacy для каждого токена. Но это будет включать преобразование объекта doc в список токенов, которых я хочу избежать, потому что объект doc предоставляет некоторые хорошие свойства для всех токенов. Если бы я должен был создать новый объект документа с токенами без пробелов, используя tokenizer.tokens_from_list, я не получил бы правильные POS-теги для токенов, так как текст слова содержал бы пробелы.

...