トップ(最新) | <前 | 次>

nDiki : P3:PeraPeraPrv

スポンサード リンク

Related term

2007年11月28日 (水)

今日のさえずり - 火葬って焼却処分? このエントリーを含むはてなブックマーク

  • 18:57 Google ドキュメントで作った資料印刷したら、表が横方向全部印刷されてなかった。明日印刷しなおすか。 *Tw*
  • 19:24 @daysgoon お誕生おめでとうございます![mb]
  • 19:37 帰りの中で1回 iKnow! iアプリ版やった。ボリューム的にちょうどいいな。正解すると D703i ブルブルする。[mb]
  • 19:43 @daysgoon 奥様にはボチボチ打っているの、とがめられませんでした?[mb]
  • 19:49 火葬って焼却処分?[mb]
  • 23:50 P3 2.07 にアップデートして起動。
  • 23:59 郵便局株式会社のお客様サービス部の人が、干してある洗濯物を見てプロファイリングし保険の訪問営業かけてきたらしい。これが民営化?

スポンサード リンク


[ 11月28日全て ]

2007年11月29日 (木)

今日のさえずり - 11時のアモーレの鐘が聴きたい このエントリーを含むはてなブックマーク


[ 11月29日全て ]

2007年12月8日 (土)

今日のさえずり - 付録ミニ万年筆ラピタ見てきた このエントリーを含むはてなブックマーク

  • 10:37 東京電力から電話があった。10~15分でブレーカ交換しにくる。[mb]
  • 10:46 東京電力きてる。[mb]
  • 10:48 電気止まった。[mb]
  • 10:53 新しいブレーカで電気復帰。[mb]
  • 10:58 ブレーカ交換終了して東京電力の人帰った。背の高い人だったけれど脚立は使ってた。[mb]
  • 21:45 P3 2.14 にして起動。今までの P3.properties がエラーになったので、設定しなおした。
  • 21:49 夕方本屋に行って付録ミニ万年筆ラピタ見てきた。表紙の万年筆写真にぐっとくるものがなかったので、買うのやめた。
  • 22:12 nearmiss 興奮してるな。
  • 22:22 1カ月ぐらい前に sidWPA つながらなくなったので、しばらく自宅でも FON 接続していたのだが、今日試してみたらまた WPA つながるようになってた。

[ 12月8日全て ]

2007年12月11日 (火)

今日のさえずり - 本当のご主人様になりませんかぁ このエントリーを含むはてなブックマーク

  • 09:54 「本当のご主人様になりませんかぁ」社長募集 - という捨て看。L:千代田区神田佐久間町[mb]
  • 10:10 Twit 0.96b4 にアップデートして起動。 *Tw*
  • 18:36 痛恨のミス。久しぶりにコピペコーディングしたら、書き換え忘れを1箇所見落してはまった。 *Tw*
  • 21:38 電気ご使用量のお知らせきた。昨年同月と比べて +267kWh。許容範囲のアップ。[mb]
  • 22:39 P3 2.17 にアップデートして起動。
  • 22:41 お、10分ぐらい前から大喜利か。
  • 22:53 P3 でリスト高 20 表示にしていると、yamadakun のアイコンがちょっと怖くみえる。
  • 24:37 ちょっとしんどいので、設定を all @ replies から @ replies to the people I'm following にした。

[ 12月11日全て ]

2007年12月16日 (日)

今日のさえずり - クリパにラブジェンガ このエントリーを含むはてなブックマーク

  • 17:30 この冬、今初めて便座のヒーターをつけた。[mb]
  • 17:39 クリパにラブジェンガを薦めたい。というか結果報告を聞きだい。[mb]
  • 19:35 P3 2.18 にアップデートして起動。NGワード機能追加嬉しい。

[ 12月16日全て ]

2007年12月19日 (水)

今日のさえずり - Perl v5.10.0sid 上で make このエントリーを含むはてなブックマーク

  • 09:14 腹のもやもや感があるものの、ほぼ回復。[mb]
  • 12:42 同僚に朝昼晩ロキソニンを飲んでいる人がいた。 *Tw*
  • 18:01 久しぶりにダーっとコードを書いてた(でも間に合わない)。今日の残りの時間は RTM 上のアクション実行にあてるか。 *Tw*
  • 18:27 そういえば明日ボーナスが支給されるらしい。 *Tw*
  • 19:56 クリエイトSDに寄ったけど、欲しい商品無かった。なんか最近品揃えがおかしくなってきていると思う。L:大井町[mb]
  • 20:05 エキナセア茶買った。この冬の残りは、これで乗り切りたい。[mb]
  • 22:21 P3 2.19 にアップデート。前の P3.properties に1行 noenterpost= を追加して起動。
  • 22:58 Perl v5.10.0sid 上で sh Configure -de -Dprefix=/usr/local/perl-5.10.0; make した。make test しかけて風呂入る。
  • 23:27 風呂からあがった。
  • 23:28 Perl v5.10.0 の make test の結果: Failed 1 test out of 1382, 99.93% okay.
  • 23:31 lib/Archive/Extract/t/01_Archive-Extract.t line 350 で失敗か。ま、とりあえず make install しておく。

