Мне понадобилось написать алгоритм рекомендаций.
Решил вытаскивать из статьи ключевые слова и давать им вес.
Типа существительное весит больше глагола, а глагол больше прилагательного, ну и всякие там нюансы, например если в статье несколько одинаковых слов, то их вес растёт с некоторым коэффициентом относительно веса слова. Не суть.
Короче у статей есть ключевые слова. И вроде бы всё хорошо, но скучно.
Захотел я что бы система рекомендаций умела ассоциировать статьи с другими статьями, у которых может и не быть одинаковых ключевых слов.
К примеру есть новость (№1) в которой говориться про Порошенко. О том как он пьёт вкусный чай.
То есть ключевые слова "Порошенко,чай,пить,вкусный" =)
Есть новость (№2) в которой говориться что "Порошенко,Украина,президент"
Эти новости связаны ключевым словом "Порошенко". Вылезают друг у друга в рекомендациях.
А теперь представим что есть новость (№3) с ключевыми словами "Украина,санкции"
Система должна суметь ассоциировать "Порошенко" и "санкции" или "Порошенко" и "Украина".
То есть к новости "Порошенко,чай,пить,вкусный", одна из рекомендаций будет "Украина,санкции".
Как я это решил сделать. Пока что есть только ключевые слова, никакие ассоциации система еще не знает. Нужно обучить систему.
Процесс обучения такой: пользователь видит рекомендации, выбирает одну из них, на сервер отсылается информация, что пользователь читая такую новость, выбрал такую то рекомендацию.
В базу пишется ключевое слово из читаемой новости "Порошенко" и к этому слову пишутся ключевые слова из выбранной новости "санкции,Украина".
Чем больше людей выбирает связку "Порошенко" - "Украина", тем больше вес у этой ассоциации.
Потом, после нескольких месяцев обучения системы, можно будет к ключевым словам добавлять ассоциации с самым большим весом (с сильной связью).
То есть если сейчас для новости с ключевыми словами "Порошенко,чай" ищётся новости с "чаем" или "Порошенко", то теперь будут искаться новости со словами "Порошенко, чай, Украина, каркаде" =)
При этом система будет сама себя постоянно регулировать с помощью пользовательского выбора, влияя на вес ассоциаций.
Ещё хочу добавить "забывчивость". Что бы старые ассоциации не вылезали как давно забытое старое школьное прозвище)
Ну так вот к чему я столько всего дохера, вкратце написал.
Это нейросеть? Ну то есть эта штука обучается, есть всякие входные данные, есть выходные, есть штуки которые увеличивают вес. Всё как в статьях написано.
Или это просто алгоритм, который собирает статистику и делает выборку из базы?
А что тогда такое нейросеть на примере вэба?
Я к примеру не могу понять как передать на нейрон несколько входных сигналов и получить в ответ один выходной.
Потому что мы на сервер шлём 1 сигнал за 1 раз. Это может быть длинный текст. А на выходе можем получить кучу слов, а не одно суммированное.
Кто то разбирался в этой теме? На реальных примерах.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Игорь_Vasinsky
26.10.2016 - 12:20
какая нейронная сеть)) это давно в метках, хештегах к статье реализовано.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
Что? Каких метках, где реализовано?
Какая? Обычная наверное.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Игорь_Vasinsky
26.10.2016 - 13:06
для того чтобы реализовать то что ты хочешь - достаточно добавлять метки к статьям.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
Какие метки? Ключевые слова?
Там есть ключевые слова, которые редакторы сами ставят, но это не интересно и они связывают по очевидным словам "дождь, москва", а то что в статье может речь идти о какой то ситуации под дождём система не узнает. Поэтому к тегам, которые ставят редакторы, надо добавить технические ключевые слова, которые составляет алгоритм.
А ещё есть новости со словом "банан". Какую из них выбрать, если везде одно и тоже слово.
А так система выберет статью где слов "банан" больше =)
Или предпочтёт статью "самолёт упал" статье "белый самолёт", потому что глагол весит больше прилагательного.
То есть к статье "упал белый самолёт" будет рекомендации в таком порядке.
"самолёт упал"
"самолёт белый"
"упал телефон"
"белый телефон"
Что на счёт меток, я так понимаю это как раз ассоциации. Только та же история, нужно ставить их самому, а это скучно, самому их же обнавлять и всё такое.
Вообще писанина ваше, это пример, а тема нейросеть)
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Игорь_Vasinsky
26.10.2016 - 13:44
не понял, а как ты на программном уровне собрался отличать глагол от прилагательного?
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_VasinskyЕсть утилитка
mystem. Ещё и слова к дефолтному виду приводит.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Игорь_Vasinsky
26.10.2016 - 14:55
Цитата |
Есть утилитка mystem. Ещё и слова к дефолтному виду приводит. |
совсем я отстал от жизни...
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
arbuzmaster
26.10.2016 - 21:22
Статья старая, формат команд изменился, но смысл примерно тот же. По сути данной статьи, могу сказать, так, мне было проще вычислить вес пикселя простыми математическими вычислениями и для этого совершенно не нужно разворачивать нейронную сеть. А вот в Face Recognition и Voice Recognition- без неё ни как!
_____________
Мой первый сайтикПосмотри на свой XBMC под другим углом
arbuzmaster
Спасибо почитаю завтра.
А к теме рекомендаций как то можно применить нейросеть?
Просто хочется понять на чём то настоящем, а не на анализе звука.
Врятли конечно тут нужна сеть, считай это как ООП ради ООП =)
Или можно взять тему с программным модерированием комментарий.
Есть форма ввода, есть база, есть обработчик перед добавлением в базу, или допустим комменты добавляются все, но потом как то кроном одобряются и выводятся только одобренные.
В теории сначала админит модератор, сеть учится, анализирует запрещённые комменты, ищет сходства. Я это могу написать, по аналогии с рекомендациями, собирать слова из коментов, часто встречаемым давать больше вес, короче программно составить стоп лист. Но это опять не нейро сеть. Или нет?
Не вижу я где тут нейроны, где синапсы, слои какие то =)
Ладно сначала статью прочитаю)
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
arbuzmaster
Почитал, в статье уже готовое решение конкретной задачи, а вся реализация скрыта в загадочной функции.
Автор говорит про то что нужно создать 18000 нейронов, но на деле я этого не вижу.
Он где то создал класс с 18000 методами?)
Или 18 тысяч классов, функций?
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
arbuzmaster
27.10.2016 - 11:22
Данный код не имеет скрытых функций, там полная реализация. 18000 - колличество пикселей в одном фото, каждый пиксель получает значение от 0 до 1 в зависимости от его цвета. Фото лежат в парках 0 и 1 соответственно ложь и истина. При обучении сети каждое фото раскладывается на пиксели в результате получается массив с помощью которого и обучается сеть.
_____________
Мой первый сайтикПосмотри на свой XBMC под другим углом
arbuzmaster
Да это я всё понимаю, простая статистика по пикселям, при обучении говорили что если первый пиксель белый, значит правда, при вопросе сеть проверяет цвет пикселя, если белый то 1, если нет то 0, и так все пиксели, суммирует результат, получается вероятность, типа 9 из 10 правда.
Но причём тут нейроны, синапсы и слои? Или это авторы статей так тумана напускают?)
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Я могу себе представить нейросеть примерно так.
Есть класс. Входная точка нейросети. По аналогии с глазами человека к примеру. Приёмник данных.
$Глаза = new Глаза($data);
В него передаются данные, можно картинкой с текстом, можно текстом, в зависимости от задачи. Допустим в нашем случае текстом.
Задача этот текст как то разобрать.
Посчитать сколько там чисел, сколько слов, сколько запятых.
В классе есть свои методы, каждый метод отвечает за подсчёт своего типа данных, например считает только числа.
Получается сигнал идёт по всем нейронам (методам), и если нейрон нашел что то для себя важное (нашел число), то он преобразует данные и передаёт дальше (в базу или другой нейрон неважно, просто дальше).
Например есть метод, который считает цифры, а есть метод который ищет слова (четыре, шесть), преобразует их в цифры и отдаёт в метот который эти цифры считает, а количество цифр передаёт дальше (в базу или ...)
Можно добавлять методы которые считают существительные, которые считают матерные слова, методы которые переводят на русский язык итд, получается сеть, где куча связей, всё крутится вертится и получается результат.
Вот это я бы назвал сетью, она конечно не обучается, пока сам новый метод (нейрон) не добавишь, но это сеть из нейронов, которые принимают сигналы, преобразовывают и передают.
Чувствую у меня какой то барьер понимания. Как было с MVC, когда в статьях писали заумными словами, а как оказалось это банальщина который ты и так пользовался и в принципе тема недостойна статьи, но из мухи раздули целую религию.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
arbuzmaster
27.10.2016 - 20:17
Моё мнение - нейросеть нужна больше для корректировки ошибок. Т.е. к примеру нейросеть может определять по предоставленной её картинке, какой это предмет. Если я ей показываю чашку, то она мне говорит - это чашка, но вдруг случился казус и у чашки откололась ручка (но от этого она не стала ложкой, а осталась чашкой). Так вот моя задача обучить сеть так, чтобы она поняла, что отсутствие ручки, не изменяет название предмета. Такую же аналогию можно провести и с синтаксическими ошибками или распознаванием речи. Так, что я даже не знаю, как быть в Вашем случае.
_____________
Мой первый сайтикПосмотри на свой XBMC под другим углом
Быстрый ответ:
Powered by dgreen