Простой анализ ключевых слов / фраз в Ruby - PullRequest
1 голос
/ 09 октября 2011

Я хотел бы создать простой список популярных ключевых слов или фраз в твитах, содержащих определенный хэштег.

Например, для всех твитов с хэштегом '#justinbieber' я хотел бы получить упорядоченныйсписок десяти самых популярных слов и / или фраз, используемых в этих твитах, не учитывая обычные нерелевантности, такие как «и», «the» и т. д. Это не обязательно должно быть идеально, просто значимо.

Какие инструменты Ruby доступны для анализа текста?Конечно, часть анализа не обязательно должна быть специфичной для Twitter.

Скорее всего, я буду периодически запрашивать и хранить твиты с заданным хэштегом, а затем применять анализ к твитам в течение определенного периода времени.

Работа будет выполняться в приложении Rails или Sinatra на Heroku, но анализ будет выполняться в виде граблей или какой-либо запланированной работы.Я еще не решил, как буду хранить твиты.

1 Ответ

2 голосов
/ 09 октября 2011

Я был очень доволен использованием OpenNLP через JRuby.Для таких простых вещей, как этот, может также подойти более простой подход.Давайте возьмем случайный твит из поиска в Твиттере для #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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...