twitterの友人のタイムラインを取得してとりあえずMeCabで動詞と名詞に分けて保存しておく
models.rb
require 'rubygems' require 'active_record' class FriendUpdate < ActiveRecord::Base def to_s return "#{id}@(#{post_id}) #{name}: #{text}" end end class Verb < ActiveRecord::Base end class Noun < ActiveRecord::Base end
store.rb
#!/usr/bin/ruby require 'rubygems' require 'cgi' gem 'twitter' require 'twitter' require 'active_record' require 'MeCab' require 'models.rb' def getWords(node, kind) list = Array.new while node do f = node.feature.split(/,/) if /#{kind}/ =~ f[0] list.push(node.surface) end node = node.next end return list.uniq end $KCODE = 'UTF8' ActiveRecord::Base.establish_connection( :adapter => 'sqlite3', :dbfile => '/var/sqlite3/oktwitter-friends' ) twit = Twitter::Base.new("username","password") mecab = MeCab::Tagger.new('-Ochasen') twit.timeline(:friends).each{ |status| next if FriendUpdate.find(:first, :conditions => {:post_id => status.id }) != nil update = FriendUpdate.create( :text => CGI.unescapeHTML(status.text), :name => status.user.screen_name, :post_id => status.id ) puts 'saved! ' << update.to_s n = mecab.parseToNode(update.text) verbs = getWords(n, '動詞') nouns = getWords(n, '名詞') verbs.each{ |v| next if Verb.find(:first, :conditions => { :text => v}) != nil Verb.create(:text => v) } print verbs nouns.each{ |n| next if Noun.find(:first, :conditions => { :text => n}) != nil Noun.create(:text => n) } print nouns }