Использование цепей Маркова (или что-то подобное) для создания IRC-бота

Я попробовал google и нашел мало, что я мог понять.

Я понимаю цепи Маркова на очень базовый уровень: это математическая модель, которая зависит только от предыдущего ввода для изменения состояний..так что вроде FSM с взвешенными случайными шансами вместо разных критериев?

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

Я не могу думать из поисковых терминов, чтобы найти это, так может ли кто-нибудь связать меня или объяснить, как я мог бы произвести что-то, что дает полуинтеллектуальный ответ? (если вы спросите его о пироге, он не начнет говорить о войне во Вьетнаме, о которой он слышал)

Я:

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

3 ответов


да, цепь Маркова-это конечностная машина с вероятностными переходами состояний. Для генерации случайного текста с простой цепочкой Маркова первого порядка:

  1. соберите статистику bigram (смежная пара слов) из корпуса (коллекция текста).
  2. сделайте цепочку Маркова с одним состоянием на слово. Зарезервировать специальное состояние для конца текста.
  3. вероятность прыжка из состояния / слова x to y вероятность слова!--8-->y сразу после x, оценено от относительных частот bigram в корпусе тренировки.
  4. начните со случайного слова x (возможно, определяется тем, как часто это слово встречается в качестве первого слова предложения в корпусе). Затем выберите состояние / слово y перейти к случайным образом, с учетом вероятности y после x (вероятность перехода состояния). Повторяйте, пока не нажмете конец текста.

Если вы хотите получить что-то полуинтеллектуальное из этого, то ваш лучший выстрел-тренировать его на множестве тщательно собранных текстов. Часть " лоты "заставляет его производить правильные предложения (или правдоподобные IRC говорят) с высокой вероятностью;" тщательно собранная " часть означает, что вы контролируете, о чем она говорит. Внедрение сетей Маркова более высокого порядка также помогает в обеих областях, но требует большего объема памяти для хранения необходимой статистики. Вы также можете посмотреть на такие вещи, как статистическое сглаживание.

однако, если ваш IRC-бот действительно реагирует на то, что ему говорят, требуется много больше, чем цепи Маркова. Это можно сделать, сделав рубрикации текста (он же тема пятнистость) на то, что сказано, а затем выбрать доменную цепочку Маркова для генерации текста. Naïve Bayes-популярная модель для выявления тем.

Керниган и Пайк в практика программирования исследовать различные стратегии реализации цепных алгоритмов Маркова. Эти, да и вообще естественное языковое поколение, очень глубоко освещены Юрафским и Мартином, обработка речи и языка.


вы хотите искать генерацию текста Ian Barber (phpir.com ). К сожалению, сайт не работает или находится в автономном режиме. У меня есть копия его сообщения, и я хочу отправить его вам.


Мне кажется, вы пытаетесь несколько вещей одновременно:

  1. извлечение слов/предложений на холостом ходу в IRC
  2. создание базы знаний
  3. прослушивание некоторых чатов, разбор ключевых слов
  4. создать некоторое предложение относительно ключевых слов

Это в основном очень разные задачи. Марковские модели часто используются для машинного обучения. Но я не вижу особого смысла в твоих заданиях.

larsmans ответ показывает, как вы генерируете предложения из word-based markov-моделей. Вы также можете тренировать веса в пользу тех пар слов, которые использовали другие пользователи IRC. Но, тем не менее, это не будет генерировать предложения, связанные с ключевыми словами, потому что построение/уточнение модели Маркова не то же самое, что "вождение".

вы можете попробовать скрытые модели Маркова (хмм), где видимым выходом являются ключевые слова, а скрытые состояния сделаны из этих пар слов. Затем вы можете выбрать предложения, более подходящие для конкретные ключевые слова динамически.