雪で研究所に行けず, 時間があったので(?), 前から気になっていた, 増井さんの
Nitamogy
のJavascript化をやってみました。
ブラウザのアドレスバーに javascript:〜 で始まる1行を入れて使うブックマーク
レットは非常に面白く, たとえば次の行をアドレスバーに入れてリターンキーを押すと,
ひらがなを全部消すことができます。
(似非中国語化)
javascript:document.body.innerHTML=document.body.innerHTML.replace(/[\u3040-\u309f]+/g,'').replace(/[\u30a0-\u30ff]+/g,'');focus();
この方法で, 現在見ているWebページを動的に変更できるのは自然言語処理的にはとても
興味深いのですが, ただし, ブックマークレットでは最大長にも制限があり, 簡単な
処理しか書けないという欠点があります。
nitamogyはもう少し複雑なので, 何とかならないかと思っていたところ, 少し調べると,
次のように書くと, ブックマークレットから外部のjavascriptのソースを読んで実行することができることを知りました。
(ソース)
javascript:(function(){var%20url='http://xxxx/yy.js';var%20d=document;var%20e=d.createElement('script');e.src=url;d.getElementsByTagName('head')[0].appendChild(e);})();
http://xxxx/yy.js のところに, 任意のJavascriptを置いて使います。
これは, <script src="..">をhead要素にオンラインで挿入したことに相当しています。
こうすれば, 後は document.innerHTML を変更するJavascriptのソースを書けば,
Webページを動的に変更する複雑なjavascriptを実現できます。
人工知能学会の査読でもらった5千円の図書券を有効活用して「Javascript 第6版」を
買ったので, 後は書くだけです。
というわけで, NitamogyをJavascript化してみました。
下のURLを今見ているWebページのアドレスバーに入力してリターンキーを押すと,
テキストが微妙に変わります。
javascript:(function(){var%20url='http://chasen.org/~daiti-m/etc/nitamogy.js';var%20d=document;var%20e=d.createElement('script');e.src=url;d.getElementsByTagName('head')[0].appendChild(e);})();
Javascriptで表面を変えているので, 文字コードの問題もなく, FacebookやGmailなどの
Javascriptで動的に生成されたページにも使えるのが特徴です。
このページで今すぐ試したい方は
こちら
。
これで複雑な処理も現在のWebページに適用できるようになったので,
*1
自然言語処理的には非常に可能性があるのではないかと感じています。
たとえば, 言葉をトピックで色分けしたり, javascriptでオンラインで形態素解析した
りすることができそうです。生成もできるので, カーソルで説明や要約, 翻訳を出せる
ようになるなどすると, 愉快だなと思います。
*1: nitamogy.jsはそれほど複雑なことをしている訳ではありません。