投票プログラムに同一IPからの連続投票を抑止する機能を追加した。
Ajaxの勉強がてらに投票プログラムを作ってみた。 – KUMA TYPE
上記のページで配布している投票プログラムですが、下記の画像で分かるようにごく一部の方の機嫌を損ねるような記事を書くとおもいっきり低い点数で連続投稿されたりするので、同一IPからの連続投票を抑止する機能を追加してみました。本来は最初から付けるべきなのですが、勉強がてらに作ったので手を抜いてました。すいません。
新規に設置する場合は配布ページの設置方法を見て設置すればOKですが、今までのバージョンからのアップデートで今までの情報を引き継ぎたい場合はちょっと手間がかかります。
データベースにIPアドレスを記憶する部分を追加したのでデータベースに互換性が有りません。なのでデータベースをアップグレードする必要が有ります。付属のreadme.txtにも書いてありますが、vote020.zipをダウンロードして解凍した中に含まれているdb_upgrade.cgiをVOTE.DBと同じ場所にアップロードして、一度ブラウザからdb_upgrade.cgiを呼んでください。ブラウザのアドレス欄に直接http://example.com/vote/db_upgrade.cgiの様な感じで指定して呼び出してください。
「データベースのアップグレードが完了しました。db_upgrade.cgiはサーバー上から削除してください。」と表示されればアップグレード完了です。再実行してもエラーになります。
そしたら、あとはvote.cgiだけ上書きでアップロードしてください。もちろんvote.cgiの必要な箇所は配布ページで説明しているように設定が必要な箇所は設定してからアップロードしてください。
【perlメモ】Yahoo!デベロッパーネットワーク – テキスト解析 – キーフレーズ抽出のperlサンプル
Yahoo!デベロッパーネットワークのテキスト解析のキーフレーズ抽出APIを使ったperlのサンプルプログラム。 – kmake.net ソースは下
Yahoo!デベロッパーネットワークのテキスト解析のキーフレーズ抽出を試してみた。
Yahoo!デベロッパーネットワーク – テキスト解析 – キーフレーズ抽出
MeCabを使った特徴語抽出より精度がよくいい感じでキーワードを抽出してくれる。PHPのサンプルコードは提供されているがperlの物はなかったので実際にperlでサンプルコードも公開しておく。
Yahoo!デベロッパーネットワーク – サンプルコード集 – テキスト解析サンプルコード – キーフレーズ抽出
perlで作ったキーフレーズ抽出のサンプルプログラム
必要があれば use libなどでモジュールにパスを通す。
keyphraseservice.cgi
#!/usr/local/bin/perl
#———————————————————————————-
#2011.02.03キーフレーズ抽出サンプルプログラム by kumacchi
#———————————————————————————-
use strict;
use warnings;
use utf8;
#use lib (‘/home/example/local/lib/perl5/site_perl/5.8.8’);
use XML::Simple;
use CGI::Simple;
use LWP::Simple;
use Encode qw/from_to encode_utf8 decode_utf8 decode encode/;
#use Data::Dumper;
#{
# #no warnings;
# no warnings ‘redefine’;
# package Data::Dumper;
# sub qquote { return shift; }
#}
#$Data::Dumper::Useperl = 1;
my $base_url = ‘http://jlp.yahooapis.jp/KeyphraseService/V1/extract’;
my $appid = あなたのアプリケーションID‘;
my $back = ‘https://blog.kumacchi.com/’;
my $title = ‘Yahoo!デベロッパーネットワークのテキスト解析のキーフレーズ抽出APIを使ったperlのサンプルプログラム。’;
my $url = ‘http://kmake.net/keyphraseservice/keyphraseservice.cgi’;
#———————————————————————————-
my $q = new CGI::Simple;
my $sentence = $q->url_encode(encode_utf8($q->escapeHTML(decode_utf8($q->param(‘sentence’) || ”))));
my $result = ”;
if($sentence){
my $req = "$base_url?appid=$appid&sentence=$sentence";
my $res = get($req);
my $xs = XML::Simple->new();
my $ref = $xs->XMLin($res, ForceArray=>[‘Result’],SuppressEmpty =>”);
$result = ‘<ul>’;
foreach my $r(@{$ref->{Result}}){
$result .= sprintf("<li>%03d %s</li>",$r->{Score},$r->{Keyphrase});
}
$result .= ‘</ul>’;
}
binmode STDOUT,’:utf8′;
print "Content-Type: text/html; charset=utf-8\n\n";
print <<"EOF";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="description" content="$title">
<meta name="keywords" content="キーフレーズ抽出,特徴語抽出,サンプルプログラム">
<title>$title – kmake.net</title>
</head>
<body>
<h1><a href="$url">$title</a></h1>
<hr>
<a href="$back">戻る</a>
<hr>
<form name="form1" method="post">
<textarea name="sentence" cols="80" rows="10"></textarea><br>
<input type="submit" name="submit" value="送信">
</form>
<div>$result</div>
<!– Begin Yahoo! JAPAN Web Services Attribution Snippet –>
<a href="http://developer.yahoo.co.jp/about">
<img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn1_125_17.gif" title="Webサービス by Yahoo! JAPAN" alt="Web Services by Yahoo! JAPAN" width="125" height="17" border="0" style="margin:15px 15px 15px 15px"></a>
<!– End Yahoo! JAPAN Web Services Attribution Snippet –>
</body>
</html>
EOF
実際どんなもんだかMeCabの結果と比べてみる。下のマイコミジャーナルの記事の冒頭部分をYahooのキーフレーズ抽出とMeCabでそれぞれキーフレーズ抽出して比べてみた。
TVアニメ『イナズマイレブン』に『怪盗グルーの月泥棒』のキャラが友情出演 | ホビー | マイコミジャーナル
yahoo!のキーフレーズ抽出APIの結果
100 怪盗グルー
062 イナズマイレブン
057 月泥棒
053 カメオ
052 水曜19時26分~放送
044 興行収入
042 テレビ東京系
040 キャラクター
038 Blu-ray
037 劇場版
035 タイミング
032 友情
031 アニメ映画
029 TVアニメ
023 決定
022 話題
014 DVD
011 2011年3月2日
009 13億円
007 10月
MeCabを使った結果
[怪盗グルー ] 3.46
[月泥棒 ] 3.46
[(テレビ東京系 ] 2.00
["劇場版" ] 2.00
[Blu – ray / DVD ] 1.74
[アニメ映画 ] 1.68
[TVアニメ ] 1.68
[放送) ] 1.68
[興行収入 ] 1.41
[キャラクター ] 1.41
[イナズマイレブン ] 1.00
[話題 ] 1.00
[決定 ] 1.00
[タイミング ] 1.00
上記の様になった。結果としてはYahoo!のキーフレーズ抽出の方が好ましい。どこがどう好ましいかというと、この元のテキストはイナズマイレブン関連の記事を解析しているわけであるから、大抵の場合イナズマイレブンというフレーズの重要度は高くあってほしいと期待すると思われるが、Yahoo!の方は2番目にあるのに対してMeCabの方はずいぶん下の方で重要度も1.00と低い。それにフレーズの区切りもなんだかちょっと怪しい。
MeCabもちゃんと使いこなせばもっとちゃんとするのかも知れないが、Yahoo!のほうが手軽に高精度なキーフレーズ抽出をすることが出来るのは確かである。
MeCabの方はスタンドアローンで利用できるがYahoo!の方はWebAPIであるからインターネットに繋がっている必要があるなど、それぞれに短所長所があるので用途によって使い分けるのがいいかと思う。
単純に考えればYahoo!の方は辞書をYahoo!が常にメンテしてくれているのでキーフレーズの的確な重要度が設定されているのではないかと思う。
タグ : perlメモ
【動画】ポップコーンメーカーKPM-856でポップコーンを作ってみた。
株式会社カンサイのポップコーンメーカー KPM-856を昨日楽天で買ったら今日もう届いたので早速使ってみた。携帯で動画も撮ってYouTubeにアップしてみたのでポップコーンメーカーの購入をかんがえている人は参考にしてみてください。
タグ : 動画
【映画】GyaO!でゴト師関係の映画を色々見てみた感想。
無料動画GyaO!でゴト師関係の映画が6本まとめて配信されたので幾つか見てみた。その感想。
ゴト師株式会社 悪徳ホールをぶっつぶせ|無料動画 GyaO![ギャオ]|映画
監督:鶴田法男 原作:下田一仁、佐原充敏 出演:根津甚八、名取裕子、藤岡 弘(特別出演)、伊藤 克、加藤永二 、高田万由子、松田 勝、でんでん、下田一仁(友情出演)、秋山宏一プロ(友情出演)
監督:鶴田法男 原作:下田一仁・佐原充敏 出演:根津甚八、名高達郎、荒谷公之、加藤永二、高田万由子、松田 勝、でんでん、ベンガル
監督:後藤大輔 原作:下田一仁、佐原充敏 出演:根津甚八、喜多嶋 舞、田村 亮、荒谷公之、加藤永二、松田 勝、でんでん、ベンガル
ゴト師株式会社スペシャル|無料動画 GyaO![ギャオ]|ゴト師株式会社スペシャル|映画
監督:後藤大輔 原作:下田一仁、佐原充敏 出演:根津甚八、島田陽子、草薙幸二郎、名和宏、高城淳一
監督:中田信一郎 原案:下田一仁、佐原充敏 出演:藤竜也、寺尾聰、芳本美代子、綿引勝彦、小野みゆき、岡まゆみ 出演:菅田俊、山本清、近藤洋介
Zの回路 復讐の裏ゴト師|無料動画 GyaO![ギャオ]|映画
監督:石川均、 原案:下田一仁、佐原充敏 出演:藤竜也、岡田奈々、岡本信人、藤木悠、岡まゆみ、久保田篤
【Movable Type】BayesSpamFilterプラグインがMovable Type 5でも動作した件
ベイズ理論を利用したMovable Type用のスパム対策プラグインBayesSpamFilterですが、せっかくなのでMovable Type 5にも対応しようと思って環境作ってインストールしてみたら普通に動いたのでMovalbe Type5系でも使えるということがわかりました。MTOS-5.04-jaで確認しました。MT5系の人もスパムで困ってる人がいたら試しに使ってみてください。ダウンロードは下のページからです。
【Movale Type】ベイズ理論を利用したスパムフィルタプラグインを作ってみた。【人柱用】 – KUMA TYPE
タグ : Movable Type, ベイズ理論
最近の無線LANブロードバンドルーター高機能すぎ
ちょっと無線LANブロードバンドルーターを色々物色しているのですが、最近のブロードバンドルーターは低価格なものでもNAS機能やプリンタ共有機能があったりして高機能過ぎる。高機能過ぎて価格.comのスペック検索で検索しても同等の機能にみえても価格がピンきりだしちゃんと調べると個々にユニークな機能があったりしてスペック検索だけでは判断しきれない。購入時には自分のほしい機能をよく吟味して買う必要がありそうだ。VPNの機能なども普通に付いているので外からインターネット経由で安全に自宅のパソコンのハードディスクにアクセスしたりする事も出来る。
ちなみにNASというのはNetwork Attached Storageの略でUSBの外付けハードディスクと違いネットワークでアクセスする外部記憶装置のことで外付けハードディスクで言えばUSB接続かLAN接続かといった違いでUSBの外付けハードディスクに比べ複数のパソコンでハードディスクを共有するのに向いている。家族で個々にパソコンを持っていて動画や写真を共有したりするのには最適な装置である。
いろいろな製品の機能を比較して(疲れた。)自分ならコレを買うかなーと思った2種類を挙げておく。
メーカーページ:エアステーション エヌフィニティ ハイパワー 11n/gモデル : WZR-HP-G302H | BUFFALO バッファロー
このバッファローの無線LANブロードバンドルーターは最近の基本的な機能に加えてNAS機能とプリンタや複合機の共有機能がある。NASはFAT32までしか対応していないので4GBを超える大きなファイルは扱えない。文字数にも制限などがある。プリンタや複合機を共有したいのであればこの製品がいいと思う。USBハブが使えるようなのでUSB外付けハードディスクとプリンタや複合機を同時に使うことも出来るのではないかと思う。
メーカーページ:「CG-WLR300GNE」商品情報 | コレガ
このコレガの無線LANブロードバンドルーターCG-WLR300GNEは比較的低価格でありながら、NAS機能を有している。しかもNTFSのファイルシステムの読み書きに対応している。NTFS形式でNASしたい場合はこの機種がいいのではないかと思う。
バッファローの製品がNTFSに対応すれば最強ではないかと思う。個人的にはプリンタの共有よりNASのNTFS対応のほうが重要。私の場合そもそもプリンタや複合機をそんなに使うわけではないし、パソコンを電源いれっぱなしで使っている人であれば電源入れっぱなしのパソコンにプリンタがUSB接続されていて共有されていれば問題ないからである。
ハードディスクでも同じことが言えるがファイルのやりとりをするとUSB接続されているPCにそれなりに負荷がかかるのでPCが利用中だと迷惑を掛けることになるのでハードディスクは独立したNASの方がいいのではないかと個人的に思うわけである。
他にも安いネットブックでも買ってUSB接続のプリンタやハードディスクをつないでNAS&プリンタ専用サーバーにするというのも一つの手段だと思う。
タグ :
楽天ウェブサービスAPIコンテストに応募してみました。
「楽天ウェブサービスAPIコンテスト」が開催されるそうで、この間2010年12月に公開した「楽ツール」で応募してみることしました。今までも何度かこの手のコンテストはありましたが、いつもスルーしてましたが今回はなんとなく応募してみようかと思い立って応募しました。アフィリエイトツール開発部門でのエントリーです。商品は金賞:5万ポイント 銀賞:3万ポイント 銅賞:1万ポイント(各1名)だそうです。正直これまでの入賞作品などを見るととても自分が入賞出来るとは思っていませんが、参加することに自分なりの意義を見出したいと思っています。それに万が一ってこともあるしw。ないかw。
詳細は以下のRWS開発日記と楽天ウェブサービスAPIコンテストのページを御覧ください。腕に覚えのある方は参加されてみてはいかがでしょうか?
【Movable Type】スパム対策プラグインBayesSpamFilterの今日の成果
昨日公開したベイズ理論を利用したMovable Type用のスパム対策プラグインBayesSpamFilterですが、毎日悩んでいた英文スパムをほぼブロックしてくれるようになったのでとてもいい感じです。ちゃんと普通の文章はハム判定してくれます。
【Movale Type】ベイズ理論を利用したスパムフィルタプラグインを作ってみた。【人柱用】 – KUMA TYPE
現在BayesSpamFilterはプラグインのディレクトリの中にdebug_log.cgiというデバッグログを吐くようになっています。下がそれですが判定結果や投稿された文章などの情報が出力されるのでこのプラグインを利用される方は参考にしてください。一応内容の解説もしておきます。下のログが昨日の成果です。
タグ : Movable Type, MT, ベイズ理論
【Movale Type】ベイズ理論を利用したスパムフィルタプラグインを作ってみた。【人柱用】
追記 2011.04.25
【MTプラグイン】Bayes Spam Filter Ver.0.20をリリースしました。 – KUMA TYPE
はじめて見よう見まねでMovable Type用のプラグインなるものを作ってみた。というのも英文コメントスパムがサプリメント見聞録の方に大量に書き込まれるようになったからだ。この際最近お気に入りのAlgorithm::NaiveBayesモジュールを使ってベイズ理論とかベイジアンフィルタとか言われている技術を用いたMovable Type(MT)用のコメントスパムフィルタプラグインを作ってみようと思い立った。
【perlメモ】Algorithm::NaiveBayesのサンプル – KUMA TYPE
結局とりあえず動くものができたのでとりあえず設置して2、3日使ってみたが学習させればちゃんとスパムを判別しているようなのでとりあえず配布してみる。ただ、日本語のスパムが来ないのであまり日本語の方のテストはしていない。どれくらい効果が出るかわからない。多分大丈夫なのではないかと思うが分からないのでとりあえず使ってみたいという人柱向けです。
ダウンロード
- ダウンロード 最新版Ver.0.20
インストール
上からダウンロードする と下のようにBayesSpamFilternnn.zip問ファイルがダウンロードされる。
解凍するとBayesSpamFilterというフォルダが出てくるのでコレをそのまま<mtディレクトリ>/pluginsの中にまるごとアップロードしてください。
コレでインストールは終わりです。
パーミッションについて特に注意する必要があるのは下記のファイルその他のファイルに付いては読み込み属性が付いていれば特に問題ない。
BayesSpamFilter (700 又は707)
├ ham (700 又は 707)
├ spam (700 又は 707)
├ debug_log.cgi (606)
使い方
特に使い方と言ってもないのですが、最初はまっさらで馬鹿なので学習させて賢くさせる必要があります。最初から自動でスパムコメントをスパム判定してくれるわけではありません。
学習
MTの設定画面、つまりダッシュボードのメニューでツール>プラグインと選択してプラグイン設定画面に移動します。
プラグイン設定画面にBays spam filter n.nnと表示されていれば設置は多分問題ないのでそこをクリックします。
設定をクリックします。
設定画面が表示されるので、学習させる場合はここからスパムやハムをプラグインに食べさせてください。食べさせれば食べさせるほどプラグインは賢くなってより正確にスパム判別をしてくれる様になるはずです。
例えば、スパムコメントがすり抜けた場合は、そのスパムコメントをスパム(spam)のエリアに貼り付けて[変更を保存]をクリックします。この時出来れば、投稿者名・メールアドレス・URL・IPアドレス等の情報も一緒に張り付けると情報が多くなってGoodです。
逆にスパムではないコメントがスパム扱いになってしまった場合はハム(ham)の領域にそのコメントを貼り付けて[変更を保存]ボタンをクリックします。
コレを繰り返していけばそのうちスパム判定精度が上がってちゃんと判定してくれるようになるはずです。たまに誤認識したときには同様に学習させます。
動作環境
Movable Type 4系で動作するはずです。MT5は文字コードが変わっているので多分動かないと思われます。Movable Type version 4.35-jaで動作確認しました。
追記:2011.01.27
Movable Type 5系でも動作することを確認しました。
ライセンス
このプラグインは、Algorithm::NaiveBayesを利用するため同梱しています。Algorithm::NaiveBayesについてのライセンスは下のページに書いてあるとおりです。Ken Williams / Algorithm-NaiveBayes-0.04 – search.cpan.org
このプラグイン自体も同様に所謂perl(Artistic and GPL)ライセンスにします。
免責
自分用に作ったものとをとりあえず配布するレベルなのでクオリティーは期待しないでください。このプラグインを使ってMT自体が不安定になることはないと思いますが、ご利用は自己責任でお願いいたします。効果についても過度の期待はしないでください。
その他
分かち書きは最初KAKASIを使おうと思ったのですが、色々面倒なので自前の超適当な処理で分かち書きぽいことをしています。軽くていいど思うんだけど。
ちなみにサプリメント見聞録の方はスキャナーが撤去されてしまい更新できない。(´;ω;`)
タグ : Movable Type, コメントスパム, ベイズ理論