【问题标题】:Simple keyword / key phrase analysis in RubyRuby中的简单关键字/关键短语分析
【发布时间】:2011-10-09 15:58:45
【问题描述】:

我想在包含特定主题标签的推文中创建一个简单的热门关键字或短语列表。

例如,对于所有带有“#justinbieber”标签的推文,我想获得这些推文中使用的前十个最流行的单词和/或短语的有序列表,忽略通常不相关的内容,例如“和” , 'the' 等。它不必是完美的,只要有意义就行。

有哪些 Ruby 工具可用于执行文本分析?当然,分析部分不必专门针对 Twitter。

我很可能会定期请求和存储带有给定主题标签的推文,然后在给定的时间范围内对推文进行分析。

这项工作将在 Heroku 上的 Rails 或 Sinatra 应用程序中完成,但分析将在 rake 任务或某种计划的工作中完成。我还没有决定如何存储推文。

【问题讨论】:

    标签: ruby twitter text-analysis


    【解决方案1】:

    我对通过 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 集合。

    【讨论】:

    • 谢谢,迈克尔。我会看看 OpenNLP 的东西。我需要提取短语和单个单词,所以简单的方法可能不是那么简单......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    相关资源
    最近更新 更多