マルコフ連鎖のサンプル - Web AI

Web AI」は、クロノス・クラウンの柳井政和が開発しているJavaScirptのライブラリです。

「Web AI」には、日本語の文章をマルコフ連鎖でシャッフルする機能があります。特に有用な機能ではないですが、ランダムで文章を作る際に便利です。

それでは以下、マルコフ連鎖のサンプルを掲載します。


まずは、実例です。




実行結果(開始文字列の指定なし):

実行結果(開始文字列に「書生」を指定):

内部ツリー構造:



以下、ソースコードです。

	// Googleからスクリプトをロード
	google.load("jquery", "1.4.3");

	// Web AI
	var $WA  = crocro.webAi;		// 短縮表記
	var cJpMrkv  = new $WA.JpMrkv();	// マルコフ連鎖
	var cJpSntnc = new $WA.JpSntnc();	// センテンス

	/**
	 *	【初期化処理】
	 */
	google.setOnLoadCallback(function () {
		prettyPrint();		// ソースの装飾(*説明装飾用)
	});

	/**
	 *	@title	【テスト】
	 *	@description
	 *
	 *		テストを行う。
	 */
	function test() {
		// 文章の設定
		var srcStr = $("#srcStr").val().replace(/\n/g, "");
		var sArr = srcStr.split("。");
		cJpMrkv.setSntncArr(sArr);

		// 文章の取得
		var mrkvSArr1 = [];
		var mrkvSArr2 = [];
		var str;
		for (var i = 0; i < 100; i ++) {
			// 開始文字列の指定なし
			str = cJpMrkv.getSntnc();
			if (str != ""		// 空なら登録しない
			 && $.inArray(str, sArr) == -1){	// 元の文章にあれば登録しない
				mrkvSArr1.push(str);
			}

			// 開始文字列に「書生」を指定
			str = cJpMrkv.getSntnc({strtStr: "書生"});
			if (str != ""		// 空なら登録しない
			 && $.inArray(str, sArr) == -1){	// 元の文章にあれば登録しない
				mrkvSArr2.push(str);
			}
		}
		mrkvSArr1 = $WA.Tools.unq(mrkvSArr1);	// ユニークに
		mrkvSArr2 = $WA.Tools.unq(mrkvSArr2);	// ユニークに

		// 全て出力
		var outArr1 = cJpSntnc.sortLong(mrkvSArr1).reverse();	// 短い順に
		for (var i = 0; i < outArr1.length; i ++) {
			$("#resLst1").append("<div>" + i + ". " + outArr1[i] + "。</div>");
		}

		var outArr2 = cJpSntnc.sortLong(mrkvSArr2).reverse();	// 短い順に
		for (var i = 0; i < outArr2.length; i ++) {
			$("#resLst2").append("<div>" + i + ". " + outArr2[i] + "。</div>");
		}

		// ツリーの出力
		$("#resTree").html(cJpMrkv.getDumpDic());
	}

Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2024 Cronus Crown (c)1997-2024 Masakazu Yanai
ご意見・お問い合わせはサイト情報 弊社への連絡までお願いします
個人情報の取り扱い、利用者情報の外部送信について