A Markov chain è composto da un insieme di stati che possono passare ad altri stati con una certa probabilità.Simulazione di una catena Markov con Neo4J
Una catena di Markov può essere facilmente rappresentata in Neo4J creando un nodo per ogni stato, una relazione per ogni transizione e quindi annotando le relazioni di transizione con la probabilità appropriata.
MA, puoi simulare la catena di Markov utilizzando Neo4J? Ad esempio, Neo4J può essere costretto a iniziare in un determinato stato e quindi a passare allo stato successivo e allo stato successivo in base alle probabilità? Neo4J può tornare con una stampa del percorso che ha attraversato questo spazio di stato?
Forse questo è più facile da capire con un semplice esempio. Diciamo che voglio fare un modello di inglese di 2 grammi basato sul testo di my company's tech blog. Creo uno script che effettua quanto segue:
- Abbassa il testo del blog.
- It ita su ogni coppia di lettere adiacenti e crea un nodo in Neo4J.
- Ripete di nuovo ogni tupla in 3 lettere adiacenti e quindi crea una relazione diretta Neo4J tra il nodo rappresentato dalle prime due lettere e il nodo rappresentato dalle ultime due lettere. Inizializza un contatore su questa relazione su 1. Se la relazione esiste già, il contatore viene incrementato.
- Infine, itera su ciascun nodo, conta quante transizioni totali in uscita si sono verificate e quindi crea una nuova annotazione su ciascuna relazione di un nodo particolare uguale a
count/totalcount
. Questa è la probabilità di transizione.
Ora che il grafico Neo4J è completo, come faccio a creare una "frase" dal mio modello di inglese da 2 grammi? Ecco come potrebbe apparire l'output:
IN NO IST LAT WHEY CRATICT FROURE BIRS GROCID PONDENOME DI DEMONSTURES DEL REPTAGIN È REGOACTIONA DI CRE.
credito extra se sai che ci mio "frase di esempio" è venuto da. Carta famosa – JnBrymn
Mi viene detto che se espandiamo questo modello in inglese a 5 grammi, otteniamo frasi che non sono distinguibili dai miei post su Twitter. – JnBrymn