Классификация больших текстов через обучение с учителем — какие подходы существуют?
Здравствуйте, товарищи.
Я недавно начал изучение нейросетей, но уже загорелся этой тематикой, и начинаю обдумывать свои пришедшие в голову pet project-ы.
Собственно, мне очень хочется сделать нейросеть, классифицирующую большие (от 5кБ до 100-200 кБ) тексты на русском языке на несколько заранее известных групп. Проблема в том, что я никак не могу найти информации по поводу обучения с учителем на больших текстах - те статьи, что я находил, описывают случаи небольших (менее 1 кБ) текстов. Будут ли эти примеры работать, будучи смасштабированы в сто раз?
К тому же, второстепенная проблема в том, что я не совсем знаю, какие дополнительные сложности принесет обработка текстов на русском, а не английском языке. Падежи, роды и числа наверняка без специальной обработки будут смущать сеть.
И наконец, я не совсем уверен, что такая задача по силу моим вычислительным мощностям. Обучаться на (десятках?) тысяч текстов размером от пары килобайт до пары сотен килобайт - по силам ли эта задача средненькому компьютеру, или для такого размаха нужны десятки серверов, и мне с моими возможностями следует урезать леща?
Собственно, прошу советов опытных товарищей - по возможностям ли мне эта задача, и какие подходы можно использовать для ее решения?..
А какой смысл вам переживать, получится или не получится? начните делать, хуже от этого никому не будет.
По поводу подводных камней, само собой если вы принимаете за фитчу (сигнал), в нейросети например 1 слово, то увеличивая количество слов вы усиливаете этот сигнал - тексты где больше слов будут выдавать большие значения сигналов, где меньше слов - меньшие значения, поэтому вам нужно использовать нормализацию этих сигналов, грубо говоря например делить размер сигнала на количества слов в тексте, для каждого текста (ну и так будет "честнее" сравнивать, тексты разного обьема).
По поводу падежей, родов - для этого используют стемминг, предварительную очистку текста от такой специфики (приведение текста в нейтральный вид). По поводу английский или русский - разницы никакой (только спемминг нужно под русский сделать), само обучение не имеет разницы.
Для обучения по текстам, можно даже компьютеры из 90х использовать, все будет работать.
xmoonlight, для меня очевидно, что например слово "станция" дало бы большой вес для тематик - "космос", "фантастика", остальные вполне нейтральные слова, еще корабли бы дали какую-нибудь тематику - морскую и космическую, ну суммарно было бы космическая на первом месте, морская на втором.
для его алгоритма будет зависеть от обучения, и количества признаков. Мало слов хуже определяет тематичность, больше слов - точнее определять будет.
xmoonlight, если не очищать, то это будет для модели как отдельное слово, можно и такому научить, если часто встречать например слова с кавычками, но лучше использовать стемминг - что позволяет очищать все слова, приводя к "нормальному" виду, например все слова с маленькой буквы, без всяких спец символов, без окончаний и тд.
дима кубитский, ну вот, поэтому нужно не по словам делать определение тематики, а по смыслу текста :)
Даже в таком простом случае, как этот - определение точной тематики не представляется возможным даже Вам, не говоря уже про анализ компьютерным алгоритмом...
xmoonlight, есть задача например классификации текста, а не ПОНИМАНИЯ его смысла. Мы классифицируем по признакам, это успешно работает, и решает например задачу классификации.
Можно высасывать из пальца какие при этом проблемы есть, я смотрю на то что нам это дает.
А дает нам это очень много, например возможность создания рекомендательных систем.
Это - моя мечта, а не проект, который я буду пытаться делать прямо сейчас. Для меня очевидно, что это будет крайне сложная система, и мне нужно будет прочитать куда больше книг, чем "Make Your Own Neural Network", которую я дочитываю сейчас. Я просто заранее хотел узнать подводные камни и overview методик, которые можно будет применить при реализации моей мечты - примерно то, что ответил дима кубитский =-)
Страга Севера, поймите простую вещь: можно считать количество слов и проставлять веса и получить нечто, похожее на ожидаемое, но АБСОЛЮТНО не работающее.
А можно сделать сразу нормально и создать систему, анализирующую СМЫСЛ контентного содержания (отношения и связи между частями речи и т.д.) и получить КОРРЕКТНУЮ систему классификации текстов.
Понимаете?
Вот явный пример:
Наши "корабли" бороздили просторы до тех пор, пока не наткнулись на искомую станцию.
Никто так и не вспомнил про пустыню и верблюдов, про пшеничные поля и комбайны, про одну из компьютерных игр и т.д. ...
Верный ответ: Данный текст не поддаётся классификации, т.к. "веса" по всем возможным классам не имеют перевеса, т.е. они - одинаковые.
Это самый простой пример, показывающий, что не всё так радужно)
Страга Севера,
Человек пытается вас запутать (возможно потому что сам запутался, с подходами и методами), ВАМ на первых порах важно сосредоточится на фундаментальных подходах, а не на всей этой мишуре, с названиями и фреймворками. Чтоб не попасть в ловушку когда люди изучают сотни все новых и новых технологий/фреймворков которые делают ОДНО и тоже одними и темеже методами, подавая это под разными соусами. Даже сами подходы типа марковские цепи, метод опорных векторов, деревья решений, нейросети, все является лишь классификаторами входящих сигналов, и все они работают примерно по одним и темже принципам и дают примерно одни и теже результаты и практически друг от друга не отличаются.
Большое спасибо и вам. Буду изучать как "фундаментальные" методы, так и "мишуру", чтобы составить собственное представление об их сравнительной применимости =-)
xmoonlight, что значит дураки? вы сами там что-то выдумали, я этого не говорил.
Мне очень сложно в рамках сообщений, обосновать вам то что большинство методов отличаются в совсем незначительных деталях, и фактически об одном и томже.
Что например логистическая регрессия, это частный случай регрессии, а нейросеть это набор логистических регрессий, что метод опорных векторов это частный случай нейросети и тд и тому подобное.
Но мне этого и не требуется делать, пускай человек разбирается изучает теорию, и для себя приходит к каким-то выводам.
П. С.
я заметил что вы очень много говорите, но мало по делу.