Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
 Аватар для monahoff
40 / 40 / 23
Регистрация: 26.01.2012
Сообщений: 317

Классификация текстов

02.03.2019, 18:03. Показов 4060. Ответов 4

Студворк — интернет-сервис помощи студентам
Привет всем!
Заинтересовался темой обработки текстов, а в частности классификацией/кластеризацией.
В большинстве примеров решения подобных задач на вход классификатора (в реальном времени) подают какой-то стек текстов, обучают модель и затем подсовывают новый документ, чтобы предсказать к какой группе отнести текст/найти процент сходства.

Перед постановкой вопроса попробую описать свою задачу:
Есть набор текстов (допустим худ. литература), этих текстов достаточно много. По факту, этот материал можно использовать для модели "с учителем".
Сама задача состоит в определении принадлежности новых документов к худ. литературе. (применять собираюсь sklearn)

Как я понимаю, можно поступить как минимум двумя способами:

Способ 1
Тупо кластеризовать какой-то значительный объем новых документов, чтобы (допустим с помощью k-means) выделить группы схожих текстов и потом уже в ручном режиме посмотреть эти кластеры, чтобы принять решение о группировке с уже имеющейся базой книг.

Способ 2
Обучить модель на уже имеющихся книгах и на основе этого принимать решение для каждого нового документа/группы
Как в таком случае обучить модель на большом объеме данных (более 1 млн. книг), сохранить конфигурацию этой модели и потом применять для новых документов?

Что посоветуете? Может кто-то уже решал подобные задачи?
Заранее спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.03.2019, 18:03
Ответы с готовыми решениями:

Классификация текстов
Привет всем, подскажите пожалуйста, как и с чего начать для построения классификатора текста, то есть я я хочу разделить на два класса,...

Мультиклассовая классификация в xgboost
Добрый день! Нужно построить модель с помощью мультиклассовой классификации в xgboost. В наборе данных имеется 4 класса. По итогу...

Классификация элементов последовательности на N классов
У меня есть задача классификации элементов на N классов. Проблема в том, что, строго говоря, эти классы нейросеть должна сама обозначить. ...

4
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
02.03.2019, 22:07
Цитата Сообщение от monahoff Посмотреть сообщение
стек текстов,
Хм, вы уверены, что именно "стек"? Или так, ради красивого словца?

Цитата Сообщение от monahoff Посмотреть сообщение
обучают модель и затем подсовывают новый документ, чтобы предсказать к какой группе отнести текст/найти процент сходства.
Да, именно так, оба приведенных вами "способа" вполне укладываются в эту схему.


Цитата Сообщение от monahoff Посмотреть сообщение
Сама задача состоит в определении принадлежности новых документов к худ. литературе. (применять собираюсь sklearn)
Уточняю. Определяем принадлежность к художественной литературе, а если не подтверждается - то к какой? Просто вот это "к какой" может быть разным, например - у вас есть "техническая", "юридическая", "медицинская" и пр, и разница между "художественной" и - например - "научно-популярной" может оказаться на много меньше, чем между разными образчиками "художественной"

Цитата Сообщение от monahoff Посмотреть сообщение
Как я понимаю, можно поступить как минимум двумя способами:
Оба варианта имеют право на жизнь. Классификацию применяют, когда есть размеченный набор учебных данных. Для разметки можно использовать китайцев :-). Я серьезно, в Китае есть фирмы, специализирующиеся на разметке наборов данных для последующего обучения по ним систем ML. И те наборы лиц, текстов, звуков и пр, на которых обучают сегодня нейросети именно так и созданы.
Кластеризация - помимо других прикладных задач - решает и задачу, "а что делать, если денег заплатить китайцам нет". Т.е. она в принципе может решить как-то задачу разметки. Понятно, что качество будет хуже, чем при ручной разметке, но зато дешевле и быстрее. Иногда этого достаточно. Ну и интерпретировать результат придется самому.

Оба подхода имеют право на существование. Что применять - выбирать вам. Примеры в сети имеются, можно погуглить. Но разделение на "художественную" и прочую литературу задача, конечно, надуманная и мало кому интересная. Гораздо чаще задачу используют,например, информационные агенства, которые уже давно научились автоматически относить текст к той или иной рубрике. При кажущейся несерьезности задача позволяет им (информагенствам) экономить существенные деньги на выполнении работы, которые ранее выполнялись целыми отделами людей. Ищите в этом направлении.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
02.03.2019, 23:41
Лучший ответ Сообщение было отмечено monahoff как решение

Решение

Цитата Сообщение от passant Посмотреть сообщение
Сама задача состоит в определении принадлежности новых документов к худ. литературе
Оба подхода будут так или иначе ошибочно относить к художественным тексты других жанров\направлений. Так как граница очень тонкая, о чем вам уже написали.
Хороший датасет размеченных данных (для классификации) способен, конечно, сильно повысить точность.
Но вручную размечать довольно непросто.
Хотя, можно и нарыть какой-нить интернет ресурс с книгами и выпарсить его - при наличии уже готовой разметки\рубрикации на сайте получаем размеченный датасет...
Ну или все-таки нанять гастарбайтеров :-) как предложили выше.

