0

以下のコードを使用して、Ruby を使用して文字列内の特定の単語の頻度を見つけました。私の質問は、これをどのように適応させて、特定の時間に 2 つの単語の頻度を見つけることができるかということです。例: "baa baa baa black sheep" が返されます...

{"baa baa"=>2, "baa black"=>1, "black sheep"=>1}  

コード:

def count_words(string)
  words = string.split(' ')
  frequency = Hash.new(0)
  words.each { |word| frequency[word.downcase] += 1 }
  return frequency
end
4

2 に答える 2

1
str = "baa baa baa black sheep"

count = Hash.new(0)
str.split.each_cons(2) do |words|
  count[ words.join(' ') ] += 1
end
count
# => {"baa baa"=>2, "baa black"=>1, "black sheep"=>1}
于 2013-04-10T00:14:21.477 に答える
0
def count_words(string)
  words = string.downcase.split(' ')
  frequency = Hash.new(0)
  while words.size >= 2
    frequency["#{words[0]} #{words[1]}"] += 1
    words.shift
  end
  frequency
end
于 2013-04-10T00:02:55.240 に答える