[ 12月19日全て ]

2007年12月24日 (月)

今日のさえずり - スーツに着た回数を記録する仕組みが欲しい このエントリーを含むはてなブックマーク

naney:2140302022


[ 12月24日全て ]

2007年12月25日 (火)

今日のさえずり - 新幹線車内の電光掲示板に Twitter タイムラインが流れればいいのに このエントリーを含むはてなブックマーク

http://farm3.static.flickr.com/2200/2333287118_0956f8c57c_m.jpg http://farm3.static.flickr.com/2145/2332460349_965817efae_m.jpg


[ 12月25日全て ]

2007年12月29日 (土)

Twitter ベイジアンフィルタプロキシ このエントリーを含むはてなブックマーク

Twitter で following が増えてくるにつれて、タイムラインに目を通すのが大変になってきた(という程きちんと見ている訳ではないが)。 さっとタイムラインをなめて面白そうな情報をピックアップしたい時は、「おはよう」とか「風呂入った」とか「トイレ」とかは除外して読みたい(そういう書き込み自体は嫌いじゃないのだが、人生はあまりにも短い)。

Twit や P3:PeraPeraPrv では NG ワード指定ができて、それらを含むステータスは表示しないようにできるのだが、Twitter の書き込みは揺らぎが激しすぎて指定しきれないという弱点がる。

ということでベイジアンフィルタでフィルタリングしてみることにした。

自前で Twitter クライアントを作る気はないので、proxy の形でさっと実装してみた。

 #!/usr/bin/perl

 use strict;
 use warnings;

 use HTTP::Proxy;
 use HTTP::Proxy::BodyFilter::complete;

 my $proxy = HTTP::Proxy->new(port => 8088);
 $proxy->push_filter(response => HTTP::Proxy::BodyFilter::complete->new,
                     mime     => 'application/xml');
 $proxy->push_filter(response => Bsfilter->new,
                     mime     => 'application/xml');
 $proxy->start;

 {

   package Bsfilter;

   use File::Temp qw/tempfile/;
   use XML::XPath;
   use base qw(HTTP::Proxy::BodyFilter);

   sub filter {
     my ($self, $dataref, $message, $protocol, $buffer) = @_;
     return unless defined($$dataref) && $$dataref ne '';
     eval {
       my $xml = XML::XPath->new(xml => $$dataref);
       my @nodes = $xml->findnodes('/statuses/status/text/text()');
       return unless @nodes;
       for my $node (@nodes) {
         my $text = $node->getNodeValue;
         if (is_NG($text)) {
           $node->setNodeValue("[NG] $text");
         }
       }
       $$dataref = qq(<?xml version="1.0" encoding="UTF-8"?>\n);
       $$dataref .= $xml->get_context->toString;
       utf8::encode($$dataref);
     };
     if ($@) {
       warn $@;
     }
   }

   sub will_modify { 1 }

   sub is_NG {
     my ($text) = @_;

     my ($fh, $filename) = tempfile();
     utf8::encode($text);
     print $fh $text;
     close($fh);
     my $result
       = system(
       "bsfilter --homedir ~/.twitter-bsfilter --ignore-header --auto-update $filename"
       );
     unlink($filename);

     return !$result;
   }
 }

@ HTTP proxy の作成

PerlHTTP proxy を作ろうとして真っ先に思い浮かんだのは POE だけれど、ちょっとヘビーなので今回は HTTP::Proxy をチョイス。 もともとフィルタリング HTTP proxy を作ることを念頭に置いた Perl モジュールなので今回の目的にぴったり。

1つはまった点といえば、filter の呼び出しがレスポンス全てを取得してからではなく一部分ずつの呼び出しになるところ。その仕様に気がつくのにちょっと時間がかかってしまった。 例えば XML 形式のレスポンスをフィルタしようとしても、普通に HTTP::Proxy を使うと XML の一部ずつがフィルタに渡されるため、XML のパースがうまくいかない。

これについては HTTP::Proxy::BodyFilter::complete を使うことで、まとめてフィルタに渡せるようになった。

@ レスポンスの処理

Twitter のタイムライン取得については P3:PeraPeraPrvXML 形式で取得しているので、そのタイプのレスポンスをフィルタするようにした。

