2011-10-09 96 views
1

我想在包含特定主題標籤的推文中創建一個流行關鍵字或短語的簡單列表。Ruby中的簡單關鍵字/關鍵短語分析

例如,對於所有包含'#justinbieber'主題標籤的推文,我想獲得這些推文中使用的前十個最常用的單詞和/或短語的有序列表,而不考慮通常的不相關性,例如'和''''等等,它不一定是完美的,只是有意義的。

有哪些Ruby工具可用於執行文本分析?當然,分析部分不一定是特定於Twitter的。

我很可能會定期請求並存儲帶有給定哈希標籤的推文,然後在給定時間範圍內對推文進行分析。

這項工作將在Heroku上的Rails或Sinatra應用程序中完成,但分析將在耙子任務或某種預定作業中完成。我還沒有決定如何存儲推文。

回答

2

我很滿意通過JRuby使用OpenNLP。對於這樣簡單的東西,更簡單的方法也可能足夠。讓我們來隨機鳴叫來自Twitter的搜索#justinbieber:

s = "If u never give up and if u fight for everything that u want, u can live our dreams. #JustinBieber" 

刪除一些不必要的字詞:

words = s.split(/\W/).reject(&:empty?) - %w(the and u our if for that) 
# => ["If", "never", "give", "up", "fight", "everything", "want", "can", "live", "dreams", "JustinBieber"] 

創建計數:

words.each_with_object(Hash.new{ |h,k| h[k] = 0}) { |w, h| h[w] += 1 } 
#=> {"If"=>1, "never"=>1, "give"=>1, "up"=>1, "fight"=>1, "everything"=>1, "want"=>1, "can"=>1, "live"=>1, "dreams"=>1, "JustinBieber"=>1} 

如果超過1做到這一點推動計數將更有意義。另外,因爲你已經有了一個Ruby哈希,所以很容易將它存儲在例如一個MongoDB集合。

+0

謝謝,邁克爾。我會看看OpenNLP的東西。我需要用短語和單詞來拉出,所以簡單的方法可能不那麼簡單。 – froots101