Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
JSでのマルコフ連鎖をVB2008EEで書きたいのですが・・・
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9183#CommentId11906
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
マイマイ
 ()
投稿日時
2009/6/19 20:38:09
以下のJSで書かれたソースをVBに書き換えたいのですが、
主に配列dicの扱いに戸惑っています。
dicの宣言は次のように宣言しています。
Dim dic As Dictionary(Of String,String)
dic[token[0]]をdic(token(0))に書き換えています。
実行すると
「String "メロス" から型 'Boolean' への変換は無効です。」
とエラーが出ました。
Dim dic As Dictionary(Of Boolean,String)
と書き換えると今度は
「String "_START_" から型 'Boolean' への変換は無効です。」
とエラーが出ました。
このソースにおけるdicの扱いに困っています。
どのように書けば良いのでしょうか。
<script type="text/javascript">
function $(id){return document.getElementById(id)}
var MAX = 300;
function generator() {
// 辞書
var dic = {};
var str = $('text').value;
if (str) {
var s = str.split("。");
for (var i = 0; i < s.length; i++) {
if (s[i]) morph(s[i] + "。", dic);
}
var resArea = $("result");
if (resArea.firstChild) {resArea.removeChild(resArea.firstChild)};
resArea.appendChild(document.createTextNode(morkov(dic)));
} else {
return false;
}
}
/* 簡易形態素解析の正規表現 */
var re = new RegExp;
re.compile("[一-龠]+|[ぁ-ん]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+|[、。!!??]+", 'g');
function morph(text, dic) {
var token = text.match(re);
token.unshift('_START_');
token.push('_END_');
while (token[1]) {
if (dic[token[0]]) {
dic[token[0]].push(token[1]);
} else {
dic[token[0]] = [token[1]];
}
token.shift();
}
}
function morkov(dic) {
var w1 = dic['_START_'][Math.floor(Math.random() * dic['_START_'].length)];
var w2 = '';
var sentence = w1;
for (var i = 0; i <= MAX; i++) {
w2 = dic[w1][Math.floor(Math.random() * dic[w1].length)];
if (w2 == '_END_') {break}
sentence += w2;
var w3 = w1;
w1 = w2;
w2 = w3;
}
return sentence;
}
</script>
<form action="" onSubmit="generator();return false;">
<textarea rows="12" cols="50" id="text">メロスは激怒した。必ず、かの邪智暴虐(じゃちぼうぎゃく)の王を除かなければならぬと決意した。メロスには政治がわからぬ。メロスは、村の牧人である。笛を吹き、羊と遊んで暮して来た。けれども邪悪に対しては、人一倍に敏感であった。きょう未明メロスは村を出発し、野を越え山越え、十里はなれた此(こ)のシラクスの市にやって来た。</textarea><br />
<input type="submit" value="文章生成" />
<input type="button" value="クリア" onClick="$('text').value=''" />
</form>
<div id="result">
ここに文章が作成されます。
</div></div>