MediaLab Love Chapter 2

Assistance of MediaLab Love about Javascript test and more...

はてなダイアリーで良い文章を書くためのユーザスクリプト

良い文章の条件とはどのようなものでしょうか。いろいろ調べていくうちに、文章内の漢字の比率に着目している方がいらっしゃいました。

 漢字が多いと、その文章は、硬い印象を与えます。反対に、ひらがなが多いと幼稚に見えます。

 文章の中で、漢字の割合が5割を超えると硬い印象になり、3割以下だと幼稚に見えます。漢字が4割前後の文章が、読みやすいと言われています。文章を作ったら、漢字とひらがなの割合を、数えてみてください。漢字の割合が5割近くあったら要注意です。ひらがなで書いても問題がないところは、ひらがなにして調整します。文書の最後で調整する方法もあります。例えば、
 「〜お願い致します」 ⇒ 「〜お願いいたします」
というようにします。

http://www.stwds.com/active/lesson/document_creation/index.html

そこで、少しテストをしてみました。

1.漢字の比率が50%の場合
 明日の天気は晴れ。明後日の天気は生憎の曇りになります。この1週間の天気は、概ね良好です。
2.漢字の比率が39%の場合
 明日の天気は晴れ。明後日の天気はあいにくの曇りになります。この1週間の天気は、おおむね良好です。
3.漢字の比率が28%の場合
 明日の天気は晴れ。あさっての天気はあいにくのくもりになります。この1週間の天気は、おおむね良好です。

いかがでしょうか。漢字の比率が増えるほど、読みにくく固めの文章になるのではないでしょうか。比率が低すぎても、文字数が増えて読みにくくなり、幼稚な印象にならないでしょうか。

そこで、漢字の比率を確認するために、ユーザスクリプトとブックマークレットを作成しました。
漢字比率が50%以上を固めの文章、30%以下を柔らかめの文章*1。それ以外を理想的な漢字比率としております。また、カタカナがひらがなより多い場合は専門用語が多すぎるという警告があります。

ユーザスクリプト

http://userscripts.org/scripts/show/122883

Firefox(Greasemonkey), Chrome, Operaで動作確認済みです。記事入力画面の左上に評価が出ます。

ブックマークレット

javascript:(function(){traceFrames(window);function%20traceFrames(w){getSelectedText(w);var%20flen=w.frames.length;for(var%20i=0;i<flen;i++){traceFrames(w[i]);}}function%20getSelectedText(w){var%20t;try{t=w.getSelection().toString();}catch(e){return;}if(t){openWindow(t);}else{var%20tias=getTextInputAreas(w);for(var%20i=0;i<tias.length;i++){var%20tia=tias[i];var%20s=tia.selectionStart;var%20e=tia.selectionEnd;if(s!=e){openWindow(tia.value.substr(s,e-s));}}}}function%20openWindow(q){var%20keyword='';var%20hirc=0;var%20katc=0;var%20suuc=0;var%20kanc=0;keyword%20=%20q;allletter=q.length;for(i=0;i<keyword.length;i++){p=keyword.charAt(i);if(p.match(/^[%E3%81%81-%E3%82%93]$/)){hirc++;}else%20if(p.match(/^[%E3%82%A1-%E3%83%B3%EF%BD%A7-%EF%BE%9D%EF%BE%9E%EF%BE%9F]$/)){katc++;}else%20if(p.match(/^[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]|[\uD840-\uD87F][\uDC00-\uDFFF]/)){kanc++;}else%20if(p.match(/^[\uff10-\uff19\d]$/)){suuc++;}else{allletter--;}}if(kanc/allletter%20>=%200.5){message='%E6%BC%A2%E5%AD%97%E3%81%AE%E6%AF%94%E7%8E%87%E3%81%8C50%%E4%BB%A5%E4%B8%8A%E3%81%A7%E3%81%99%E3%80%82%E7%A1%AC%E3%82%81%E3%81%AE%E6%96%87%E7%AB%A0%E3%81%A0%E3%81%A8%E6%80%9D%E3%82%8F%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82';}else%20if(kanc/allletter%20<=%200.3){message='%E6%BC%A2%E5%AD%97%E3%81%AE%E6%AF%94%E7%8E%87%E3%81%8C30%%E4%BB%A5%E4%B8%8B%E3%81%A7%E3%81%99%E3%80%82%E6%9F%94%E3%82%89%E3%81%8B%E3%82%81%E3%81%AE%E6%96%87%E7%AB%A0%E3%81%A7%E3%81%99%E3%80%82';}else{message='%E6%BC%A2%E5%AD%97%E3%81%AE%E6%AF%94%E7%8E%87%E3%81%8C%E9%81%A9%E5%88%87%E3%81%AA%E6%96%87%E7%AB%A0%E3%81%A7%E3%81%99%E3%80%82';}if(hirc<katc){message='%E3%81%B2%E3%82%89%E3%81%8C%E3%81%AA%E3%82%88%E3%82%8A%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A%E3%81%8C%E5%A4%9A%E3%81%84%E3%81%A7%E3%81%99%E3%80%82%E5%B0%82%E9%96%80%E7%94%A8%E8%AA%9E%E3%81%8C%E5%A4%9A%E3%81%99%E3%81%8E%E3%82%8B%E3%81%8B%E3%82%82%E3%81%97%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82';}if(keyword){result='%E3%81%B2%E3%82%89%E3%81%8C%E3%81%AA%20%20'+(hirc/allletter*100).toFixed(2)+"%\n"+'%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A%20%20%20'+(katc/allletter*100).toFixed(2)+"%\n"+'%E6%95%B0%E5%AD%97%20%20%20%20%20%20%20'+(suuc/allletter*100).toFixed(2)+"%\n"+'%E6%BC%A2%E5%AD%97%20%20%20%20%20%20%20'+(kanc/allletter*100).toFixed(2)+"%\n\n"+message;}else{result='%E6%96%87%E7%AB%A0%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82';}alert(result);}function%20getTextInputAreas(w){var%20elms=w.document.getElementsByTagName('*');var%20tias=[];for(var%20i=0,e;e=elms[i];i++){var%20tag=e.tagName.toLowerCase();if(tag=='textarea'){tias[tias.length]=e;}else%20if(tag=='input'){var%20ty=e.type.toLowerCase();if%20(!ty||ty=='text')%20{tias[tias.length]=e;}}}return%20tias;}})();

