我有一个哈希如下:
{1=>[{content=>"Text of paragraph 1.........."},{content=>"Text of paragraph 2"}]}
解析文本文件后创建上述哈希。关键" 1"表示页面1.它指向一个哈希数组,每个哈希指向一个内容键指向实际文本的段落。
现在我有一个像[word1,word2,word3]这样的单词列表。我必须遍历该页面的所有段落内容,并告诉哪个段落出现这些词的次数最多。
我可以编写自己的代码,在那里我对段落中的每个单词进行正则表达式匹配。但我想知道是否有任何强大的字符串匹配库可以解决这个用例(在C,C ++,甚至ruby中)
它只是不匹配字符串。我需要一个可以提取单词列表中单词密度最高的数据的库。
答案 0 :(得分:0)
这是一个简单的例子,在ruby
中,用于计算字符串中单词的频率:
def count_words(string)
string
.scan(/[\w']+/) # Treat strings like "don't" as a single word
.each_with_object(Hash.new(0)) do |w,h|
h[w.downcase] += 1
end
end
用法:
word_occurrences = count_words("Hello world! Hello, vipul.")
=> {"hello"=>2, "world"=>1, "vipul"=>1}
您不应该需要第三方库来实现这么简单的事情。
要检查特定单词的出现次数,只需在哈希中查找:
word_occurrences[word1.downcase]
获取最高密度的列表"单词,只按哈希值排序:
word_occurrences.sort_by {|_word, occurrences| -occurrences}
# Note the negative to make this descending, not ascending