Как пробельные токены с '\ n' влияют на CNN spaCy? - PullRequest
0 голосов
/ 12 мая 2018

POS-тэг spaCy генерирует разные теги, когда существуют жетоны пробелов с переносами строк '\ n' (но не для жетонов пробелов, содержащих только пробелы):

>>> import spacy
>>> nlp = spacy.load('en')    
>>> text = 'The library respects your time, and tries to avoid wasting it.'
>>> text_with_ws = '   '.join(text.split())
>>> text_with_lb = '\n'.join(text.split())
>>> doc = nlp(text)
>>> print([t.pos_ for t in doc])
['DET', 'NOUN', 'VERB', 'ADJ', 'NOUN', 'PUNCT', 'CCONJ', 'VERB', 'PART', 'VERB', 'VERB', 'PRON', 'PUNCT']
>>> doc = nlp(text_with_ws)
>>> print([t.pos_ for t in doc if t.pos_ is not 'SPACE'])
['DET', 'NOUN', 'VERB', 'ADJ', 'NOUN', 'PUNCT', 'CCONJ', 'VERB', 'PART', 'VERB', 'VERB', 'PRON', 'PUNCT']
>>> doc = nlp(text_with_lb)
>>> print([t.pos_ for t in doc if t.pos_ is not 'SPACE'])
['DET', 'NOUN', 'NOUN', 'ADJ', 'NOUN', 'PUNCT', 'CCONJ', 'NOUN', 'PART', 'NOUN', 'NOUN', 'PRON', 'PUNCT']

Теперь я не понимаю, как сверточный нейронный spacyсеть работает, но ожидаются ли другие результаты?

1 Ответ

0 голосов
/ 29 мая 2018

Это связано с тем, что символ новой строки вызывает сегментацию предложения, в то время как пробелы или табуляции не действуют как разделители предложений.Эти выходные данные отображают разницу между двумя синтаксическими анализами: 1. В примере text_with_ws весь текст обрабатывается как одно предложение, и, следовательно, анализ зависимостей и POS-теги работают именно так.enter image description here

В примере text_with_lb каждый токен обрабатывается независимо.(добавили period (.) вместо новой строки, поскольку смещение не поддерживает новые строки, точка также действует как разделитель предложений, как и новая строка) enter image description here
...