Я пытаюсь построить модель классификации текста. Моя цель состоит в том, чтобы классифицировать каждый абзац в 10000 документах на наличие в нем информации о «Трудовой забастовке» или нет.
Сначала я выполнил основные этапы предварительной обработки и преобразовал абзацы в матрицу терминологического документа (CountVectorizer). Затем введите эту матрицу в такие модели, как логистическая регрессия и SVM, предоставляемые Scikit-Learn.
Тем не менее, я обнаружил, что информация по теме документов, предоставленная предварительно обученной моделью LDA, будет полезна для классификации текста на уровне абзацев.
Поэтому я хочу также предоставить информацию по темам вместе с информацией о BOW для каждого текста.
После ответа на подобный вопрос, я думаю, что просто добавление номера темы в последнем столбце матрицы терминов-документов.
Например, пусть 'text_train' будет моим учебным корпусом (скажем, 40000 абзацев), а 'topic' будет списком номеров тем, присвоенных каждому абзацу моделью LDA.
vectorizer = CountVectorizer(ngram_range=(1,3))
X = vectorizer.fit_transform(text_train)
X.toarray() #shape (40000, 643898)
topic = coo_matrix([topic]).T #shape (40000, 1)
hstack([X.toarray(), topic]).toarray() #shape (40000, 643899)
Возвращает желаемую матрицу, последний столбец которой содержит информацию по темам.
Однако, поскольку номера тем не имеют кардинального (или порядкового) порядка, как у элементов матрицы терминов-документов, я обеспокоен тем, что некоторая линейная модель машинного обучения может не подходить для этой работы.
Это правда? Тогда есть ли другие решения, которые я могу принять?