Искусственный интеллект оценивает интерес к статье еще до ее написания

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

SEO и искусственный интеллект

  1. Экспортировал все заголовки с Liberatum за 8 лет. Там их больше 25 тыс.
  2. Высчитал среднее количество просмотров в день для каждого.
  3. Построил частотный словарь слов из всех заголовков.
  4. Отфильтровал мусор (стоп-слова и низкочастотные).
  5. Использовал библиотеку FANN и обертку ruby-fann для создания нейронной сети. Каждое ключевое слово — это отдельный input. 1 — слово присутствует, 0 — отсутствует. На выходе популярность (точнее, ее логарифм, отмасштабированный в [0,1]).
  6. Далее сетка обучалась и тестировалась.
  7. PROFIT!

Теперь можно вводить заголовок будущей статьи и система спрогнозирует ее популярность. Выдается число типа float в диапазоне от 0 до 1, где 0 — статью по этой теме лучше не писать, 1 — пиши давай, тебя ждут лавры Пушкина.

Круто? Нет! Я не хочу перебирать варианты заголовка в поисках удачного. Я хочу, чтобы искусственный разум сам предлагал мне темы дня написания статей (в идеале пускай бы он сам и писал их, но пока это недостижимо по техническим причинам). Интуиция подсказывает, что можно подавать случайным образом слова и простым перебором отыскивать комбинации с высоким выходом. Но тут есть две проблемы: 1) заголовок не будет связанным (скорее это ключевые слова, которые рекомендуется включить в заголовок); 2) пространство вариантов достаточно большое. Если размер словаря n, а заголовок состоит всего из трех слов, то вариантов для перебора будет n*(n-1)*(n-2). При скромном размере словаря в 1000 слов, вариантов будет чуть меньше миллиарда. Работать с такими объемами невозможно. И тут пора вспомнить о марковских цепях. Дело в том, что слово не может быть вставлено в контекст случайным образом. Мы всегда можем вычислить вероятность появления одного слова по его соседу или цепочке соседей. И можем заранее сказать, какие слова никогда не соседствуют друг с другом, поэтому и нет необходимости эту комбинацию проверять через нейронную сеть. Говоря проще, человек оперирует не словами, а устойчивыми словосочетаниями. Вот их-то и нужно помещать в словарь вместо отдельных слов и подавать на вход сети. Количество вариантов для перебора сильно сокращается за счет сокращения словаря.

Готовлюсь реализовать эту идею и обязательно поделюсь результатами. Web-приложение для желающих поиграться тоже, скорее всего, будет.

О том, как я решал похожую задачу, но без нейронных сетей: «R для продвижения сайта на Drupal».