「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()); }