A Markov chain состоит из множества состояний, которые могут с определенной вероятностью перейти в другие состояния.Моделирование цепи Маркова с Neo4J
Цепочка Маркова может быть легко представлена в Neo4J путем создания узла для каждого состояния, отношения для каждого перехода, а затем аннотации отношений перехода с соответствующей вероятностью.
НО, вы можете имитировать цепь Маркова с использованием Neo4J? Например, можно ли заставить Neo4J начать в определенном состоянии, а затем переходить в следующее состояние и следующее состояние на основе вероятностей? Может ли Neo4J вернуться с распечаткой пути, который прошел через это состояние?
Возможно, это проще понять на простом примере. Предположим, я хочу сделать 2-граммовую модель английского языка на основе текста my company's tech blog. Я прокручиваю сценарий, который выполняет следующие действия:
- Он снимает текст блога.
- Он выполняет итерацию по каждой паре смежных букв и создает узел в Neo4J.
- Итерирует снова через каждые 3 кортежа смежных букв, а затем создает направленную связь Neo4J между узлом, представленным первыми двумя буквами, и узлом, представленным двумя последними буквами. Он инициализирует счетчик для этого отношения равным 1. Если отношение уже существует, счетчик увеличивается.
- И, наконец, он выполняет итерацию через каждый узел, подсчитывает, сколько общих исходящих переходов произошло, а затем создает новую аннотацию для каждой связи конкретного узла, равную
count/totalcount
. Это вероятность перехода.
Теперь, когда график Neo4J завершен, как мне заставить его создать «предложение» из моей 2-граммовой модели английского языка? Вот как выглядит результат:
В НЕТ IST LAT WHEY CRATICT FROURE BIRS GROCID PONDENOME DEMONSTURES OF REPTAGIN - РЕГЛАМЕНТИРОВАНИЕ CRE.
дополнительный кредит, если вы знаете, что мой «образец фраза» пришел. Известная бумага. – JnBrymn
Мне сказали, что если мы расширим это до 5-граммовой модели английского языка, тогда мы получим предложения, которые неотличимы от моих сообщений в Twitter. – JnBrymn