Firefox, Opera, Chromeで動作確認済みです。IEでは文字数制限により動きません。文章を選択した後に、このブックマークレットを実行すれば漢字の比率とそのメッセージが表示されます。

テキスト入力版

http://koumeis.hatenablog.jp/entry/2012/01/08/022401

まず、簡単に試したいという方はこちらを御覧ください。IE,Firefox,Opera,Chrome,Safari(Mac, iOS)で動作確認済みです。Androidでは動きません。

*1:これはビジネス文章の場合です。一般的な小説は30%ぐらいが良いのかもしれません。

文章の漢字比率を確認するツール

内容はタイトルそのままです。これは純粋にJavascriptで処理しています。入力した内容ははてな等のサーバには通知されません。

入力画面

結果

ネガポジ言葉を組み合わせて、新しい表現を探る「陰陽語bot」を公開しました。

私見になりますが、全く印象の違った言葉を組み合わせると新しい表現ができるように思います。例えば、「燃え滾る夕日」「けたたましい鹿威し」などです。あるいは文章になりますが「ガンジーでも助走をつけて殴るレベル」というのも面白いと思います。いずれも一般人が言葉のイメージとして持っているものを覆す形容であり、新規性、意外性があります。私はこれを「陰陽語」と名づけました。
陰陽のうんちくは語れませんが、twitterbotを作成しました。@
日本語評価極性辞書の辞書ファイル(用言編)*1,*2

  1. ポジティブな言葉、ネガティブな言葉に分ける
  2. 語尾の「だ」を「な」に置換する。
  3. 語尾の「です」を抽出し、名詞編に加える。
  4. 「る(スペース)」を手動で適切に修正
  5. 「(スペース)」を削除

以上の作業を施し、名詞編と行列の掛け算のように組み合わせました。ネガポジ、ポジネガあわせて約1900万通りの表現を作成しました。これを1時間に1回、3つずつツイートします。
botはpha22さんのEasyBotterを使用しました。
乾健太郎氏、高村大也氏*3, *4、小林のぞみ氏*1, *5、pha22氏、他関係者の方に感謝いたします。

また、ネガネガの陰々語bot @、ポジポジの陽々語bot@も作成しました。助詞が変になっている所がありますが、ご賢察ください。


なお、twitterではまどろっこしいという方のために、辞書を公開いたします。

はてな Yahoo!ボックス Dropbox
陰陽語(ネガポジ、ポジネガ) zip 86.14MB yinyangword.zip 直 Yahoo! Dropbox
陰陽語(ネガポジ、ポジネガ) 7zip 25.63MB yinyangword.7z 直 Yahoo! Dropbox
陰々語、陽々語(ネガネガ、ポジポジ) zip 93.47MB yingyingyangyang.zip 直 Yahoo! Dropbox
陰々語、陽々語(ネガネガ、ポジポジ) 7zip 27.11MB yingyingyangyang.7z 直 Yahoo! Dropbox

*1:小林のぞみ,乾健太郎,松本裕治,立石健二,福島俊一. 意見抽出のための評価表現の収集. 自然言語処理,Vol.12, No.2, pp.203-222, 2005.

