Как выполнить шаги предварительной обработки объектов Spacy Span и иметь возможность запустить .vector впоследствии? - PullRequest
0 голосов
/ 18 февраля 2019

Мне нужна помощь в ситуации, в которой я оказался. Я готовлю текст для модели классификации.Идея состоит в том, что текст на самом деле представляет собой абзац (один или несколько), а затем я классифицирую каждое предложение в нем (после некоторой очистки и (или) предварительной обработки курса).Для этого я использую word embeddings и spacy.

Без шага предварительной обработки все, что мне нужно сделать, это передать текст в spacy, и spacy дает мне предложения как doc.sents.Затем из этих предложений я делаю фрейм данных и вызываю .vector для пространственного span объекта, которым фактически является каждая строка в фрейме данных.Это дает мне представление средний вектор для каждого предложения, и я легко могу передать его одному из классификаторов sklearn.

Однако для улучшения модели я решил добавить ряд этапов предварительной обработки и очистки.Но это то, где я застрял.Я делаю некоторую очистку необработанного текста, например удаление разрывов строк, нескольких пробелов, табуляции и т. Д., Которые работают хорошо.Затем я вызываю spacy на очищенный текст.Spacy дает мне предложения, и я храню их в данных.Но затем я хочу выполнить более предварительную обработку, например, удалить стоп-слова, неуместные символы, такие как <,>, ", \ etc, и некоторые другие вещи. И идея состоит в том, что, как только я их удаляю, я снова вызываю .vector, чтобы легко получитьсредний вектор. Однако я не могу обработать что-либо в кадре данных, поскольку они являются , а не текстом, а скорее простыми span объектами. Я пробовал что-то вроде этого -
df['b'] = df['a'].apply(lambda x: remove_stopwords(x))
, где вremove_stopwords У меня есть -
text = (word for word in text if word.text not in STOPWORDS), но потом, когда я запускаю .vector в строках кадра данных, я получу -
AttributeError: 'generator' object has no attribute 'vector'.

Я не знаю, какпреобразовать их обратно в пространственные span объекты, чтобы я мог запустить на них .vector.

Одно из возможных решений - сделать то, что я делаю, но написать свой собственный метод, который возвращает среднее значение вектора для предложения.Но это то, что мне кажется очень неэффективным и неприемлемым.

Любое предложение смягчить эту проблему будет высоко оценено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...