LINUX.ORG.RU

Если с английским проблем нет, то лучшая книга по нейронным сетям, что я пока что видел - Deep Learning by Ian Goodfellow.

keyran ★★
()

Хорошую вы тему подняли, товарисч белка.

Тоже было бы интересно узнать про книжки (в идеале - на русском). И обзор, чем отличаются модные библиотеки с практической точки зрения.

Vit ★★★★★
()
Ответ на: комментарий от Vit

Смотря какие.

Кто-то хочет запятые расставить, а кто-то текст из свободной формы по структурам растащить.

Rastafarra ★★★★
()
Ответ на: комментарий от Vit

чем отличаются модные библиотеки с практической точки зрения.

Если кратко, то уровнем абстракции (от сверхупрощённых, где только скормить данные и сказать train до монстров с тысячами параметров и полной кастомизацией в API), эффективностью расходования памяти, иногда синтаксисом. Сами по себе тензорные движки имеют достаточно стандартный синтаксис, потому код достаточно легко переносится между фреймворками. Лично я сейчас использую torch и cntk.

Sadler ★★★
()

Оффтоп, но - что за задачу решаешь? :-)

alex4321
()

Есть ли обучающие данные? Обычно без хороших обучающающих данных и решение будет не очень. Независимо от того использовать SVM, деревья решений или нейронные сети.

ant
()

Rastafarra alex4321 ant отвечаю сразу всем

итак задача: анализировать текст сообщений (ну хоть на форуме) на предмет «обычный»/«не обычный» - это первый и самый простой этап. Далее анализировать уже предложения из текста (тут встает вопрос еще разбиения на оные), и для них выполнять вышеупомянутый анализ + вычислять отношение к объекту (это самое мудреное).

Ложные срабатывания не страшны т.к. это приходит на стол к «модератору» и уже он решает что делать, главное ткнуть его на кусок текста на который система сработала.

С данными все плохо, то что для обучения нужны хорошие данные это ясно, но пахнет тем что заказчики захотят сами обучать систему на своей системе, и надо городить очистку текста от мусора.

Deleted
()
Ответ на: комментарий от Vit

Я как бы специально не искал — проще наставить фреймворков и посмотреть, что больше подходит. Лично мне не подошёл разве что Keras. В ближайшее время хочу осилить TensorFlow, он весьма заманчиво выглядит. Кроме прочего, я ещё и под виндами, где проблем со всем этим зоопарком в два раза больше, а драйвера GPU пару раз в день крашатся под полной нагрузкой.

Sadler ★★★
()
Ответ на: комментарий от Deleted

анализировать текст сообщений (ну хоть на форуме) на предмет «обычный»/«не обычный» - это первый и самый простой этап

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

нагороди стопслов, делов-то, добавь счетчик вхождений.

Rastafarra ★★★★
()

в частности про NLP?

Майк Холл, Боб Боденхамер «Полный курс НЛП». Лучше только отцов основателей, но эти хорошо всё собрали под одной обложкой, да ещё с кучей упражнений, кому надо.

papin-aziat ★★★★★
()
Ответ на: комментарий от Deleted

давай уж режекспами, чо уж там 8)

ставлю кружку чая, поиграешь во всякие coreNLP и через месяца 2-3 ты к этому придешь ))

баловство это все.

Rastafarra ★★★★
()
Ответ на: комментарий от Rastafarra

ставлю кружку чая, поиграешь во всякие coreNLP и через месяца 2-3 ты к этому придешь ))

т.е. вчера оно уже работало, а через месяц перестанет? 8)

Deleted
()
Ответ на: комментарий от Deleted

ну кто ж знает степень готовности?

если работает то зачет, че :)

Rastafarra ★★★★
()
Ответ на: комментарий от Deleted

О, а на более высоком уровне можешь сформулировать, что ты хочешь детектить и почему там надо анализировать язык и не хватит анализа в каких темах пасется юзер?

Например, мне было бы интересно:

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

Vit ★★★★★
()
Ответ на: комментарий от Deleted

вчера оно уже работало, а через месяц перестанет? 8)

покажи что ли пару примеров, в смысле хотя бы пару пар «обычный»/«не обычный»

Rastafarra ★★★★
()
Ответ на: комментарий от Deleted

Я бы начал с уточнения условий задачи :)

Это вот навскидку:

  • Что такое «не обычные» сообщения?
  • Какой язык надо анализировать?
  • Какие ресурсы? Их типизация: форумы, твиттер, одноклассники и т.п. на них люди немного по-разному пишут. Немного разное использование смайлов и т.п.
  • Определение отношения к объекту подразумевает, что этот объект нужно выделить :) Это закрытый список объектов, или открытый. А в одном сообщении можно быть только один объект или несколько?

По инструментам, логичнее начать с NLTK: http://www.nltk.org/book/

