2011-10-09 4 views
1

특정 해시 태그가 포함 된 트윗 내에서 인기있는 키워드 또는 어구의 간단한 목록을 만들고 싶습니다.Ruby에서 간단한 키워드/핵심 구문 분석

예를 들어, '#justinbieber'해시 태그가있는 모든 트윗에 대해 'tw와 같은 일반 무관계를 무시하고 가장 많이 사용되는 상위 10 개 단어 및/또는 문구 목록을 얻고 싶습니다. ','the '등이 될 수 있습니다.

텍스트 분석을 수행하는 데 사용할 수있는 루비 도구는 무엇입니까? 물론, 분석 부분은 트위터에만 한정 될 필요는 없습니다.

주기적으로 주어진 해시 태그로 트윗을 요청하고 저장 한 다음 주어진 시간 내에 트윗에 분석을 적용 할 것입니다.

작업은 Heroku의 Rails 또는 Sinatra 앱에서 수행되지만 분석은 일종의 레이크 작업 또는 예약 된 작업으로 수행됩니다. 나는 아직 트윗을 어떻게 저장할 지 결정하지 않았다.

답변

2

JRuby를 통해 OpenNLP을 사용하여 매우 만족했습니다. 이와 같은 단순한 물건의 경우, 더 간단한 접근법으로도 충분할 수 있습니다. 이제 #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"] 

만들기 카운트 :

s = "If u never give up and if u fight for everything that u want, u can live our 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

관련 문제