A Markov chainは、ある確率で他の状態に遷移することができる一連の状態で構成されています。Neo4Jでマルコフ連鎖をシミュレートする
各状態のノードを作成し、各遷移の関係を作成し、遷移関係に適切な確率で注釈を付けることで、マルコフチェーンをNeo4Jで簡単に表現できます。
あなたはをシミュレートできますか? Neo4Jを使用してマルコフチェーンをシミュレートしますか?たとえば、ある状態でNeo4Jを強制的に開始し、確率に基づいて次の状態および次の状態に遷移させることはできますか? Neo4Jは、この状態空間を通過した経路をプリントアウトすることができますか?
おそらく、これは簡単な例で分かりやすいでしょう。 my company's tech blogのテキストに基づいて2グラムの英語モデルを作成したいとしましょう。私は次のスクリプトをスピンアップします:
- ブログのテキストをプルダウンします。
- これは隣接するすべての文字のペアを繰り返し、Neo4Jにノードを作成します。
- これは、隣接する文字の3タプルごとに再度繰り返し、最初の2文字で表されるノードと最後の2文字で表されるノードとの間にNeo4Jの指向関係を作成します。この関係のカウンタを1に初期化します。関係がすでに存在する場合は、カウンタがインクリメントされます。
- 最後に、各ノードを反復し、発生したアウトバウンドトランジションの数をカウントし、特定のノードの各リレーションシップに新しい注釈を作成します(
count/totalcount
)。これが遷移確率です。
これでNeo4Jグラフが完成しました.2グラムの英語モデルから「文章」を作成するにはどうすればよいですか?出力は次のようになります。
レパタジンの造影剤の繁殖した雌ブタがウサギの頭上にあります。
エクストラクレジット:
はあなたが求めているコードは次のようになります。有名な紙。 – JnBrymn
これを5グラムの英語モデルに拡張すると、私のTwitterの投稿と区別がつかない文が得られると言われています。 – JnBrymn