Использование цепей Маркова (или чего-то подобного) для создания IRC-бота - PullRequest
20 голосов
/ 31 марта 2011

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

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

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

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

Я планирую:

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

Ответы [ 3 ]

32 голосов
/ 31 марта 2011

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

  1. Собрать статистику биграмма (смежная пара слов) из корпуса (сборник текста).
  2. Создайте цепочку марков с одним состоянием на слово. Зарезервируйте специальное состояние для конца текста.
  3. Вероятность перехода из состояния / слова x в y - это вероятность слова y , следующего сразу за x , по оценкам от относительных частот биграмм в тренировочном корпусе.
  4. Начните со случайного слова x (возможно, определяемого тем, как часто это слово встречается в качестве первого слова предложения в корпусе). Затем выберите состояние / слово y для случайного перехода, принимая во внимание вероятность y , следующую за x (вероятность перехода состояния). Повторяйте, пока не дойдете до конца текста.

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

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

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

0 голосов
/ 31 марта 2011

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

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

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

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

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

0 голосов
/ 31 марта 2011

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

...