*2:東山昌彦, 乾健太郎, 松本裕治, 述語の選択選好性に着目した名詞評価極性の獲得, 言語処理学会第14回年次大会論文集, pp.584-587, 2008.

*3:高村大也, 乾孝司, 奥村学 "スピンモデルによる単語の感情極性抽出", 情報処理学会論文誌ジャーナル, Vol.47 No.02 pp. 627--637, 2006.

*4:Hiroya Takamura, Takashi Inui, Manabu Okumura, "Extracting Semantic Orientations of Words using Spin Model", In Proceedings of the 43rd Annual Meeting of the Association for Computational Linguistics (ACL2005) , pages 133--140, 2005.

*5:小林のぞみ, 乾健太郎, 松本裕治. 意見情報の抽出/構造化のタスク仕様に関する考察. 情報処理学会研究報告 NL171-18, pp.111-118, 2006.01.

青空文庫・全のISOをDropbox, Yahoo!ボックス, SkyDriveにアップしました。

久しぶりです。どうも青空文庫・全がtorrentでダウンロード完了できないようなので、Dropboxにアップしました。

Dropbox


青空文庫・全

ファイル名 ダウンロード
aozorabunko_zen_list_sjis.csv ダウンロード
aozorabunko_zen_list_utf8.csv ダウンロード
aozorabunko_zen.7z ダウンロード
aozorabunko_zen.md5 ダウンロード
aozorabunko_zen.sha1 ダウンロード
aozorabunko_zen.sha512 ダウンロード
README_sjis.txt ダウンロード
README_utf8.txt ダウンロード

青空文庫 差分090305

ファイル名 ダウンロード
AozoraBunko_090305_list.zip ダウンロード
AozoraBunko_090305.md5 ダウンロード
AozoraBunko_090305.sha1 ダウンロード
AozoraBunko_090305.sha512 ダウンロード
AozoraBunko_090305.zip ダウンロード
README_sjis.txt ダウンロード
README_utf8.txt ダウンロード

Yahoo!ボックス


青空文庫・全


Yahoo!ボックス - 大切な思い出をずっと大事にお預かりします

090305差分


Yahoo!ボックス - 大切な思い出をずっと大事にお預かりします

SkyDrive


青空文庫・全


Microsoft SkyDrive - Access files anywhere. Create docs with free Office Web Apps.

090305差分


Microsoft SkyDrive - Access files anywhere. Create docs with free Office Web Apps.

Google Drive


青空文庫・全


aozora - Google Drive

090305差分


aozorabunko_090305 - Google Drive

Dropboxは無料アカウントの2GB制限を超えるため、ISOのみ7zip圧縮しております。SkyDrive,Google Driveも同様です。

7zipについてわからないという方は、解凍ソフト 7-ZipLhazを、Macの方はThe Unarchiverを使用して解凍してください。

LDR / Fastladderで特定のサイトだけ通信エラーになる

LDR

Fastladder

フィードはこちらのものです。
http://www.openaccessjapan.com/feeds/rss.xml
Feed Validation Serviceで確認しましたが特に問題はありません。
http://validator.w3.org/feed/check.cgi?url=http%3A%2F%2Fwww.openaccessjapan.com%2Ffeeds%2Frss.xml

この2週間ほど、このような現象が続いています。申し訳ありませんが、対応をお願いします。

児童ポルノをダウンロードしようとした方々を可視化するNo-Kids.org

Access forbidden!

via Real-Time Anti Child Pornography World Map - information aesthetics

要するにP2Pソフトウェアの検索で、児童ポルノ関連の単語を使った場合、そしてポルノに見せかけたダミーのファイルをダウンロードした場合、当人がどの場所からアクセスしているのか世界地図で可視化しようという試みです。もちろんそのファイルに児童ポルノは含まれてはおりません。
検索単語の検知は、Gnutella系のソフトウェアのみで、日本で主流のWinnyやShareは含まれてはいません。*1

参考までに、現在の日本の状況をさらしたいと思います。関東地方から北は全くありませんでした。




単純な比較はできませんが、児童ポルノの単純所持を禁じているイギリスではこのざまです(縮尺は日本と一緒)。単純所持の禁止という法律を制定することに、抑止効果はあるのでしょうか?それとも抑止効果があってもこんなに多いのでしょうか?

*1:* captured in Gnutella peer-to-peer network since the launch of No-kids.org (7/1/09)

ニコニコ技術部員さんへ、Make:televisionをアップしました。

ニコニコ技術部に所属する方々へ
普段からお疲れ様です。創作のヒントになるかと思い、米国で放送されているMake:televisionをニコニコ動画にアップしてみました。

ちなみに、Make:televisionは公式サイトには書かれておりませんが、LegalTorrentsでは、Creative Commons BY-NC-SA 3.0 United Statesで宣言されており、著作権的にも問題ないと考えております。