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