Искусственный интеллект оценивает интерес к статье еще до ее написания
Провел небольшой эксперимент и получил хорошие результаты. Суть эксперимента проста.
- Экспортировал все заголовки с Liberatum за 8 лет. Там их больше 25 тыс.
- Высчитал среднее количество просмотров в день для каждого.
- Построил частотный словарь слов из всех заголовков.
- Отфильтровал мусор (стоп-слова и низкочастотные).
- Использовал библиотеку FANN и обертку ruby-fann для создания нейронной сети. Каждое ключевое слово — это отдельный input. 1 — слово присутствует, 0 — отсутствует. На выходе популярность (точнее, ее логарифм, отмасштабированный в [0,1]).
- Далее сетка обучалась и тестировалась.
- PROFIT!
Теперь можно вводить заголовок будущей статьи и система спрогнозирует ее популярность. Выдается число типа float в диапазоне от 0 до 1, где 0 — статью по этой теме лучше не писать, 1 — пиши давай, тебя ждут лавры Пушкина.
Круто? Нет! Я не хочу перебирать варианты заголовка в поисках удачного. Я хочу, чтобы искусственный разум сам предлагал мне темы дня написания статей (в идеале пускай бы он сам и писал их, но пока это недостижимо по техническим причинам). Интуиция подсказывает, что можно подавать случайным образом слова и простым перебором отыскивать комбинации с высоким выходом. Но тут есть две проблемы: 1) заголовок не будет связанным (скорее это ключевые слова, которые рекомендуется включить в заголовок); 2) пространство вариантов достаточно большое. Если размер словаря n, а заголовок состоит всего из трех слов, то вариантов для перебора будет n*(n-1)*(n-2). При скромном размере словаря в 1000 слов, вариантов будет чуть меньше миллиарда. Работать с такими объемами невозможно. И тут пора вспомнить о марковских цепях. Дело в том, что слово не может быть вставлено в контекст случайным образом. Мы всегда можем вычислить вероятность появления одного слова по его соседу или цепочке соседей. И можем заранее сказать, какие слова никогда не соседствуют друг с другом, поэтому и нет необходимости эту комбинацию проверять через нейронную сеть. Говоря проще, человек оперирует не словами, а устойчивыми словосочетаниями. Вот их-то и нужно помещать в словарь вместо отдельных слов и подавать на вход сети. Количество вариантов для перебора сильно сокращается за счет сокращения словаря.
Готовлюсь реализовать эту идею и обязательно поделюсь результатами. Web-приложение для желающих поиграться тоже, скорее всего, будет.
О том, как я решал похожую задачу, но без нейронных сетей: «R для продвижения сайта на Drupal».
Комментарии
jtad
23 июня, 2016 - 19:48
а под питоном есть что то похожее, не в курсе?
pomodor
23 июня, 2016 - 19:58
Этого добра полно под любой язык. Под Python куча оберток. Есть даже родная на сайте FANN.
jtad
23 июня, 2016 - 20:15
там даже примеры есть. Слышу о нем первый раз, надо почитать что это вообще такое и куда его применить :). В любом случае интересно глянуть на результат твоего эксперимента
pomodor
23 июня, 2016 - 20:12
Эх, парсер атаковал своего же хозяина. Хотел написать вместо пайтона и пасер выпилил камент. :)
Спасибо jQuery за возможность оставаться матерщинником. ;)
Чингачгук
24 июня, 2016 - 22:57
Приветсвую ! Очень нравится Ваш ресурс.Только недавно начал использовать свободное по и ОС то есть — полный нуб ) Будте добры пояснить -откуда столько ненависти к питону ? Если разложите по полочкам — буду очень благодарен) а обоснование преимуществ руби перед питоном — вообще вызовет восторг. Подскажите нубу с какого языка начинать ...
pomodor
25 июня, 2016 - 01:40
Столько — это сколько? Что-то я не замечал за собой никаких эмоций по отношению к этому языку, которым не пользуюсь.
Нету таких. PHP, Python и Ruby — одного поля ягоды. Если выбирать между ними, то никакой разницы нет. Есть высшая лига: C++, Java, C#. Преимущества любого из них перед Ruby могу описать весьма детально.
Смотря какие цели. Программировать для себя и в свое удовольствие — Ruby или Python. Что больше понравится. В перспективе зарабатывать? Тогда лучше начинать сразу с тяжелых языков, но приучающих мыслить и писать правильно. Java хорошо подойдет. Осилите сначала Джаву, ООП и паттерны — будете неплохим программистом на любом языке.
Спасибо! Приятно это слышать! :)
sharper1
25 июня, 2016 - 01:15
если ии получит над человеком власть то человек станет просто букашкой в мире!
pomodor
25 июня, 2016 - 01:22
Почему "если"? Рано или поздно ИИ превзойдет человека. Почти все профессии окажутся ненужными. А без труда начнется процесс обратного превращения в обезьяну. С ИИ нужно быть аккуратным.
Комментировать