前回紹介したページ
人工無脳レビュー 2005
のログ型人工無脳を見ててふと思いついたアイディア。
そこら辺に転がっているtwitterの会話をログとして用いてみようと。
すでに誰かがやっているでしょうが、Perlの勉強がてら拙いコードでやってみました。
スクリプトです
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
use strict; use LWP::Simple qw/get/; use URI; use JSON qw/decode_json/; use utf8; use Encode; binmode STDIN, ":encoding(cp932)"; binmode STDOUT, ":encoding(cp932)"; while(1) { print "you>"; my $user = <STDIN>; chomp($user); my $uri = URI->new('http://search.twitter.com/search.json'); $uri->query_form(q=>"$user RT",lang => 'ja'); my $content = get($uri); my $json = decode_json($content); my $flag = 0; for my $tweet ( @{$json->{results}}) { if ($flag == 1) { last; } my $str = "$tweet->{text}\n"; my ($RT,$SO) = split(/RT/,$str); #print "SO",$SO,"\n","RT",$RT,"\n"; if ($SO =~ /${user}/) { print "munou>",$RT,"\n"; $flag = 1; } } if($flag == 0) { print "munou>","わからない","\n"; } } |
ただ単に、ユーザの発言+RTで検索をかけて、RTされているツイートをユーザの発言と見立ててリツイートを返しています。
口が悪いですがそれっぽくなっています(なってないとか突っ込んではいけない)。
検索時間が少しかかる場合がありますね。また、単語じゃないとヒットしなさそうです。そこら辺は、形態要素解析APIを使えばいいんじゃないかと。
時々文字コード関連でエラーが出る感じですね。
コードの表示のためにCrayon Syntax Highlighterを導入してみました。便利ですね。
実は自分twitterやってません。面倒臭さがりなので。
論文が終わってないのに何やってんだ俺。