3年前に作った「選択範囲を要約する人工無能ブックマークレット(680バイト)」の(680バイト)という部分がずっと気になっていたので 479 バイトまで短くしてみました。


 選択範囲を要約した振りをするブックマークレット(479バイト)
 ↑右クリックなどでブックマークすればブックマークレット化できます。

 下が中身。479 byteです。
javascript:(function(D,t,U,S,N,s,p,q){s=((t?t():document.selection.createRange().text)+U).replace(/(\u3002+|[!-~\uFF01-\uFFE5\u300A-\u3015]\s)\s*/g,'$1'+U).replace(/\s/g,'').split(U);function F(x,y){return y?D[x]?D[x].push(y):D[x]=[y]:D[x][Math.random()*D[x].length|0]};for(p in s)if(t=s[p]){for(F(U,t[S](q=0,N));q<t.length-N;)F(t[S](q,N),t[S](N+q++,1));F(t[S](q),U)}do{t=p=F(U);for(s=300;q=F(p),q!=U&&s--;p=p[S](1)+q)t+=q}while(confirm(t))})({},top.getSelection,'\b','substr',3)

 ニュースサイトやブログの記事をマウスで選択し、このブックマークレットを実行すれば要約した振りをします。
 マルコフ連鎖を使ったいわゆる人工無能というやつです。詳しくは以前のページ(のリンク先)を見てください。
 コードの最後にある数字の 3 はマルコフ連鎖の接頭文字数を意味しています。4 とか 5 にすればもう少し賢くなります。

 動作確認したブラウザはWindowsXP上の Firefox 3.6.12、Opera 10.63、IE8 のみです。たぶん他のブラウザ上でも動きます。フレームを使ったページでは動作しません。

 以前のと比べて気になった人もいるかもしれませんが、全角文字を \u**** という形式にしました。例えば '。' は '\u3002' となってます。
 逆に長くなっていますが、なぜそうしたかと言うと、全角文字を2バイトとカウントするのがなんとなくインチキぽく感じたからというのと、ブックマークレット保存時にURLエンコードされてもサイズがあまり膨らまないからです。

 以下はJavaScriptのコードを短くするのに参考にさせていただいたページです。
 ・JS のコードを短かくする Tips - 冬通りに消え行く制服ガールは、夢物語にリアルを求めない。 - subtech
 ・空から降ってくる女の子(ゲームっぽく) - 0xFF
 ・ブックマークレットを短くする方法 - Born Neet
 ・Math.floor を使わずに小数を整数にする - IT戦記

 マルコフ連鎖ネタとしてはこんなものも作られています。
 ・「あたし状態遷移図」、あるいは「あたし約5.2MB」 - 理系男子の書斎には、どうしても小説が少ない。っていうか無い。 - ファック文芸部