Но скорее всего достаточно будет сделать классификатор по разметке заказчика. А в качестве фич использовать слова текста + TF-IDF + n-граммы. Работать будет скорее всего достаточно хорошо.

Если хочется чего-то модного, то да, можно нейросети, word2vec и т.п.

ant
()
Ответ на: комментарий от Deleted

Далее мнение не то, что не волшебника - но даже человека, который толком не учится (так, поосиливал чутка теории, взял готовые велосипеды и пилит некритичное поделие) :

анализировать текст сообщений (ну хоть на форуме) на предмет «обычный»/«не обычный» - это первый и самый простой этап

Какого рода обычность/необычность надо оценивать (ну и насколько много входных данных)? А то может тут лучше пойдут средства попроще этих наших упомянутых выше ИНС (или deeplearning4j может не только в них).

и для них выполнять вышеупомянутый анализ + вычислять отношение к объекту

В смысле - установить связь с какой-то сущностью и попытаться классифицировать настрой? Возможно, здесь можно обойтись без велосипеда (в английский в этом плане могла бы пара из какого-то (не вспомню) IBM-го API и их же Tone Analyzer-а, в русский - вроде поделия от Abbyy (InfoExtractor и Smartclassifier соответственно, ЕМНИП)).

alex4321
()
Последнее исправление: alex4321 (всего исправлений: 1)
Ответ на: комментарий от ant

Я бы начал с уточнения условий задачи :)

Ну я тут тз приводить не буду, потому и в детали не углубляюсь.

Если хочется чего-то модного, то да, можно нейросети, word2vec и т.п.

в том и нюанс что народ хочет «neural networks» видеть в описании продукта 8)

Deleted
()
Ответ на: комментарий от Rastafarra

еще варианты? все? странно:

Word2vec is a group of related models that are used to produce word embeddings. These models are shallow, two-layer neural networks that are trained to reconstruct linguistic contexts of words.

хотя, конечно можно это назвать статистикой, хехе

Deleted
()
Ответ на: комментарий от Deleted

Про постановку задачи - это скорее вопросы для размышления :)

А алгоритм работы и описание продукта - все же разное. Всегда можно сказать «наши специалисты на основе технологий искусственного интеллекта, BigData и Deep Learning разработали ресурсы для вот этого алгоритма».

ant
()
Ответ на: комментарий от Vit

что ты хочешь детектить и почему там надо анализировать язык и не хватит анализа в каких темах пасется юзер?

а там заказчики сами не в курсе, потому по умолчанию делаем политику - вот детектим «все необычное», а как взвоют от потока срабатываний тогда будем требовать уточнения хотелок.

Например, мне было бы интересно:

- детектить двойные аккаунты

это нмв порывается статистикой, «как часто они появляются в томже топике», «какой у них словарный запас»

- детектить ботов, постящих ссылки

тоже статистика - «отношения постов ссылками»/«без ссылок», опятьже можно еще похожесть постов считать, но это больше для флудеров, боты обычно умнее

- детектить ботов, занимающихся формированием общественного мнения

вот тут же хз

Deleted
()
Ответ на: комментарий от ant

ну так и планируется, но сначала надо вкорячить сабж, показать что он не серебряная пуля, но для чегото полезен, а дальше уже придется копать

Deleted
()
Ответ на: комментарий от Rastafarra

этож статистика© зачем тебе?

зы. в любом случае это все не опенсурс, потому я тут ничего не уточнял даже по задаче

Deleted
()
Ответ на: комментарий от Deleted

а там заказчики сами не в курсе, потому по умолчанию делаем политику - вот детектим «все необычное», а как взвоют от потока срабатываний тогда будем требовать уточнения хотелок.

Дык а каковы критерии необычности? Сетка ж сама необычного не найдет, ее на необычности тренькать надо сначала.

Или для постов уже есть готовые наборы критериев, с которых рекомендуется начинать?

Vit ★★★★★
()
Ответ на: комментарий от Vit

Дык а каковы критерии необычности? Сетка ж сама необычного не найдет, ее на необычности тренькать надо сначала.

ну я исхожу из того что можно натренировать на обычное (в теории это просто скормить все что есть), а потом смотреть - если степень близости к оному ниже порога - значит «необычное»

понятно что на какомнить форуме «все обо всем» - это работать не будет, но у меня задача сильно уже

Deleted
()
Ответ на: комментарий от Deleted

Оффтоп :

можно натренировать на обычное (в теории это просто скормить все что есть)

Ещё бы в итоге не получился классификатор, примерно описываемый 2 функциями:

обычность(текст) ~= 1 и необычность(текст) ~= 0

Вангую, что без годного числа «необычных» текстов это таки весьма возможно.

Ну и да - возможно - и вовсе можно свести к какому-то topic modelling-у (обученному в том числе на «необычных» текстах - возможно и из внешних источников) и какому-нибудь kmeans с дальнейшим определением расстояния до центров допустимых/недопустимых кластеров?

