/ / ruby​​を使用して文字列内の2単語の組み合わせの頻度を見つける方法は? -ルビー

ルビーを使用して文字列の2単語の組み合わせの頻度を見つける方法は? - ルビー

私は以下を見つけるために以下のコードを使用しています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

回答:

回答№1は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

回答№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}