Использование цепей Маркова (или что-то подобное) для создания IRC-бота
Я попробовал google и нашел мало, что я мог понять.
Я понимаю цепи Маркова на очень базовый уровень: это математическая модель, которая зависит только от предыдущего ввода для изменения состояний..так что вроде FSM с взвешенными случайными шансами вместо разных критериев?
Я слышал, что вы можете использовать их для создания полуразумной ерунды, учитывая предложения существующих слов, чтобы использовать их в качестве словаря видов.
Я не могу думать из поисковых терминов, чтобы найти это, так может ли кто-нибудь связать меня или объяснить, как я мог бы произвести что-то, что дает полуинтеллектуальный ответ? (если вы спросите его о пироге, он не начнет говорить о войне во Вьетнаме, о которой он слышал)
Я:
- имея этот бот простаивает в IRC-каналах немного
- удалите любые имена пользователей из строки и сохраните как предложения или что-то
- со временем, использовать это в качестве основы для выше.
3 ответов
да, цепь Маркова-это конечностная машина с вероятностными переходами состояний. Для генерации случайного текста с простой цепочкой Маркова первого порядка:
- соберите статистику bigram (смежная пара слов) из корпуса (коллекция текста).
- сделайте цепочку Маркова с одним состоянием на слово. Зарезервировать специальное состояние для конца текста.
- вероятность прыжка из состояния / слова x to y вероятность слова!--8-->y сразу после x, оценено от относительных частот bigram в корпусе тренировки.
- начните со случайного слова x (возможно, определяется тем, как часто это слово встречается в качестве первого слова предложения в корпусе). Затем выберите состояние / слово y перейти к случайным образом, с учетом вероятности y после x (вероятность перехода состояния). Повторяйте, пока не нажмете конец текста.
Если вы хотите получить что-то полуинтеллектуальное из этого, то ваш лучший выстрел-тренировать его на множестве тщательно собранных текстов. Часть " лоты "заставляет его производить правильные предложения (или правдоподобные IRC говорят) с высокой вероятностью;" тщательно собранная " часть означает, что вы контролируете, о чем она говорит. Внедрение сетей Маркова более высокого порядка также помогает в обеих областях, но требует большего объема памяти для хранения необходимой статистики. Вы также можете посмотреть на такие вещи, как статистическое сглаживание.
однако, если ваш IRC-бот действительно реагирует на то, что ему говорят, требуется много больше, чем цепи Маркова. Это можно сделать, сделав рубрикации текста (он же тема пятнистость) на то, что сказано, а затем выбрать доменную цепочку Маркова для генерации текста. Naïve Bayes-популярная модель для выявления тем.
Керниган и Пайк в практика программирования исследовать различные стратегии реализации цепных алгоритмов Маркова. Эти, да и вообще естественное языковое поколение, очень глубоко освещены Юрафским и Мартином, обработка речи и языка.
вы хотите искать генерацию текста Ian Barber (phpir.com ). К сожалению, сайт не работает или находится в автономном режиме. У меня есть копия его сообщения, и я хочу отправить его вам.
Мне кажется, вы пытаетесь несколько вещей одновременно:
- извлечение слов/предложений на холостом ходу в IRC
- создание базы знаний
- прослушивание некоторых чатов, разбор ключевых слов
- создать некоторое предложение относительно ключевых слов
Это в основном очень разные задачи. Марковские модели часто используются для машинного обучения. Но я не вижу особого смысла в твоих заданиях.
larsmans ответ показывает, как вы генерируете предложения из word-based markov-моделей. Вы также можете тренировать веса в пользу тех пар слов, которые использовали другие пользователи IRC. Но, тем не менее, это не будет генерировать предложения, связанные с ключевыми словами, потому что построение/уточнение модели Маркова не то же самое, что "вождение".
вы можете попробовать скрытые модели Маркова (хмм), где видимым выходом являются ключевые слова, а скрытые состояния сделаны из этих пар слов. Затем вы можете выбрать предложения, более подходящие для конкретные ключевые слова динамически.