alex4321
()
Ответ на: комментарий от Deleted

Что-то подозрительно. Если ты натренькаешь на всех возможных вариантах для твоего контекста, то и отклонения впишутся в валидные.

Или все-таки есть возможность «совсем-совсем-нормальное» выделить? Например «если активный юзер больше года на форуме, и его не забанили, то считаем его посты валидными»

Vit ★★★★★
()
Ответ на: комментарий от Vit

Если ты натренькаешь на всех возможных вариантах для твоего контекста, то и отклонения впишутся в валидные.

Это надо проверять, потому что зависит от узости контекста.

Например «если активный юзер больше года на форуме, и его не забанили, то считаем его посты валидными»

А ты подразумеваешь широкий контекст, типа общения на форуме. И тут ты описываешь выборку обучающего материала, но посуди сам, вот у нас был никсбрейн и куньлинксао и сотня фриков типа напильника - чему они научат нейронную есть?

Deleted
()
Ответ на: комментарий от alex4321

Вангую, что без годного числа «необычных» текстов это таки весьма возможно.

я вот тебя плохо понимаю 8)

Deleted
()
Ответ на: комментарий от Deleted

Ну во первых - как я понимаю, ты хочешь какой-то детектор аномалий, работающий с текстами и юзающий обучение без учителя (раз выборка не размечена)? Это я направление для поиска подсказываю :-)

я вот тебя плохо понимаю 8)

Грубо говоря - вот обучишь ты сетку с десятком тысяч нормальных записей и полутысячей аномалий. И есть шанс, что она будет возвращать примерно ~(1.0, 0.0) независимо от входных данных. Это если ты пойдёшь по пути построения классификатора с размеченной выборкой. Впрочем, это вроде обходится разными ухищрениями, но тут лучше кастовать более Ъ-специалистов по ML.

Впрочем, возможно, тебе стоит выделить признаки самостоятельно (если известно, какие признаки могут иметь смысл в задаче (хоть, например, каким-нибудь lda, для тематического моделирования)) и кластеризовать результат. Тогда, возможно, расстояния до кластеров уже будут нести какой-то смысл, и можно будет строить предположения, не имея сравнимого числа аномалий.

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

alex4321
()
Ответ на: комментарий от Deleted

Это надо проверять, потому что зависит от узости контекста.

Не, я к тому, что если во время тренировки скормишь плохие образцы под видом нормальных, то по идее потом сможешь детектить только принципиально новые отклонения. Ну типа если на твой форум кто-то станет гадить принципиально новым образом. А если в старом стиле - не заметишь.

А ты подразумеваешь широкий контекст, типа общения на форуме. И тут ты описываешь выборку обучающего материала, но посуди сам, вот у нас был никсбрейн и куньлинксао и сотня фриков типа напильника - чему они научат нейронную есть?

Я ничего не подразумеваю. Просто пытаюсь понять, как ты собираешь тренькать сетку. Мне почему-то казалось, что совсем без критериев это делать принципально невозможно.

Разве что если ты хочешь на своем специализированном форуме сетку обучить, а потом пойти наружу на другой сайт, и колдовать с внешними данными но по своей тематике.

Vit ★★★★★
()
Ответ на: комментарий от Vit

если во время тренировки скормишь плохие образцы под видом нормальных

ээ зачем я их смотрю? не смотрю я их

Deleted
()
Ответ на: комментарий от Deleted

ну я исхожу из того что можно натренировать на обычное (в теории это просто скормить все что есть)

Это вроде твои слова. По крайней мере я их понял именно так.

Vit ★★★★★
()
Ответ на: комментарий от Vit

подразумевается что «плохого» нет, т.к. очевидно что если там каша - то ничего не получится

Deleted
()
Ответ на: комментарий от Deleted

Ну я тут тз приводить не буду, потому и в детали не углубляюсь.

ну от языка резко зависит есть ли готовый Embedding, или ты попадаешь на самостоятельное окучивание источника размером с википедию

psv1967 ★★★★★
()
Ответ на: комментарий от bender

короче, я бы попробовал так:

- собрал благостных текстов
- с ними в группе посчитал TF-IDF для экстремистских
- топ слов с максимальными TF-IDF назначил тегами
- конвертировал полученные теги в числовые свойства dummy-кодированием
- обучил на них сетку
- для тестовых и боевых текстов перед скармливанием сетке проводил бы такую же процедуру
- чем такая процедура может отличаться от простого отлова ключевых слов, не знаю

// теоретик

bender ★★★★★
()
Ответ на: комментарий от Deleted

в том и нюанс что народ хочет «neural networks» видеть в описании продукта 8)

Посмотрел тред немного: Можно, конечно, скатиться в unsupervised learning, как советовали выше по треду. Путь тёмный. Дороже, но лучше - оплатить разметку с помощью работников третьего мира. С бинарной классификацией проще.

Solace ★★
()
Последнее исправление: Solace (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.