XML::XPath でステータス部分を抜き出して NG 判定し、NG であれば先頭に [NG] を追加する。 これで Twitter クライアント側で [NG] を NG ワード指定すれば、表示されないようにすることができる。

@ bsfilter による NG 判定

NG 判定は普段メールspam フィルタとして使っている bsfilter を使った。 単純に system 関数で呼び出して結果を取得するだけ。

今回は対象がメールではないので --ignore-header を指定。また自動的に学習するように --auto-update を指定。 それと普段メールのフィルタリングに使っているのとは bsfilterデータベースを別にしたいので、--homedir も指定しておく。

@ NG と非 NG の学習。

NG ワードを twitter-NG.txt に、非 NG ワードを twitter-clean.txt に書いて以下のコマンドを実行。

 bsfilter --add-clean --ignore-header --homedir ~/.twitter-bsfilter twitter-clean.txt
 bsfilter --add-spam --ignore-header --homedir ~/.twitter-bsfilter twitter-NG.txt
 bsfilter --update --homedir ~/.twitter-bsfilter

自分の環境 (Debian GNU/Linux sid)では、UTF-8 で書いておいて問題なかった。

@ フィルタリングしてみる

あとは先の proxy を起動し、P3:PeraPeraPrv でプロキシとして localhost:8088 を指定すれば OK。

タイムラインを取得するたびに bsfilter が動いて NG なステータスには [NG] が挿入される。

@ フィルタリングの精度

これについては、まだまだチューンの必要ありかな。

  • 事前の学習データが少ない。
  • --auto-update していることもあり、最初に NG 判定が多いとそちら側に強化されすぎる。
  • 毎回 bsfilter を呼んでいるため、同じステータスが何度も学習される。

まだ使える精度まで上がってないけれど、教師データを増やせばそれなりにいけるかもしれない。

proxy の枠組ができたので、(@~は抜いてから bsfilter に渡すとか、前後の文脈も含めるとか)いろいろ試して遊べそうではある。 別に bsfilter にこだわらず、正規表現による判定などをしてもよいし。

この辺り P3 は Java で書かれているので、プラグインを書いて拡張できるよう将来になると面白いなと思ってみたり。


今日のさえずり - 「見え窓」はこの時の満足のためだけに使う このエントリーを含むはてなブックマーク

  • 11:44 しびれてた足を動かしたら、近くにあった年賀状イラスト集の表紙で小指を切った。イテ。というかしびれててどうにもできん。
  • 17:38 ホタルック欲しかったけれど LABI には40形なかった。かわりにパルックプレミア買った。
  • 18:37 5カ月ぶりにトレビーノ カセッティのカートリッジ交換。「見え窓」はこの時の満足のためだけに使う。
  • 00:26 P3 用に Twitter ベイジアンフィルタプロキシ作ってみた。 http://tinyurl.com/yqt75p

[ 12月29日全て ]

2008年1月3日 (木)

今日のさえずり - 「はてなMobileGateway」かましてから、OKUZASHIKI に書き込む このエントリーを含むはてなブックマーク


[ 1月3日全て ]

スポンサード リンク

■よく検索されるキーワード

torrent(109) x31(45) thinkpad(31) 動画(29) 提案書(26) mp980(24) 手帳(24) windows(23) linux(23) 画像(21) 使い方(21) リフィル(21) debian(20) usb(20) tc-1(19) perl(19) 筆まめ(18) 壁紙(17) ほぼ日手帳(16) 冷蔵庫(14) ドラマ(13) wiki(13) 書き方(12) ダイソー(12) システム手帳(12) 宮根誠司(12) ノート(11) so905ics(11) 無印(11) バッグインバッグ(11) 映画(11) 設定(10) 修理(10) 宮根(9) ssh(9) a6(9) ほぼ日(9) 黒田征太郎(9) バッグ(9) gmail(8) 感想(8) (8) f-01a(8) メモリ(8) gtd(8) ブログ(8) nikon(8) allinanchor:*.torrent(8) ボールペン(7) 方眼(7) ポイント(7) 4c(7) ヨドバシカメラ(7) ケース(7) twitter(7) apache(7) ht-01a(7) ヨドバシ(7) ubuntu(7) truecrypt(7) n-02a(7) 作り方(7) minolta(7) af(6) インストール(6) ガントチャート(6) mp3(6) zippo(6) hdd(6) emacs(6) レビュー(6) カバー(6) vq1005(6) 日本語(6) ハクキンカイロ(6) 無印良品(6) グレゴリー(6) 交換(6) nikkor(6) pixus(6)

この日記のはてなブックマーク数 Add to Google RSS

Process Time: 0.080256s / load averages: 0.24, 0.26, 0.23
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)