2016-11-23 3 views
0

У меня есть большой набор учебных слов, помеченных pos и neg для классификации текстов. Для классификации текстов я использовал TextBlob (согласно this tutorial). Хотя он работает достаточно хорошо, он может быть очень медленным для большого набора тренировок (например, 8 тыс. Слов).scikit-learn: классификация текстов с использованием пользовательских меток

Я хотел бы попробовать сделать это с помощью scikit-learn, но я не уверен, с чего начать. Как выглядел бы приведенный выше учебник в scikit-learn? Мне также хотелось бы, чтобы тренировочный набор включал весы для определенных слов. Некоторые из них должны в значительной степени гарантировать, что определенный текст классифицируется как «позитивный», а другие гарантируют, что он классифицируется как «отрицательный». И, наконец, можно ли предположить, что некоторые части анализируемого текста более ценны, чем другие?

Любые указатели на существующие учебники или документы оценены!

ответ

1

Существует прекрасная глава на эту тему в Sebastian Raschka's Python Machine Learning book и код можно найти здесь: https://github.com/rasbt/python-machine-learning-book/blob/master/code/ch08/ch08.ipynb.

Он анализирует настроения (что вы пытаетесь сделать) в наборе данных IMDB. Его данные не так чисты, как ваши - от внешнего вида - поэтому ему нужно сделать немного больше предварительной обработки. Ваша проблема может быть решена с помощью следующих шагов:

  1. Создания числовых функций с помощью векторизации текста: http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.HashingVectorizer.html

  2. Поезда раздельного испытания: http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html

  3. поезда и проверить свои любимые модели, например: http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

+0

Хороших ресурсам, спасибо; Мне нужно купить эту книгу! Один вопрос: если мой набор упражнений - это буквально только отдельные слова, помеченные логическим значением (неважно, что каждый представляет), можно ли все-таки построить классификатор для использования в текстах с несколькими предложениями? У меня создается впечатление, что модели работают, анализируя целые тексты, создавая таблицы вероятностей, а затем применяя множество эвристик на входных текстах. – mart1n

+0

Инициализатор хэширования использует TF-IDF для назначения числовых значений словам. Часть TF будет заботиться только о каждом образце - так что это будет 1 для каждого из ваших образцов. Часть IDF сравнивает каждый образец со всеми образцами, и именно так будут созданы ваши числовые функции. Поскольку вы попытаетесь предсказать настроения с помощью одной числовой функции, вы можете наложить гистограммы (по цвету от настроения) и посмотреть, как хорошо она будет работать, прежде чем вы будете обучать любую модель. – AlexG

0

Существует много способов сделать это, например, Tf-Idf (Временная частота - частота обратного документа), счетчик векторов, скрытый семантический анализ (LSA), распределение скрытого распределения дирихле (LDA), Word2Vec.

Среди всех вышеперечисленных методов Word2Vec - лучший метод. Вы можете использовать предварительно обученную модель с помощью Google для Word2Vec, доступны по адресу:

Смежные вопросы