Вот у меня обученная по размеченным данным модель K-NN (ближайших соседей) определяла новые документы вот так:
Code
1
2
3
4
5
6
7
8
9
10
11
Blagov. Domashnii lechebnik.txt => медицина
Kapeliushnikov. Ekonomicheskaia teoriia prav sobstvennosti.txt => экономика
Dostoevskii. Igrok.txt => литература
Gegel. Fenomenologiia duha.txt => философия
Rybakov. Iazychestvo drevnei Rusi.txt => мифология
Sviatoi Vasilii Velikii.txt => религия
Erazm Rotterdamskii. Oruzhie khristianskogo voina.txt => религия
Bystrovskii. Novaia bibleiskaia entciclopediia.txt => религия
Mify narodov Azii i Afriki.txt => мифология
Bodriiiar. Sistema veshchei.txt => философия
Azimov. 3 zakona robotekhniki.txt => литература
Вроде все точно. За исключением того, что Novaia bibleiskaia entciclopediia.txt это на самом деле художественная книжка в стиле Нового завета.
Но если начать моей модели скармливать реально большое кол-во текстов для предсказания - думаю будет все гораздо хуже, так как обучающий датасет был игрушечным.

Цитата Сообщение от monahoff Посмотреть сообщение
обучить модель на большом объеме данных (более 1 млн. книг)
Вы себе уже представили сколько у вас уйдет времени на предварительную программную обработку текстов?
Это, кстати, самая важная задача в ML - подготовить данные.
В случае текстов обработка это создание bag of words: токенизация (вариантов как именно - масса), нормализация(канонизация токенов до нормальной словарной формы), удаление стоп-слов и прочего мусора, и, наконец, векторизация списков слов в вектора чиселок.
Для миллиона документов, где каждый это целая книга, это весьма долгоиграющий процесс.

А ведь вектор еще и в ОЗУ должен поместиться, чтобы модель смогла с ним работать. Хотя, какие-то модели в sklearn вроде позволяют работать с батчами данных (кроме алгоритмов которым нужна матрица попарных расстояний между объектами) - не пробовал пока.

Цитата Сообщение от monahoff Посмотреть сообщение
сохранить конфигурацию этой модели и потом применять для новых документов?
pickle или любой другой способ сериализации обученной модели и мешков слов.
1
 Аватар для monahoff
40 / 40 / 23
Регистрация: 26.01.2012
Сообщений: 317
02.03.2019, 23:52  [ТС]
Добавлено через 9 минут
Цитата Сообщение от Garry Galler Посмотреть сообщение
pickle или любой другой способ сериализации обученной модели и мешков слов
с этим понял!
Цитата Сообщение от Garry Galler Посмотреть сообщение
Вы себе уже представили сколько у вас уйдет времени на предварительную программную обработку текстов?
я хочу сделать выборочное обучение, то есть я определенно знаю книги по "темам" (размеченный датасет): про войну, романы, приключения..и хочу взять из каждой группы часть книг, весь лям потрошить не вижу смысла, только бы понять какой процент брать (хотя все это видимо чисто экспериментально)
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
03.03.2019, 00:04
Цитата Сообщение от monahoff Посмотреть сообщение
Только бы понять какой процент брать
Для классификации у вас должны быть размечены по условным жанрам все документы. Какой процент брать от всей вашей коллекции я вам сказать не могу, главное чтобы число книг в каждой подгруппе было равномерным, без перекосов. Попробуйте для начала на небольшой выборке, скажем в 1000 книг, где при наличии, к примеру 10 групп, в каждой будет по 100 представителей своего жанра. Если сможете написать правильный код для обработки этих данных - далее будет несложным построить модель и по большей выборке. Скормить готовый (и векторизованный) bag-of-words классификатору дело нехитрое и несколько строк. А вот создать его - совсем другой вопрос.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.03.2019, 00:04
Помогаю со студенческими работами здесь

Классификация текста к определенному классу SVM
Здравствуйте, есть у кого-нибудь пример классификации текста к определенному классу методом опорных векторов? Или хорошая, а главное...

VGG16. Классификация изображений (Cats vs. Dogs)
Всем доброго времени суток Мне для своего проекта нужно написать сверточную нейросеть. Решил для начала попробовать разные примеры....

Классификация периодов после изменения уровня данных
Проблема такая. Есть определенный индекс, его изменение было классифицировано как "Рост", "Без изменений",...

Семантический анализ текстов
Есть задача: для заданной уязвимости из БДУ ФСТЭК найти соответствующие ей угрозы из этой же БДУ. Вопрос в принципе изначально стоит,...

Строка: Произведите токенизацию строк, то есть разбиение текстов на слова.
Коллеги выручайте, застрял на совершенно простом задании, толкните простым понятным кодом. Задание такое: 1. Скачайте файл с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru